mcp-server-rocketchat-threads 1.0.0
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/LICENSE +21 -0
- package/README.md +332 -0
- package/dist/api/client.d.ts +119 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +305 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/index.d.ts +6 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +22 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/schemas.d.ts +10636 -0
- package/dist/api/schemas.d.ts.map +1 -0
- package/dist/api/schemas.js +267 -0
- package/dist/api/schemas.js.map +1 -0
- package/dist/api/types.d.ts +263 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +7 -0
- package/dist/api/types.js.map +1 -0
- package/dist/config/config.d.ts +37 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +79 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +21 -0
- package/dist/config/index.js.map +1 -0
- package/dist/di/container.d.ts +101 -0
- package/dist/di/container.d.ts.map +1 -0
- package/dist/di/container.js +214 -0
- package/dist/di/container.js.map +1 -0
- package/dist/di/index.d.ts +6 -0
- package/dist/di/index.d.ts.map +1 -0
- package/dist/di/index.js +12 -0
- package/dist/di/index.js.map +1 -0
- package/dist/formatters/index.d.ts +6 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +22 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/formatters/message-formatter.d.ts +64 -0
- package/dist/formatters/message-formatter.d.ts.map +1 -0
- package/dist/formatters/message-formatter.js +161 -0
- package/dist/formatters/message-formatter.js.map +1 -0
- package/dist/formatters/response-builder.d.ts +60 -0
- package/dist/formatters/response-builder.d.ts.map +1 -0
- package/dist/formatters/response-builder.js +108 -0
- package/dist/formatters/response-builder.js.map +1 -0
- package/dist/guards/index.d.ts +12 -0
- package/dist/guards/index.d.ts.map +1 -0
- package/dist/guards/index.js +42 -0
- package/dist/guards/index.js.map +1 -0
- package/dist/guards/input-validator.d.ts +89 -0
- package/dist/guards/input-validator.d.ts.map +1 -0
- package/dist/guards/input-validator.js +266 -0
- package/dist/guards/input-validator.js.map +1 -0
- package/dist/guards/rate-limiter.d.ts +115 -0
- package/dist/guards/rate-limiter.d.ts.map +1 -0
- package/dist/guards/rate-limiter.js +226 -0
- package/dist/guards/rate-limiter.js.map +1 -0
- package/dist/guards/sanitizer.d.ts +35 -0
- package/dist/guards/sanitizer.d.ts.map +1 -0
- package/dist/guards/sanitizer.js +111 -0
- package/dist/guards/sanitizer.js.map +1 -0
- package/dist/guards/write-guard.d.ts +33 -0
- package/dist/guards/write-guard.d.ts.map +1 -0
- package/dist/guards/write-guard.js +90 -0
- package/dist/guards/write-guard.js.map +1 -0
- package/dist/http-server.d.ts +9 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +190 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +114 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/base.d.ts +85 -0
- package/dist/tools/base.d.ts.map +1 -0
- package/dist/tools/base.js +184 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/channel-tools.d.ts +18 -0
- package/dist/tools/channel-tools.d.ts.map +1 -0
- package/dist/tools/channel-tools.js +151 -0
- package/dist/tools/channel-tools.js.map +1 -0
- package/dist/tools/handler-utils.d.ts +75 -0
- package/dist/tools/handler-utils.d.ts.map +1 -0
- package/dist/tools/handler-utils.js +105 -0
- package/dist/tools/handler-utils.js.map +1 -0
- package/dist/tools/index.d.ts +17 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +40 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/message-tools.d.ts +20 -0
- package/dist/tools/message-tools.d.ts.map +1 -0
- package/dist/tools/message-tools.js +194 -0
- package/dist/tools/message-tools.js.map +1 -0
- package/dist/tools/thread-tools.d.ts +23 -0
- package/dist/tools/thread-tools.d.ts.map +1 -0
- package/dist/tools/thread-tools.js +243 -0
- package/dist/tools/thread-tools.js.map +1 -0
- package/dist/tools/user-tools.d.ts +14 -0
- package/dist/tools/user-tools.d.ts.map +1 -0
- package/dist/tools/user-tools.js +120 -0
- package/dist/tools/user-tools.js.map +1 -0
- package/dist/tools/write-tools.d.ts +15 -0
- package/dist/tools/write-tools.d.ts.map +1 -0
- package/dist/tools/write-tools.js +181 -0
- package/dist/tools/write-tools.js.map +1 -0
- package/dist/utils/cache.d.ts +47 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +116 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/error-handler.d.ts +64 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +148 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +33 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +50 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +118 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/time-parser.d.ts +37 -0
- package/dist/utils/time-parser.d.ts.map +1 -0
- package/dist/utils/time-parser.js +98 -0
- package/dist/utils/time-parser.js.map +1 -0
- package/dist/utils/token-counter.d.ts +42 -0
- package/dist/utils/token-counter.d.ts.map +1 -0
- package/dist/utils/token-counter.js +81 -0
- package/dist/utils/token-counter.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration management for Rocket.Chat MCP
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.config = void 0;
|
|
7
|
+
exports.loadConfig = loadConfig;
|
|
8
|
+
function parseWriteConfig() {
|
|
9
|
+
const enabled = process.env.ROCKETCHAT_WRITE_ENABLED || '';
|
|
10
|
+
const rooms = process.env.ROCKETCHAT_WRITE_ROOMS || '';
|
|
11
|
+
if (!enabled || enabled === 'false' || enabled === '0') {
|
|
12
|
+
return {
|
|
13
|
+
enabled: false,
|
|
14
|
+
mode: 'whitelist',
|
|
15
|
+
rooms: [],
|
|
16
|
+
whitelist: [],
|
|
17
|
+
blacklist: []
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
if (enabled === 'true' || enabled === '1') {
|
|
21
|
+
if (!rooms) {
|
|
22
|
+
return {
|
|
23
|
+
enabled: true,
|
|
24
|
+
mode: 'all',
|
|
25
|
+
rooms: [],
|
|
26
|
+
whitelist: [],
|
|
27
|
+
blacklist: []
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const roomList = rooms.split(',').map(r => r.trim()).filter(Boolean);
|
|
31
|
+
const isBlacklist = roomList[0]?.startsWith('!');
|
|
32
|
+
const cleanedRooms = roomList.map(r => r.replace(/^!/, ''));
|
|
33
|
+
return {
|
|
34
|
+
enabled: true,
|
|
35
|
+
mode: isBlacklist ? 'blacklist' : 'whitelist',
|
|
36
|
+
rooms: cleanedRooms,
|
|
37
|
+
whitelist: isBlacklist ? [] : cleanedRooms,
|
|
38
|
+
blacklist: isBlacklist ? cleanedRooms : []
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
enabled: false,
|
|
43
|
+
mode: 'whitelist',
|
|
44
|
+
rooms: [],
|
|
45
|
+
whitelist: [],
|
|
46
|
+
blacklist: []
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function loadConfig() {
|
|
50
|
+
const url = process.env.ROCKETCHAT_URL;
|
|
51
|
+
const authToken = process.env.ROCKETCHAT_AUTH_TOKEN;
|
|
52
|
+
const userId = process.env.ROCKETCHAT_USER_ID;
|
|
53
|
+
if (!url || !authToken || !userId) {
|
|
54
|
+
throw new Error('Missing required environment variables: ROCKETCHAT_URL, ROCKETCHAT_AUTH_TOKEN, ROCKETCHAT_USER_ID');
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
rocketchat: {
|
|
58
|
+
url: url.replace(/\/$/, ''), // Remove trailing slash
|
|
59
|
+
authToken,
|
|
60
|
+
userId
|
|
61
|
+
},
|
|
62
|
+
write: parseWriteConfig(),
|
|
63
|
+
safety: {
|
|
64
|
+
blockMentions: process.env.ROCKETCHAT_BLOCK_MENTIONS !== 'false',
|
|
65
|
+
maxMessageLength: parseInt(process.env.ROCKETCHAT_MAX_MESSAGE_LENGTH || '4000', 10),
|
|
66
|
+
dangerousMentions: ['@all', '@here', '@channel', '@everyone'],
|
|
67
|
+
blockedMentions: ['@all', '@here', '@channel', '@everyone']
|
|
68
|
+
},
|
|
69
|
+
cache: {
|
|
70
|
+
channelsTtl: parseInt(process.env.ROCKETCHAT_CACHE_TTL_CHANNELS || '300000', 10),
|
|
71
|
+
usersTtl: parseInt(process.env.ROCKETCHAT_CACHE_TTL_USERS || '1800000', 10),
|
|
72
|
+
maxSize: 500,
|
|
73
|
+
ttl: parseInt(process.env.ROCKETCHAT_CACHE_TTL || '300000', 10)
|
|
74
|
+
},
|
|
75
|
+
debug: process.env.DEBUG === 'true'
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
exports.config = loadConfig();
|
|
79
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Config module exports
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./config.js"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,8CAA4B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Injection Container
|
|
3
|
+
* Provides centralized management of singleton instances with support for testing
|
|
4
|
+
*/
|
|
5
|
+
import { RocketChatClient } from '../api/client.js';
|
|
6
|
+
import { WriteGuard } from '../guards/write-guard.js';
|
|
7
|
+
import { MessageSanitizer } from '../guards/sanitizer.js';
|
|
8
|
+
import { LRUCache } from '../utils/cache.js';
|
|
9
|
+
import { Config } from '../config/config.js';
|
|
10
|
+
/**
|
|
11
|
+
* Dependencies interface - all injectable services
|
|
12
|
+
*/
|
|
13
|
+
export interface Dependencies {
|
|
14
|
+
config: Config;
|
|
15
|
+
client: RocketChatClient;
|
|
16
|
+
writeGuard: WriteGuard;
|
|
17
|
+
sanitizer: MessageSanitizer;
|
|
18
|
+
cache: LRUCache<unknown>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Container options for customizing behavior
|
|
22
|
+
*/
|
|
23
|
+
export interface ContainerOptions {
|
|
24
|
+
/** Custom config to use instead of environment-based config */
|
|
25
|
+
config?: Partial<Config>;
|
|
26
|
+
/** Custom client instance */
|
|
27
|
+
client?: RocketChatClient;
|
|
28
|
+
/** Custom write guard instance */
|
|
29
|
+
writeGuard?: WriteGuard;
|
|
30
|
+
/** Custom sanitizer instance */
|
|
31
|
+
sanitizer?: MessageSanitizer;
|
|
32
|
+
/** Custom cache instance */
|
|
33
|
+
cache?: LRUCache<unknown>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Dependency Injection Container
|
|
37
|
+
* Manages singleton instances and allows for dependency overrides in tests
|
|
38
|
+
*/
|
|
39
|
+
export declare class Container {
|
|
40
|
+
private static instance;
|
|
41
|
+
private _config;
|
|
42
|
+
private _client;
|
|
43
|
+
private _writeGuard;
|
|
44
|
+
private _sanitizer;
|
|
45
|
+
private _cache;
|
|
46
|
+
private options;
|
|
47
|
+
private constructor();
|
|
48
|
+
/**
|
|
49
|
+
* Get the singleton container instance
|
|
50
|
+
*/
|
|
51
|
+
static getInstance(options?: ContainerOptions): Container;
|
|
52
|
+
/**
|
|
53
|
+
* Reset the container (useful for testing)
|
|
54
|
+
*/
|
|
55
|
+
static reset(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Create a new container with custom options (useful for testing)
|
|
58
|
+
*/
|
|
59
|
+
static createTestContainer(options: ContainerOptions): Container;
|
|
60
|
+
/**
|
|
61
|
+
* Get the configuration
|
|
62
|
+
*/
|
|
63
|
+
get config(): Config;
|
|
64
|
+
/**
|
|
65
|
+
* Safely load config with fallback for testing
|
|
66
|
+
*/
|
|
67
|
+
private safeLoadConfig;
|
|
68
|
+
/**
|
|
69
|
+
* Get the RocketChat client
|
|
70
|
+
*/
|
|
71
|
+
get client(): RocketChatClient;
|
|
72
|
+
/**
|
|
73
|
+
* Get the write guard
|
|
74
|
+
*/
|
|
75
|
+
get writeGuard(): WriteGuard;
|
|
76
|
+
/**
|
|
77
|
+
* Get the sanitizer
|
|
78
|
+
*/
|
|
79
|
+
get sanitizer(): MessageSanitizer;
|
|
80
|
+
/**
|
|
81
|
+
* Get the cache
|
|
82
|
+
*/
|
|
83
|
+
get cache(): LRUCache<unknown>;
|
|
84
|
+
/**
|
|
85
|
+
* Get all dependencies as an object
|
|
86
|
+
*/
|
|
87
|
+
getDependencies(): Dependencies;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Convenience function to get the container
|
|
91
|
+
*/
|
|
92
|
+
export declare function getContainer(): Container;
|
|
93
|
+
/**
|
|
94
|
+
* Convenience function to get all dependencies
|
|
95
|
+
*/
|
|
96
|
+
export declare function getDependencies(): Dependencies;
|
|
97
|
+
/**
|
|
98
|
+
* Reset the container (for testing)
|
|
99
|
+
*/
|
|
100
|
+
export declare function resetContainer(): void;
|
|
101
|
+
//# sourceMappingURL=container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,kCAAkC;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gCAAgC;IAChC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,4BAA4B;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0B;IACjD,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,OAAO,CAAmB;IAElC,OAAO;IAIP;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS;IAOzD;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS;IAIhE;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CA8BnB;IAED;;OAEG;IACH,OAAO,CAAC,cAAc;IAmCtB;;OAEG;IACH,IAAI,MAAM,IAAI,gBAAgB,CAS7B;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,UAAU,CAS3B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,gBAAgB,CAShC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,CAU7B;IAED;;OAEG;IACH,eAAe,IAAI,YAAY;CASlC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dependency Injection Container
|
|
4
|
+
* Provides centralized management of singleton instances with support for testing
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Container = void 0;
|
|
8
|
+
exports.getContainer = getContainer;
|
|
9
|
+
exports.getDependencies = getDependencies;
|
|
10
|
+
exports.resetContainer = resetContainer;
|
|
11
|
+
const client_js_1 = require("../api/client.js");
|
|
12
|
+
const write_guard_js_1 = require("../guards/write-guard.js");
|
|
13
|
+
const sanitizer_js_1 = require("../guards/sanitizer.js");
|
|
14
|
+
const cache_js_1 = require("../utils/cache.js");
|
|
15
|
+
const config_js_1 = require("../config/config.js");
|
|
16
|
+
/**
|
|
17
|
+
* Dependency Injection Container
|
|
18
|
+
* Manages singleton instances and allows for dependency overrides in tests
|
|
19
|
+
*/
|
|
20
|
+
class Container {
|
|
21
|
+
static instance = null;
|
|
22
|
+
_config = null;
|
|
23
|
+
_client = null;
|
|
24
|
+
_writeGuard = null;
|
|
25
|
+
_sanitizer = null;
|
|
26
|
+
_cache = null;
|
|
27
|
+
options;
|
|
28
|
+
constructor(options = {}) {
|
|
29
|
+
this.options = options;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get the singleton container instance
|
|
33
|
+
*/
|
|
34
|
+
static getInstance(options) {
|
|
35
|
+
if (!Container.instance) {
|
|
36
|
+
Container.instance = new Container(options);
|
|
37
|
+
}
|
|
38
|
+
return Container.instance;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Reset the container (useful for testing)
|
|
42
|
+
*/
|
|
43
|
+
static reset() {
|
|
44
|
+
Container.instance = null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a new container with custom options (useful for testing)
|
|
48
|
+
*/
|
|
49
|
+
static createTestContainer(options) {
|
|
50
|
+
return new Container(options);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get the configuration
|
|
54
|
+
*/
|
|
55
|
+
get config() {
|
|
56
|
+
if (!this._config) {
|
|
57
|
+
if (this.options.config) {
|
|
58
|
+
// Merge with defaults
|
|
59
|
+
const baseConfig = this.safeLoadConfig();
|
|
60
|
+
this._config = {
|
|
61
|
+
...baseConfig,
|
|
62
|
+
...this.options.config,
|
|
63
|
+
rocketchat: {
|
|
64
|
+
...baseConfig.rocketchat,
|
|
65
|
+
...this.options.config.rocketchat
|
|
66
|
+
},
|
|
67
|
+
write: {
|
|
68
|
+
...baseConfig.write,
|
|
69
|
+
...this.options.config.write
|
|
70
|
+
},
|
|
71
|
+
safety: {
|
|
72
|
+
...baseConfig.safety,
|
|
73
|
+
...this.options.config.safety
|
|
74
|
+
},
|
|
75
|
+
cache: {
|
|
76
|
+
...baseConfig.cache,
|
|
77
|
+
...this.options.config.cache
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this._config = (0, config_js_1.loadConfig)();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return this._config;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Safely load config with fallback for testing
|
|
89
|
+
*/
|
|
90
|
+
safeLoadConfig() {
|
|
91
|
+
try {
|
|
92
|
+
return (0, config_js_1.loadConfig)();
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Return minimal config for testing
|
|
96
|
+
return {
|
|
97
|
+
rocketchat: {
|
|
98
|
+
url: 'http://localhost:3000',
|
|
99
|
+
authToken: 'test-token',
|
|
100
|
+
userId: 'test-user'
|
|
101
|
+
},
|
|
102
|
+
write: {
|
|
103
|
+
enabled: false,
|
|
104
|
+
mode: 'whitelist',
|
|
105
|
+
rooms: [],
|
|
106
|
+
whitelist: [],
|
|
107
|
+
blacklist: []
|
|
108
|
+
},
|
|
109
|
+
safety: {
|
|
110
|
+
blockMentions: true,
|
|
111
|
+
maxMessageLength: 4000,
|
|
112
|
+
dangerousMentions: ['@all', '@here', '@channel', '@everyone'],
|
|
113
|
+
blockedMentions: ['@all', '@here', '@channel', '@everyone']
|
|
114
|
+
},
|
|
115
|
+
cache: {
|
|
116
|
+
channelsTtl: 300000,
|
|
117
|
+
usersTtl: 1800000,
|
|
118
|
+
maxSize: 500,
|
|
119
|
+
ttl: 300000
|
|
120
|
+
},
|
|
121
|
+
debug: false
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get the RocketChat client
|
|
127
|
+
*/
|
|
128
|
+
get client() {
|
|
129
|
+
if (!this._client) {
|
|
130
|
+
if (this.options.client) {
|
|
131
|
+
this._client = this.options.client;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
this._client = new client_js_1.RocketChatClient(this.config.rocketchat);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return this._client;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get the write guard
|
|
141
|
+
*/
|
|
142
|
+
get writeGuard() {
|
|
143
|
+
if (!this._writeGuard) {
|
|
144
|
+
if (this.options.writeGuard) {
|
|
145
|
+
this._writeGuard = this.options.writeGuard;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this._writeGuard = new write_guard_js_1.WriteGuard();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return this._writeGuard;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get the sanitizer
|
|
155
|
+
*/
|
|
156
|
+
get sanitizer() {
|
|
157
|
+
if (!this._sanitizer) {
|
|
158
|
+
if (this.options.sanitizer) {
|
|
159
|
+
this._sanitizer = this.options.sanitizer;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
this._sanitizer = new sanitizer_js_1.MessageSanitizer();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return this._sanitizer;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get the cache
|
|
169
|
+
*/
|
|
170
|
+
get cache() {
|
|
171
|
+
if (!this._cache) {
|
|
172
|
+
if (this.options.cache) {
|
|
173
|
+
this._cache = this.options.cache;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
const cacheConfig = this.config.cache;
|
|
177
|
+
this._cache = new cache_js_1.LRUCache(cacheConfig.maxSize, cacheConfig.ttl);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return this._cache;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get all dependencies as an object
|
|
184
|
+
*/
|
|
185
|
+
getDependencies() {
|
|
186
|
+
return {
|
|
187
|
+
config: this.config,
|
|
188
|
+
client: this.client,
|
|
189
|
+
writeGuard: this.writeGuard,
|
|
190
|
+
sanitizer: this.sanitizer,
|
|
191
|
+
cache: this.cache
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.Container = Container;
|
|
196
|
+
/**
|
|
197
|
+
* Convenience function to get the container
|
|
198
|
+
*/
|
|
199
|
+
function getContainer() {
|
|
200
|
+
return Container.getInstance();
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Convenience function to get all dependencies
|
|
204
|
+
*/
|
|
205
|
+
function getDependencies() {
|
|
206
|
+
return getContainer().getDependencies();
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Reset the container (for testing)
|
|
210
|
+
*/
|
|
211
|
+
function resetContainer() {
|
|
212
|
+
Container.reset();
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,SAAS,EACT,YAAY,EACZ,eAAe,EACf,cAAc,EACjB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACR,YAAY,EACZ,gBAAgB,EACnB,MAAM,gBAAgB,CAAC"}
|
package/dist/di/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dependency Injection module exports
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.resetContainer = exports.getDependencies = exports.getContainer = exports.Container = void 0;
|
|
7
|
+
var container_js_1 = require("./container.js");
|
|
8
|
+
Object.defineProperty(exports, "Container", { enumerable: true, get: function () { return container_js_1.Container; } });
|
|
9
|
+
Object.defineProperty(exports, "getContainer", { enumerable: true, get: function () { return container_js_1.getContainer; } });
|
|
10
|
+
Object.defineProperty(exports, "getDependencies", { enumerable: true, get: function () { return container_js_1.getDependencies; } });
|
|
11
|
+
Object.defineProperty(exports, "resetContainer", { enumerable: true, get: function () { return container_js_1.resetContainer; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,+CAKwB;AAJpB,yGAAA,SAAS,OAAA;AACT,4GAAA,YAAY,OAAA;AACZ,+GAAA,eAAe,OAAA;AACf,8GAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Formatters module exports
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./message-formatter.js"), exports);
|
|
21
|
+
__exportStar(require("./response-builder.js"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,yDAAuC;AACvC,wDAAsC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message Formatter
|
|
3
|
+
* Transforms Rocket.Chat API responses into MCP-friendly formats
|
|
4
|
+
*/
|
|
5
|
+
import { RocketChatMessage, RocketChatRoom, RocketChatUser, MessageInfo, ChannelInfo, ThreadInfo, UserInfo, SearchResultMessage } from '../api/types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Format a single message for MCP response
|
|
8
|
+
* Supports both regular messages and search results with OpenSearch fields
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatMessage(msg: RocketChatMessage | SearchResultMessage): MessageInfo;
|
|
11
|
+
/**
|
|
12
|
+
* Format multiple messages
|
|
13
|
+
*/
|
|
14
|
+
export declare function formatMessages(messages: RocketChatMessage[]): MessageInfo[];
|
|
15
|
+
/**
|
|
16
|
+
* Format a channel for MCP response
|
|
17
|
+
*/
|
|
18
|
+
export declare function formatChannel(room: RocketChatRoom): ChannelInfo;
|
|
19
|
+
/**
|
|
20
|
+
* Format multiple channels
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatChannels(rooms: RocketChatRoom[]): ChannelInfo[];
|
|
23
|
+
/**
|
|
24
|
+
* Format a thread for MCP response
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatThread(msg: RocketChatMessage, roomName?: string): ThreadInfo;
|
|
27
|
+
/**
|
|
28
|
+
* Format multiple threads
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatThreads(messages: RocketChatMessage[], roomName?: string): ThreadInfo[];
|
|
31
|
+
/**
|
|
32
|
+
* Format a user for MCP response
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatUser(user: RocketChatUser): UserInfo;
|
|
35
|
+
/**
|
|
36
|
+
* Format multiple users
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatUsers(users: RocketChatUser[]): UserInfo[];
|
|
39
|
+
/**
|
|
40
|
+
* Format a thread with its replies for detailed view
|
|
41
|
+
*/
|
|
42
|
+
export interface ThreadWithReplies {
|
|
43
|
+
thread: ThreadInfo;
|
|
44
|
+
parentMessage: MessageInfo;
|
|
45
|
+
replies: MessageInfo[];
|
|
46
|
+
totalReplies: number;
|
|
47
|
+
}
|
|
48
|
+
export declare function formatThreadWithReplies(parentMsg: RocketChatMessage, replies: RocketChatMessage[], roomName?: string): ThreadWithReplies;
|
|
49
|
+
/**
|
|
50
|
+
* Create a summary of search results
|
|
51
|
+
*/
|
|
52
|
+
export interface SearchResultSummary {
|
|
53
|
+
query: string;
|
|
54
|
+
totalResults: number;
|
|
55
|
+
channels: number;
|
|
56
|
+
threads: number;
|
|
57
|
+
messages: number;
|
|
58
|
+
timeRange?: {
|
|
59
|
+
oldest: string;
|
|
60
|
+
newest: string;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export declare function createSearchSummary(query: string, messages: RocketChatMessage[], totalResults: number): SearchResultSummary;
|
|
64
|
+
//# sourceMappingURL=message-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/message-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,EACV,QAAQ,EACR,mBAAmB,EACtB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,WAAW,CAkCvF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,WAAW,CAoB/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAErE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAqBlF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAE5F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,QAAQ,CASzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,QAAQ,EAAE,CAE/D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,EAAE,WAAW,CAAC;IAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,uBAAuB,CACnC,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,iBAAiB,EAAE,EAC5B,QAAQ,CAAC,EAAE,MAAM,GAClB,iBAAiB,CAOnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;CACL;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,YAAY,EAAE,MAAM,GACrB,mBAAmB,CAkBrB"}
|