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.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +332 -0
  3. package/dist/api/client.d.ts +119 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +305 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/api/index.d.ts +6 -0
  8. package/dist/api/index.d.ts.map +1 -0
  9. package/dist/api/index.js +22 -0
  10. package/dist/api/index.js.map +1 -0
  11. package/dist/api/schemas.d.ts +10636 -0
  12. package/dist/api/schemas.d.ts.map +1 -0
  13. package/dist/api/schemas.js +267 -0
  14. package/dist/api/schemas.js.map +1 -0
  15. package/dist/api/types.d.ts +263 -0
  16. package/dist/api/types.d.ts.map +1 -0
  17. package/dist/api/types.js +7 -0
  18. package/dist/api/types.js.map +1 -0
  19. package/dist/config/config.d.ts +37 -0
  20. package/dist/config/config.d.ts.map +1 -0
  21. package/dist/config/config.js +79 -0
  22. package/dist/config/config.js.map +1 -0
  23. package/dist/config/index.d.ts +5 -0
  24. package/dist/config/index.d.ts.map +1 -0
  25. package/dist/config/index.js +21 -0
  26. package/dist/config/index.js.map +1 -0
  27. package/dist/di/container.d.ts +101 -0
  28. package/dist/di/container.d.ts.map +1 -0
  29. package/dist/di/container.js +214 -0
  30. package/dist/di/container.js.map +1 -0
  31. package/dist/di/index.d.ts +6 -0
  32. package/dist/di/index.d.ts.map +1 -0
  33. package/dist/di/index.js +12 -0
  34. package/dist/di/index.js.map +1 -0
  35. package/dist/formatters/index.d.ts +6 -0
  36. package/dist/formatters/index.d.ts.map +1 -0
  37. package/dist/formatters/index.js +22 -0
  38. package/dist/formatters/index.js.map +1 -0
  39. package/dist/formatters/message-formatter.d.ts +64 -0
  40. package/dist/formatters/message-formatter.d.ts.map +1 -0
  41. package/dist/formatters/message-formatter.js +161 -0
  42. package/dist/formatters/message-formatter.js.map +1 -0
  43. package/dist/formatters/response-builder.d.ts +60 -0
  44. package/dist/formatters/response-builder.d.ts.map +1 -0
  45. package/dist/formatters/response-builder.js +108 -0
  46. package/dist/formatters/response-builder.js.map +1 -0
  47. package/dist/guards/index.d.ts +12 -0
  48. package/dist/guards/index.d.ts.map +1 -0
  49. package/dist/guards/index.js +42 -0
  50. package/dist/guards/index.js.map +1 -0
  51. package/dist/guards/input-validator.d.ts +89 -0
  52. package/dist/guards/input-validator.d.ts.map +1 -0
  53. package/dist/guards/input-validator.js +266 -0
  54. package/dist/guards/input-validator.js.map +1 -0
  55. package/dist/guards/rate-limiter.d.ts +115 -0
  56. package/dist/guards/rate-limiter.d.ts.map +1 -0
  57. package/dist/guards/rate-limiter.js +226 -0
  58. package/dist/guards/rate-limiter.js.map +1 -0
  59. package/dist/guards/sanitizer.d.ts +35 -0
  60. package/dist/guards/sanitizer.d.ts.map +1 -0
  61. package/dist/guards/sanitizer.js +111 -0
  62. package/dist/guards/sanitizer.js.map +1 -0
  63. package/dist/guards/write-guard.d.ts +33 -0
  64. package/dist/guards/write-guard.d.ts.map +1 -0
  65. package/dist/guards/write-guard.js +90 -0
  66. package/dist/guards/write-guard.js.map +1 -0
  67. package/dist/http-server.d.ts +9 -0
  68. package/dist/http-server.d.ts.map +1 -0
  69. package/dist/http-server.js +190 -0
  70. package/dist/http-server.js.map +1 -0
  71. package/dist/index.d.ts +14 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +114 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/tools/base.d.ts +85 -0
  76. package/dist/tools/base.d.ts.map +1 -0
  77. package/dist/tools/base.js +184 -0
  78. package/dist/tools/base.js.map +1 -0
  79. package/dist/tools/channel-tools.d.ts +18 -0
  80. package/dist/tools/channel-tools.d.ts.map +1 -0
  81. package/dist/tools/channel-tools.js +151 -0
  82. package/dist/tools/channel-tools.js.map +1 -0
  83. package/dist/tools/handler-utils.d.ts +75 -0
  84. package/dist/tools/handler-utils.d.ts.map +1 -0
  85. package/dist/tools/handler-utils.js +105 -0
  86. package/dist/tools/handler-utils.js.map +1 -0
  87. package/dist/tools/index.d.ts +17 -0
  88. package/dist/tools/index.d.ts.map +1 -0
  89. package/dist/tools/index.js +40 -0
  90. package/dist/tools/index.js.map +1 -0
  91. package/dist/tools/message-tools.d.ts +20 -0
  92. package/dist/tools/message-tools.d.ts.map +1 -0
  93. package/dist/tools/message-tools.js +194 -0
  94. package/dist/tools/message-tools.js.map +1 -0
  95. package/dist/tools/thread-tools.d.ts +23 -0
  96. package/dist/tools/thread-tools.d.ts.map +1 -0
  97. package/dist/tools/thread-tools.js +243 -0
  98. package/dist/tools/thread-tools.js.map +1 -0
  99. package/dist/tools/user-tools.d.ts +14 -0
  100. package/dist/tools/user-tools.d.ts.map +1 -0
  101. package/dist/tools/user-tools.js +120 -0
  102. package/dist/tools/user-tools.js.map +1 -0
  103. package/dist/tools/write-tools.d.ts +15 -0
  104. package/dist/tools/write-tools.d.ts.map +1 -0
  105. package/dist/tools/write-tools.js +181 -0
  106. package/dist/tools/write-tools.js.map +1 -0
  107. package/dist/utils/cache.d.ts +47 -0
  108. package/dist/utils/cache.d.ts.map +1 -0
  109. package/dist/utils/cache.js +116 -0
  110. package/dist/utils/cache.js.map +1 -0
  111. package/dist/utils/error-handler.d.ts +64 -0
  112. package/dist/utils/error-handler.d.ts.map +1 -0
  113. package/dist/utils/error-handler.js +148 -0
  114. package/dist/utils/error-handler.js.map +1 -0
  115. package/dist/utils/index.d.ts +12 -0
  116. package/dist/utils/index.d.ts.map +1 -0
  117. package/dist/utils/index.js +33 -0
  118. package/dist/utils/index.js.map +1 -0
  119. package/dist/utils/logger.d.ts +50 -0
  120. package/dist/utils/logger.d.ts.map +1 -0
  121. package/dist/utils/logger.js +118 -0
  122. package/dist/utils/logger.js.map +1 -0
  123. package/dist/utils/time-parser.d.ts +37 -0
  124. package/dist/utils/time-parser.d.ts.map +1 -0
  125. package/dist/utils/time-parser.js +98 -0
  126. package/dist/utils/time-parser.js.map +1 -0
  127. package/dist/utils/token-counter.d.ts +42 -0
  128. package/dist/utils/token-counter.d.ts.map +1 -0
  129. package/dist/utils/token-counter.js +81 -0
  130. package/dist/utils/token-counter.js.map +1 -0
  131. package/package.json +68 -0
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Base Tool Definitions
3
+ * Common types and utilities for MCP tools
4
+ */
5
+ import { z } from 'zod';
6
+ import { ErrorCode } from '../utils/error-handler.js';
7
+ /**
8
+ * Tool parameter schemas
9
+ */
10
+ export declare const CommonSchemas: {
11
+ roomId: z.ZodString;
12
+ roomName: z.ZodString;
13
+ limit: z.ZodDefault<z.ZodNumber>;
14
+ offset: z.ZodDefault<z.ZodNumber>;
15
+ timeRange: z.ZodString;
16
+ query: z.ZodString;
17
+ threadId: z.ZodString;
18
+ userId: z.ZodString;
19
+ username: z.ZodString;
20
+ };
21
+ /**
22
+ * Tool result interface matching MCP specification
23
+ */
24
+ export interface ToolResult {
25
+ content: Array<{
26
+ type: 'text';
27
+ text: string;
28
+ }>;
29
+ isError?: boolean;
30
+ }
31
+ /**
32
+ * Create a successful tool result
33
+ */
34
+ export declare function createToolResult(data: unknown): ToolResult;
35
+ /**
36
+ * Create an error tool result
37
+ */
38
+ export declare function createErrorResult(code: string, message: string, details?: string, suggestion?: string): ToolResult;
39
+ /**
40
+ * Create an error result from an exception
41
+ * Automatically extracts message and details from error objects
42
+ */
43
+ export declare function createErrorResultFromException(code: ErrorCode, defaultMessage: string, error: unknown): ToolResult;
44
+ /**
45
+ * Wraps an async handler with standardized error handling
46
+ * Reduces boilerplate try-catch blocks in tool handlers
47
+ */
48
+ export declare function wrapHandler<TParams>(handler: (params: TParams) => Promise<ToolResult>, errorCode?: ErrorCode, errorMessage?: string): (params: TParams) => Promise<ToolResult>;
49
+ export { ErrorCodes } from '../utils/error-handler.js';
50
+ export type { ErrorCode } from '../utils/error-handler.js';
51
+ /**
52
+ * Tool definition interface with generic type parameter for type-safe handlers
53
+ * @template T - The type of parameters accepted by the handler
54
+ */
55
+ export interface ToolDefinition<T = unknown> {
56
+ name: string;
57
+ description: string;
58
+ inputSchema: z.ZodType<T>;
59
+ handler: (params: T) => Promise<ToolResult>;
60
+ }
61
+ /**
62
+ * Helper function to create a type-safe tool definition
63
+ * Infers the parameter type from the Zod schema
64
+ */
65
+ export declare function defineTool<T extends z.ZodType>(name: string, description: string, inputSchema: T, handler: (params: z.infer<T>) => Promise<ToolResult>): ToolDefinition<z.infer<T>>;
66
+ /**
67
+ * Registry of all tools
68
+ */
69
+ export declare class ToolRegistry {
70
+ private tools;
71
+ register<T>(tool: ToolDefinition<T>): void;
72
+ get(name: string): ToolDefinition<unknown> | undefined;
73
+ list(): ToolDefinition<unknown>[];
74
+ getSchemas(): Array<{
75
+ name: string;
76
+ description: string;
77
+ inputSchema: unknown;
78
+ }>;
79
+ }
80
+ /**
81
+ * Convert Zod schema to JSON Schema for MCP
82
+ */
83
+ export declare function zodToJsonSchema(schema: z.ZodType<unknown>): Record<string, unknown>;
84
+ export declare const toolRegistry: ToolRegistry;
85
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/tools/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACH,SAAS,EAKZ,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;CAqBzB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAO1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GACpB,UAAU,CAgBZ;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC1C,IAAI,EAAE,SAAS,EACf,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,OAAO,GACf,UAAU,CAIZ;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAC/B,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,EACjD,SAAS,GAAE,SAAgC,EAC3C,YAAY,GAAE,MAA2B,GAC1C,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAQ1C;AAGD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAC1C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,CAAC,EACd,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACrD,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAO5B;AAED;;GAEG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,KAAK,CAAmD;IAEhE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,SAAS;IAItD,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;IAIjC,UAAU,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;CAOnF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4DnF;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ /**
3
+ * Base Tool Definitions
4
+ * Common types and utilities for MCP tools
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.toolRegistry = exports.ToolRegistry = exports.ErrorCodes = exports.CommonSchemas = void 0;
8
+ exports.createToolResult = createToolResult;
9
+ exports.createErrorResult = createErrorResult;
10
+ exports.createErrorResultFromException = createErrorResultFromException;
11
+ exports.wrapHandler = wrapHandler;
12
+ exports.defineTool = defineTool;
13
+ exports.zodToJsonSchema = zodToJsonSchema;
14
+ const zod_1 = require("zod");
15
+ const error_handler_js_1 = require("../utils/error-handler.js");
16
+ /**
17
+ * Tool parameter schemas
18
+ */
19
+ exports.CommonSchemas = {
20
+ // Room/Channel identification
21
+ roomId: zod_1.z.string().describe('Unique room/channel ID (e.g., "GENERAL", "x3JG6uXJgE7YNHR3S")'),
22
+ roomName: zod_1.z.string().describe('Room/channel name for human-readable lookup'),
23
+ // Pagination
24
+ limit: zod_1.z.number().min(1).max(100).default(50).describe('Maximum number of items to return (1-100, default: 50)'),
25
+ offset: zod_1.z.number().min(0).default(0).describe('Number of items to skip for pagination'),
26
+ // Time expressions
27
+ timeRange: zod_1.z.string().describe('Time range: relative (1d, 7d, 1w, 1m) or ISO date (2024-01-15) or Unix timestamp'),
28
+ // Search
29
+ query: zod_1.z.string().describe('Search query text'),
30
+ // Thread
31
+ threadId: zod_1.z.string().describe('Thread parent message ID (tmid)'),
32
+ // User
33
+ userId: zod_1.z.string().describe('User ID'),
34
+ username: zod_1.z.string().describe('Username (without @)')
35
+ };
36
+ /**
37
+ * Create a successful tool result
38
+ */
39
+ function createToolResult(data) {
40
+ return {
41
+ content: [{
42
+ type: 'text',
43
+ text: JSON.stringify(data, null, 2)
44
+ }]
45
+ };
46
+ }
47
+ /**
48
+ * Create an error tool result
49
+ */
50
+ function createErrorResult(code, message, details, suggestion) {
51
+ return {
52
+ content: [{
53
+ type: 'text',
54
+ text: JSON.stringify({
55
+ success: false,
56
+ error: {
57
+ code,
58
+ message,
59
+ details,
60
+ suggestion: suggestion || error_handler_js_1.ErrorSuggestions[code]
61
+ }
62
+ }, null, 2)
63
+ }],
64
+ isError: true
65
+ };
66
+ }
67
+ /**
68
+ * Create an error result from an exception
69
+ * Automatically extracts message and details from error objects
70
+ */
71
+ function createErrorResultFromException(code, defaultMessage, error) {
72
+ const message = (0, error_handler_js_1.extractErrorMessage)(error);
73
+ const details = (0, error_handler_js_1.extractErrorDetails)(error);
74
+ return createErrorResult(code, message || defaultMessage, details);
75
+ }
76
+ /**
77
+ * Wraps an async handler with standardized error handling
78
+ * Reduces boilerplate try-catch blocks in tool handlers
79
+ */
80
+ function wrapHandler(handler, errorCode = error_handler_js_1.ErrorCodes.API_ERROR, errorMessage = 'Operation failed') {
81
+ return async (params) => {
82
+ try {
83
+ return await handler(params);
84
+ }
85
+ catch (error) {
86
+ return createErrorResultFromException(errorCode, errorMessage, error);
87
+ }
88
+ };
89
+ }
90
+ // Re-export error codes for convenience
91
+ var error_handler_js_2 = require("../utils/error-handler.js");
92
+ Object.defineProperty(exports, "ErrorCodes", { enumerable: true, get: function () { return error_handler_js_2.ErrorCodes; } });
93
+ /**
94
+ * Helper function to create a type-safe tool definition
95
+ * Infers the parameter type from the Zod schema
96
+ */
97
+ function defineTool(name, description, inputSchema, handler) {
98
+ return {
99
+ name,
100
+ description,
101
+ inputSchema,
102
+ handler
103
+ };
104
+ }
105
+ /**
106
+ * Registry of all tools
107
+ */
108
+ class ToolRegistry {
109
+ tools = new Map();
110
+ register(tool) {
111
+ // Store as ToolDefinition<unknown> for the registry
112
+ this.tools.set(tool.name, tool);
113
+ }
114
+ get(name) {
115
+ return this.tools.get(name);
116
+ }
117
+ list() {
118
+ return Array.from(this.tools.values());
119
+ }
120
+ getSchemas() {
121
+ return this.list().map(tool => ({
122
+ name: tool.name,
123
+ description: tool.description,
124
+ inputSchema: zodToJsonSchema(tool.inputSchema)
125
+ }));
126
+ }
127
+ }
128
+ exports.ToolRegistry = ToolRegistry;
129
+ /**
130
+ * Convert Zod schema to JSON Schema for MCP
131
+ */
132
+ function zodToJsonSchema(schema) {
133
+ // Basic implementation - in production, use zod-to-json-schema library
134
+ if (schema instanceof zod_1.z.ZodObject) {
135
+ const shape = schema.shape;
136
+ const properties = {};
137
+ const required = [];
138
+ for (const [key, value] of Object.entries(shape)) {
139
+ const zodValue = value;
140
+ properties[key] = zodToJsonSchema(zodValue);
141
+ // Check if required (not optional)
142
+ if (!(zodValue instanceof zod_1.z.ZodOptional) && !(zodValue instanceof zod_1.z.ZodDefault)) {
143
+ required.push(key);
144
+ }
145
+ }
146
+ return {
147
+ type: 'object',
148
+ properties,
149
+ required: required.length > 0 ? required : undefined
150
+ };
151
+ }
152
+ if (schema instanceof zod_1.z.ZodString) {
153
+ return { type: 'string', description: schema.description };
154
+ }
155
+ if (schema instanceof zod_1.z.ZodNumber) {
156
+ return { type: 'number', description: schema.description };
157
+ }
158
+ if (schema instanceof zod_1.z.ZodBoolean) {
159
+ return { type: 'boolean', description: schema.description };
160
+ }
161
+ if (schema instanceof zod_1.z.ZodOptional) {
162
+ return zodToJsonSchema(schema.unwrap());
163
+ }
164
+ if (schema instanceof zod_1.z.ZodDefault) {
165
+ const inner = zodToJsonSchema(schema.removeDefault());
166
+ return { ...inner, default: schema._def.defaultValue() };
167
+ }
168
+ if (schema instanceof zod_1.z.ZodArray) {
169
+ return {
170
+ type: 'array',
171
+ items: zodToJsonSchema(schema.element)
172
+ };
173
+ }
174
+ if (schema instanceof zod_1.z.ZodEnum) {
175
+ return {
176
+ type: 'string',
177
+ enum: schema.options
178
+ };
179
+ }
180
+ return { type: 'string' };
181
+ }
182
+ // Global tool registry
183
+ exports.toolRegistry = new ToolRegistry();
184
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/tools/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Channel Tools
3
+ * Tools for listing and searching channels
4
+ */
5
+ export declare const listChannelsTool: import("./base.js").ToolDefinition<{
6
+ offset?: number | undefined;
7
+ type?: "all" | "joined" | undefined;
8
+ limit?: number | undefined;
9
+ }>;
10
+ export declare const searchChannelsTool: import("./base.js").ToolDefinition<{
11
+ query: string;
12
+ limit?: number | undefined;
13
+ }>;
14
+ export declare const getChannelInfoTool: import("./base.js").ToolDefinition<{
15
+ roomId?: string | undefined;
16
+ roomName?: string | undefined;
17
+ }>;
18
+ //# sourceMappingURL=channel-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-tools.d.ts","sourceRoot":"","sources":["../../src/tools/channel-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6BH,eAAO,MAAM,gBAAgB;;;;EAoD5B,CAAC;AAaF,eAAO,MAAM,kBAAkB;;;EAgC9B,CAAC;AAaF,eAAO,MAAM,kBAAkB;;;EA6C9B,CAAC"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ /**
3
+ * Channel Tools
4
+ * Tools for listing and searching channels
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.getChannelInfoTool = exports.searchChannelsTool = exports.listChannelsTool = void 0;
8
+ const zod_1 = require("zod");
9
+ const client_js_1 = require("../api/client.js");
10
+ const message_formatter_js_1 = require("../formatters/message-formatter.js");
11
+ const response_builder_js_1 = require("../formatters/response-builder.js");
12
+ const token_counter_js_1 = require("../utils/token-counter.js");
13
+ const base_js_1 = require("./base.js");
14
+ /**
15
+ * rocketchat_list_channels
16
+ * List all accessible channels with pagination
17
+ */
18
+ const listChannelsSchema = zod_1.z.object({
19
+ limit: zod_1.z.number().min(1).max(100).default(50).optional()
20
+ .describe('Maximum number of channels to return (1-100, default: 50)'),
21
+ offset: zod_1.z.number().min(0).default(0).optional()
22
+ .describe('Number of channels to skip for pagination'),
23
+ type: zod_1.z.enum(['all', 'joined']).default('joined').optional()
24
+ .describe('Filter: "all" for all public channels, "joined" for only joined channels')
25
+ });
26
+ exports.listChannelsTool = (0, base_js_1.defineTool)('rocketchat_list_channels', `List all accessible Rocket.Chat channels.
27
+
28
+ **START HERE** - Use this tool first to discover available channels and get their IDs.
29
+
30
+ Returns channel information including:
31
+ - Channel ID and name (use ID for other API calls)
32
+ - Type (public/private/direct)
33
+ - Member count and message count
34
+ - Topic and description
35
+ - Last activity timestamp
36
+
37
+ **Typical Workflow:**
38
+ 1. rocketchat_list_channels → Get channel IDs
39
+ 2. rocketchat_get_messages or rocketchat_list_threads → Read content
40
+ 3. rocketchat_search_messages or rocketchat_search_threads → Find specific content
41
+
42
+ **Performance Tips:**
43
+ - Default "joined" type is faster than "all"
44
+ - Use pagination (offset) for large channel lists
45
+
46
+ **No special requirements** - Works without OpenSearch.
47
+
48
+ Examples:
49
+ - List joined channels: {}
50
+ - List all public channels: { "type": "all" }
51
+ - Paginate results: { "limit": 20, "offset": 40 }`, listChannelsSchema, async (params) => {
52
+ try {
53
+ const client = (0, client_js_1.getClient)();
54
+ const limit = params.limit || 50;
55
+ const offset = params.offset || 0;
56
+ const response = params.type === 'all'
57
+ ? await client.listChannels({ count: limit, offset })
58
+ : await client.listJoinedChannels({ count: limit, offset });
59
+ if (!response.success) {
60
+ return (0, base_js_1.createErrorResult)(base_js_1.ErrorCodes.API_ERROR, 'Failed to list channels');
61
+ }
62
+ const formatted = (0, message_formatter_js_1.formatChannels)(response.channels);
63
+ const { items, truncated } = token_counter_js_1.TokenCounter.truncateToFit(formatted);
64
+ const result = (0, response_builder_js_1.buildPaginatedResponse)(items, response.total, offset, truncated);
65
+ return (0, base_js_1.createToolResult)(result);
66
+ }
67
+ catch (error) {
68
+ return (0, base_js_1.createErrorResultFromException)(base_js_1.ErrorCodes.API_ERROR, 'Failed to list channels', error);
69
+ }
70
+ });
71
+ /**
72
+ * rocketchat_search_channels
73
+ * Search channels by name or topic
74
+ */
75
+ const searchChannelsSchema = zod_1.z.object({
76
+ query: zod_1.z.string().min(1)
77
+ .describe('Search query to match against channel names and topics'),
78
+ limit: zod_1.z.number().min(1).max(50).default(20).optional()
79
+ .describe('Maximum number of results (1-50, default: 20)')
80
+ });
81
+ exports.searchChannelsTool = (0, base_js_1.defineTool)('rocketchat_search_channels', `Search for Rocket.Chat channels by name or topic.
82
+
83
+ Use this to find specific channels when you know part of the name.
84
+
85
+ Examples:
86
+ - Find project channels: { "query": "project" }
87
+ - Find channels by topic: { "query": "support" }`, searchChannelsSchema, async (params) => {
88
+ try {
89
+ const client = (0, client_js_1.getClient)();
90
+ const response = await client.searchChannels(params.query);
91
+ if (!response.success) {
92
+ return (0, base_js_1.createErrorResult)(base_js_1.ErrorCodes.API_ERROR, 'Failed to search channels');
93
+ }
94
+ const formatted = (0, message_formatter_js_1.formatChannels)(response.channels);
95
+ const limited = formatted.slice(0, params.limit || 20);
96
+ const result = (0, response_builder_js_1.buildSuccessResponse)(limited, {
97
+ count: limited.length,
98
+ total: response.channels.length
99
+ });
100
+ return (0, base_js_1.createToolResult)(result);
101
+ }
102
+ catch (error) {
103
+ return (0, base_js_1.createErrorResultFromException)(base_js_1.ErrorCodes.API_ERROR, 'Failed to search channels', error);
104
+ }
105
+ });
106
+ /**
107
+ * rocketchat_get_channel_info
108
+ * Get detailed information about a specific channel
109
+ */
110
+ const getChannelInfoSchema = zod_1.z.object({
111
+ roomId: zod_1.z.string().optional()
112
+ .describe('Channel ID (provide either roomId or roomName)'),
113
+ roomName: zod_1.z.string().optional()
114
+ .describe('Channel name (provide either roomId or roomName)')
115
+ });
116
+ exports.getChannelInfoTool = (0, base_js_1.defineTool)('rocketchat_get_channel_info', `Get detailed information about a specific Rocket.Chat channel.
117
+
118
+ Returns:
119
+ - Channel ID, name, and display name
120
+ - Type (public/private/direct/livechat)
121
+ - Member and message counts
122
+ - Topic, description, and announcement
123
+ - Read-only status
124
+ - Last activity timestamp
125
+
126
+ Examples:
127
+ - By ID: { "roomId": "GENERAL" }
128
+ - By name: { "roomName": "general" }`, getChannelInfoSchema, async (params) => {
129
+ if (!params.roomId && !params.roomName) {
130
+ return (0, base_js_1.createErrorResult)(base_js_1.ErrorCodes.VALIDATION_ERROR, 'Missing room identifier', 'Either roomId or roomName must be provided');
131
+ }
132
+ try {
133
+ const client = (0, client_js_1.getClient)();
134
+ const response = await client.getChannelInfo(params.roomId, params.roomName);
135
+ if (!response.success) {
136
+ const identifier = params.roomId || params.roomName || '';
137
+ return (0, base_js_1.createErrorResult)(base_js_1.ErrorCodes.NOT_FOUND, 'Channel not found', `No channel found with identifier "${identifier}"`);
138
+ }
139
+ const formatted = (0, message_formatter_js_1.formatChannels)([response.channel])[0];
140
+ const result = (0, response_builder_js_1.buildSuccessResponse)(formatted);
141
+ return (0, base_js_1.createToolResult)(result);
142
+ }
143
+ catch (error) {
144
+ return (0, base_js_1.createErrorResultFromException)(base_js_1.ErrorCodes.API_ERROR, 'Failed to get channel info', error);
145
+ }
146
+ });
147
+ // Register tools
148
+ base_js_1.toolRegistry.register(exports.listChannelsTool);
149
+ base_js_1.toolRegistry.register(exports.searchChannelsTool);
150
+ base_js_1.toolRegistry.register(exports.getChannelInfoTool);
151
+ //# sourceMappingURL=channel-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-tools.js","sourceRoot":"","sources":["../../src/tools/channel-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Handler Utilities
3
+ * Common patterns and utilities for tool handlers to reduce code duplication
4
+ */
5
+ import { ToolResult } from './base.js';
6
+ /**
7
+ * Common pagination parameters
8
+ */
9
+ export interface PaginationParams {
10
+ limit?: number;
11
+ offset?: number;
12
+ }
13
+ /**
14
+ * Default pagination values
15
+ */
16
+ export declare const DEFAULT_PAGINATION: {
17
+ readonly limit: 50;
18
+ readonly offset: 0;
19
+ readonly maxLimit: 100;
20
+ readonly minLimit: 1;
21
+ };
22
+ /**
23
+ * Extract pagination values with defaults
24
+ */
25
+ export declare function extractPagination(params: PaginationParams): {
26
+ limit: number;
27
+ offset: number;
28
+ };
29
+ /**
30
+ * Process a paginated list response with token truncation
31
+ */
32
+ export declare function processPaginatedResponse<T>(items: T[], total: number, offset: number): ToolResult;
33
+ /**
34
+ * Process a single item response
35
+ */
36
+ export declare function processSingleResponse<T>(item: T): ToolResult;
37
+ /**
38
+ * Process a success response with metadata
39
+ */
40
+ export declare function processSuccessResponse<T>(data: T, metadata?: {
41
+ count?: number;
42
+ total?: number;
43
+ truncated?: boolean;
44
+ }): ToolResult;
45
+ /**
46
+ * Create not found error for common resources
47
+ */
48
+ export declare function createNotFoundError(resource: string, identifier: string): ToolResult;
49
+ /**
50
+ * Create validation error for missing required parameters
51
+ */
52
+ export declare function createValidationError(requirement: string, details?: string): ToolResult;
53
+ /**
54
+ * Helper to require at least one of multiple optional parameters
55
+ */
56
+ export declare function requireOneOf(params: Record<string, unknown>, keys: string[]): {
57
+ valid: boolean;
58
+ error?: ToolResult;
59
+ };
60
+ /**
61
+ * Format items with truncation and return result
62
+ */
63
+ export declare function formatAndTruncate<T, R>(items: T[], formatter: (items: T[]) => R[], total: number, offset: number): ToolResult;
64
+ /**
65
+ * Check API response success and handle error
66
+ */
67
+ export declare function checkApiSuccess(response: {
68
+ success: boolean;
69
+ }, errorMessage: string): {
70
+ ok: true;
71
+ } | {
72
+ ok: false;
73
+ error: ToolResult;
74
+ };
75
+ //# sourceMappingURL=handler-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-utils.d.ts","sourceRoot":"","sources":["../../src/tools/handler-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAmD,UAAU,EAAE,MAAM,WAAW,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;CAKrB,CAAC;AAEX;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAQ7F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EACtC,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACf,UAAU,CAIZ;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAG5D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACpC,IAAI,EAAE,CAAC,EACP,QAAQ,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GACnE,UAAU,CAGZ;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,CAMpF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAMvF;AAED;;GAEG;AACH,wBAAgB,YAAY,CACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,MAAM,EAAE,GACf;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,CAexC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAClC,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACf,UAAU,CAGZ;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EAC9B,YAAY,EAAE,MAAM,GACrB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAQjD"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /**
3
+ * Handler Utilities
4
+ * Common patterns and utilities for tool handlers to reduce code duplication
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.DEFAULT_PAGINATION = void 0;
8
+ exports.extractPagination = extractPagination;
9
+ exports.processPaginatedResponse = processPaginatedResponse;
10
+ exports.processSingleResponse = processSingleResponse;
11
+ exports.processSuccessResponse = processSuccessResponse;
12
+ exports.createNotFoundError = createNotFoundError;
13
+ exports.createValidationError = createValidationError;
14
+ exports.requireOneOf = requireOneOf;
15
+ exports.formatAndTruncate = formatAndTruncate;
16
+ exports.checkApiSuccess = checkApiSuccess;
17
+ const token_counter_js_1 = require("../utils/token-counter.js");
18
+ const response_builder_js_1 = require("../formatters/response-builder.js");
19
+ const base_js_1 = require("./base.js");
20
+ /**
21
+ * Default pagination values
22
+ */
23
+ exports.DEFAULT_PAGINATION = {
24
+ limit: 50,
25
+ offset: 0,
26
+ maxLimit: 100,
27
+ minLimit: 1
28
+ };
29
+ /**
30
+ * Extract pagination values with defaults
31
+ */
32
+ function extractPagination(params) {
33
+ return {
34
+ limit: Math.min(Math.max(params.limit || exports.DEFAULT_PAGINATION.limit, exports.DEFAULT_PAGINATION.minLimit), exports.DEFAULT_PAGINATION.maxLimit),
35
+ offset: Math.max(params.offset || exports.DEFAULT_PAGINATION.offset, 0)
36
+ };
37
+ }
38
+ /**
39
+ * Process a paginated list response with token truncation
40
+ */
41
+ function processPaginatedResponse(items, total, offset) {
42
+ const { items: truncatedItems, truncated } = token_counter_js_1.TokenCounter.truncateToFit(items);
43
+ const result = (0, response_builder_js_1.buildPaginatedResponse)(truncatedItems, total, offset, truncated);
44
+ return (0, base_js_1.createToolResult)(result);
45
+ }
46
+ /**
47
+ * Process a single item response
48
+ */
49
+ function processSingleResponse(item) {
50
+ const result = (0, response_builder_js_1.buildSuccessResponse)(item);
51
+ return (0, base_js_1.createToolResult)(result);
52
+ }
53
+ /**
54
+ * Process a success response with metadata
55
+ */
56
+ function processSuccessResponse(data, metadata) {
57
+ const result = (0, response_builder_js_1.buildSuccessResponse)(data, metadata);
58
+ return (0, base_js_1.createToolResult)(result);
59
+ }
60
+ /**
61
+ * Create not found error for common resources
62
+ */
63
+ function createNotFoundError(resource, identifier) {
64
+ return (0, base_js_1.createErrorResult)(base_js_1.ErrorCodes.NOT_FOUND, `${resource} not found`, `No ${resource} found with identifier "${identifier}"`);
65
+ }
66
+ /**
67
+ * Create validation error for missing required parameters
68
+ */
69
+ function createValidationError(requirement, details) {
70
+ return (0, base_js_1.createErrorResult)(base_js_1.ErrorCodes.VALIDATION_ERROR, requirement, details);
71
+ }
72
+ /**
73
+ * Helper to require at least one of multiple optional parameters
74
+ */
75
+ function requireOneOf(params, keys) {
76
+ const hasValue = keys.some(key => params[key] !== undefined && params[key] !== null && params[key] !== '');
77
+ if (!hasValue) {
78
+ const keysStr = keys.join(' or ');
79
+ return {
80
+ valid: false,
81
+ error: createValidationError(`Missing required parameter`, `Either ${keysStr} must be provided`)
82
+ };
83
+ }
84
+ return { valid: true };
85
+ }
86
+ /**
87
+ * Format items with truncation and return result
88
+ */
89
+ function formatAndTruncate(items, formatter, total, offset) {
90
+ const formatted = formatter(items);
91
+ return processPaginatedResponse(formatted, total, offset);
92
+ }
93
+ /**
94
+ * Check API response success and handle error
95
+ */
96
+ function checkApiSuccess(response, errorMessage) {
97
+ if (!response.success) {
98
+ return {
99
+ ok: false,
100
+ error: (0, base_js_1.createErrorResult)(base_js_1.ErrorCodes.API_ERROR, errorMessage)
101
+ };
102
+ }
103
+ return { ok: true };
104
+ }
105
+ //# sourceMappingURL=handler-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-utils.js","sourceRoot":"","sources":["../../src/tools/handler-utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA2BH,8CAQC;AAKD,4DAQC;AAKD,sDAGC;AAKD,wDAMC;AAKD,kDAMC;AAKD,sDAMC;AAKD,oCAkBC;AAKD,8CAQC;AAKD,0CAWC;AA3ID,gEAAyD;AACzD,2EAAiG;AACjG,uCAAwF;AAUxF;;GAEG;AACU,QAAA,kBAAkB,GAAG;IAC9B,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,CAAC;CACL,CAAC;AAEX;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAwB;IACtD,OAAO;QACH,KAAK,EAAE,IAAI,CAAC,GAAG,CACX,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,0BAAkB,CAAC,KAAK,EAAE,0BAAkB,CAAC,QAAQ,CAAC,EAC/E,0BAAkB,CAAC,QAAQ,CAC9B;QACD,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,0BAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;KAClE,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CACpC,KAAU,EACV,KAAa,EACb,MAAc;IAEd,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,+BAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,IAAA,4CAAsB,EAAC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAChF,OAAO,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAI,IAAO;IAC5C,MAAM,MAAM,GAAG,IAAA,0CAAoB,EAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAClC,IAAO,EACP,QAAkE;IAElE,MAAM,MAAM,GAAG,IAAA,0CAAoB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,QAAgB,EAAE,UAAkB;IACpE,OAAO,IAAA,2BAAiB,EACpB,oBAAU,CAAC,SAAS,EACpB,GAAG,QAAQ,YAAY,EACvB,MAAM,QAAQ,2BAA2B,UAAU,GAAG,CACzD,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,WAAmB,EAAE,OAAgB;IACvE,OAAO,IAAA,2BAAiB,EACpB,oBAAU,CAAC,gBAAgB,EAC3B,WAAW,EACX,OAAO,CACV,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CACxB,MAA+B,EAC/B,IAAc;IAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAE3G,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO;YACH,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,qBAAqB,CACxB,4BAA4B,EAC5B,UAAU,OAAO,mBAAmB,CACvC;SACJ,CAAC;IACN,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC7B,KAAU,EACV,SAA8B,EAC9B,KAAa,EACb,MAAc;IAEd,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,wBAAwB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC3B,QAA8B,EAC9B,YAAoB;IAEpB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACH,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,IAAA,2BAAiB,EAAC,oBAAU,CAAC,SAAS,EAAE,YAAY,CAAC;SAC/D,CAAC;IACN,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC"}