sub-agents-mcp 0.1.2

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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +265 -0
  3. package/dist/agents/AgentManager.d.ts +58 -0
  4. package/dist/agents/AgentManager.d.ts.map +1 -0
  5. package/dist/agents/AgentManager.js +182 -0
  6. package/dist/agents/AgentManager.js.map +1 -0
  7. package/dist/config/ServerConfig.d.ts +34 -0
  8. package/dist/config/ServerConfig.d.ts.map +1 -0
  9. package/dist/config/ServerConfig.js +54 -0
  10. package/dist/config/ServerConfig.js.map +1 -0
  11. package/dist/execution/AgentExecutor.d.ts +114 -0
  12. package/dist/execution/AgentExecutor.d.ts.map +1 -0
  13. package/dist/execution/AgentExecutor.js +234 -0
  14. package/dist/execution/AgentExecutor.js.map +1 -0
  15. package/dist/execution/ExecutionLimits.d.ts +141 -0
  16. package/dist/execution/ExecutionLimits.d.ts.map +1 -0
  17. package/dist/execution/ExecutionLimits.js +231 -0
  18. package/dist/execution/ExecutionLimits.js.map +1 -0
  19. package/dist/execution/McpRequestTimeout.d.ts +166 -0
  20. package/dist/execution/McpRequestTimeout.d.ts.map +1 -0
  21. package/dist/execution/McpRequestTimeout.js +278 -0
  22. package/dist/execution/McpRequestTimeout.js.map +1 -0
  23. package/dist/execution/PromptController.d.ts +92 -0
  24. package/dist/execution/PromptController.d.ts.map +1 -0
  25. package/dist/execution/PromptController.js +130 -0
  26. package/dist/execution/PromptController.js.map +1 -0
  27. package/dist/execution/StreamProcessor.d.ts +23 -0
  28. package/dist/execution/StreamProcessor.d.ts.map +1 -0
  29. package/dist/execution/StreamProcessor.js +51 -0
  30. package/dist/execution/StreamProcessor.js.map +1 -0
  31. package/dist/execution/TimeoutManager.d.ts +159 -0
  32. package/dist/execution/TimeoutManager.d.ts.map +1 -0
  33. package/dist/execution/TimeoutManager.js +283 -0
  34. package/dist/execution/TimeoutManager.js.map +1 -0
  35. package/dist/index.d.ts +10 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +51 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/resources/AgentResources.d.ts +104 -0
  40. package/dist/resources/AgentResources.d.ts.map +1 -0
  41. package/dist/resources/AgentResources.js +315 -0
  42. package/dist/resources/AgentResources.js.map +1 -0
  43. package/dist/server/McpServer.d.ts +138 -0
  44. package/dist/server/McpServer.d.ts.map +1 -0
  45. package/dist/server/McpServer.js +373 -0
  46. package/dist/server/McpServer.js.map +1 -0
  47. package/dist/tools/RunAgentTool.d.ts +140 -0
  48. package/dist/tools/RunAgentTool.d.ts.map +1 -0
  49. package/dist/tools/RunAgentTool.js +371 -0
  50. package/dist/tools/RunAgentTool.js.map +1 -0
  51. package/dist/types/AgentDefinition.d.ts +33 -0
  52. package/dist/types/AgentDefinition.d.ts.map +1 -0
  53. package/dist/types/AgentDefinition.js +3 -0
  54. package/dist/types/AgentDefinition.js.map +1 -0
  55. package/dist/types/ExecutionParams.d.ts +48 -0
  56. package/dist/types/ExecutionParams.d.ts.map +1 -0
  57. package/dist/types/ExecutionParams.js +3 -0
  58. package/dist/types/ExecutionParams.js.map +1 -0
  59. package/dist/types/ServerConfig.d.ts +39 -0
  60. package/dist/types/ServerConfig.d.ts.map +1 -0
  61. package/dist/types/ServerConfig.js +3 -0
  62. package/dist/types/ServerConfig.js.map +1 -0
  63. package/dist/types/index.d.ts +19 -0
  64. package/dist/types/index.d.ts.map +1 -0
  65. package/dist/types/index.js +3 -0
  66. package/dist/types/index.js.map +1 -0
  67. package/dist/utils/ErrorHandler.d.ts +86 -0
  68. package/dist/utils/ErrorHandler.d.ts.map +1 -0
  69. package/dist/utils/ErrorHandler.js +99 -0
  70. package/dist/utils/ErrorHandler.js.map +1 -0
  71. package/dist/utils/Logger.d.ts +99 -0
  72. package/dist/utils/Logger.d.ts.map +1 -0
  73. package/dist/utils/Logger.js +151 -0
  74. package/dist/utils/Logger.js.map +1 -0
  75. package/package.json +92 -0
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ /**
3
+ * AgentResources implementation for publishing agent definitions via MCP
4
+ *
5
+ * Provides MCP resources for agent discovery including a list of all
6
+ * available agents and individual agent definition resources.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AgentResources = void 0;
10
+ const Logger_1 = require("../utils/Logger");
11
+ /**
12
+ * AgentResources class for managing agent definition resources in MCP
13
+ *
14
+ * Publishes agent information as MCP resources that clients can discover
15
+ * and read to understand available agents and their capabilities.
16
+ */
17
+ class AgentResources {
18
+ constructor(agentManager) {
19
+ this.agentManager = agentManager;
20
+ this.logger = new Logger_1.Logger('info');
21
+ }
22
+ /**
23
+ * Get list of all published agent resources
24
+ *
25
+ * @returns Promise resolving to array of MCP resource definitions
26
+ */
27
+ async listResources() {
28
+ const startTime = Date.now();
29
+ this.logger.debug('Starting resource listing', {
30
+ timestamp: new Date().toISOString(),
31
+ });
32
+ const resources = [];
33
+ // Add agent list resource
34
+ resources.push({
35
+ uri: 'agents://list',
36
+ name: 'Agent List',
37
+ description: 'List of available Claude Code sub-agents',
38
+ mimeType: 'text/plain',
39
+ });
40
+ // Add individual agent resources if agent manager is available
41
+ if (this.agentManager) {
42
+ try {
43
+ const agents = await this.agentManager.listAgents();
44
+ this.logger.debug('Agents loaded for resource listing', {
45
+ agentCount: agents.length,
46
+ loadTime: Date.now() - startTime,
47
+ });
48
+ for (const agent of agents) {
49
+ resources.push({
50
+ uri: `agents://${agent.name}`,
51
+ name: `Agent: ${agent.name}`,
52
+ description: agent.description || 'Agent definition',
53
+ mimeType: 'text/markdown',
54
+ });
55
+ }
56
+ }
57
+ catch (error) {
58
+ this.logger.error('Failed to load agents for resource listing', error instanceof Error ? error : undefined, {
59
+ loadTime: Date.now() - startTime,
60
+ });
61
+ // If we can't load agents, just return the list resource
62
+ }
63
+ }
64
+ else {
65
+ this.logger.warn('Agent manager not available for resource listing');
66
+ }
67
+ this.logger.info('Resource listing completed', {
68
+ resourceCount: resources.length,
69
+ totalTime: Date.now() - startTime,
70
+ });
71
+ return resources;
72
+ }
73
+ /**
74
+ * Read content of a specific agent resource
75
+ *
76
+ * @param uri - Resource URI to read
77
+ * @returns Promise resolving to resource content
78
+ * @throws {Error} When resource URI is invalid or not found
79
+ */
80
+ async readResource(uri) {
81
+ const startTime = Date.now();
82
+ const requestId = this.generateRequestId();
83
+ this.logger.info('Resource read requested', {
84
+ requestId,
85
+ uri,
86
+ timestamp: new Date().toISOString(),
87
+ });
88
+ try {
89
+ let result;
90
+ if (uri === 'agents://list') {
91
+ result = await this.getAgentListContent();
92
+ }
93
+ else {
94
+ // Check for individual agent resource
95
+ const agentNameMatch = uri.match(/^agents:\/\/(.+)$/);
96
+ if (agentNameMatch?.[1]) {
97
+ const agentName = agentNameMatch[1];
98
+ result = await this.getAgentContent(agentName);
99
+ }
100
+ else {
101
+ throw new Error(`Invalid resource URI format: ${uri}`);
102
+ }
103
+ }
104
+ this.logger.info('Resource read completed', {
105
+ requestId,
106
+ uri,
107
+ readTime: Date.now() - startTime,
108
+ contentLength: result.contents[0]?.text?.length || 0,
109
+ });
110
+ return result;
111
+ }
112
+ catch (error) {
113
+ this.logger.error('Resource read failed', error instanceof Error ? error : undefined, {
114
+ requestId,
115
+ uri,
116
+ readTime: Date.now() - startTime,
117
+ });
118
+ throw error;
119
+ }
120
+ }
121
+ /**
122
+ * Get content for the agent list resource
123
+ *
124
+ * @private
125
+ * @returns Promise resolving to agent list content
126
+ */
127
+ async getAgentListContent() {
128
+ if (!this.agentManager) {
129
+ return {
130
+ contents: [
131
+ {
132
+ type: 'text',
133
+ text: 'Agent manager not available. No agents can be listed.',
134
+ uri: 'agents://list',
135
+ },
136
+ ],
137
+ };
138
+ }
139
+ try {
140
+ const agents = await this.agentManager.listAgents();
141
+ if (agents.length === 0) {
142
+ return {
143
+ contents: [
144
+ {
145
+ type: 'text',
146
+ text: 'No agents available. Check agent directory configuration.',
147
+ uri: 'agents://list',
148
+ },
149
+ ],
150
+ };
151
+ }
152
+ let listText = `Available Claude Code Sub-Agents (${agents.length} total):\n\n`;
153
+ for (const agent of agents) {
154
+ listText += `## ${agent.name}\n`;
155
+ listText += `**Description:** ${agent.description}\n`;
156
+ listText += `**File:** ${agent.filePath}\n`;
157
+ listText += `**Last Modified:** ${agent.lastModified.toISOString()}\n`;
158
+ listText += `**Resource URI:** agents://${agent.name}\n\n`;
159
+ }
160
+ return {
161
+ contents: [
162
+ {
163
+ type: 'text',
164
+ text: listText,
165
+ uri: 'agents://list',
166
+ },
167
+ ],
168
+ };
169
+ }
170
+ catch (error) {
171
+ return {
172
+ contents: [
173
+ {
174
+ type: 'text',
175
+ text: `Error loading agent list: ${error instanceof Error ? error.message : 'Unknown error'}`,
176
+ uri: 'agents://list',
177
+ },
178
+ ],
179
+ };
180
+ }
181
+ }
182
+ /**
183
+ * Get content for a specific agent resource
184
+ *
185
+ * @private
186
+ * @param agentName - Name of the agent to get content for
187
+ * @returns Promise resolving to agent content
188
+ */
189
+ async getAgentContent(agentName) {
190
+ if (!this.agentManager) {
191
+ return {
192
+ contents: [
193
+ {
194
+ type: 'text',
195
+ text: 'Agent manager not available. Agent content cannot be retrieved.',
196
+ uri: `agents://${agentName}`,
197
+ },
198
+ ],
199
+ };
200
+ }
201
+ try {
202
+ const agent = await this.agentManager.getAgent(agentName);
203
+ if (!agent) {
204
+ const availableAgents = await this.getAvailableAgentNames();
205
+ let errorText = `Agent '${agentName}' not found.`;
206
+ if (availableAgents.length > 0) {
207
+ errorText += `\n\nAvailable agents:\n${availableAgents.map((name) => `- ${name}`).join('\n')}`;
208
+ }
209
+ return {
210
+ contents: [
211
+ {
212
+ type: 'text',
213
+ text: errorText,
214
+ uri: `agents://${agentName}`,
215
+ },
216
+ ],
217
+ };
218
+ }
219
+ return {
220
+ contents: [
221
+ {
222
+ type: 'text',
223
+ text: this.formatAgentContent(agent),
224
+ uri: `agents://${agentName}`,
225
+ },
226
+ ],
227
+ };
228
+ }
229
+ catch (error) {
230
+ return {
231
+ contents: [
232
+ {
233
+ type: 'text',
234
+ text: `Error loading agent '${agentName}': ${error instanceof Error ? error.message : 'Unknown error'}`,
235
+ uri: `agents://${agentName}`,
236
+ },
237
+ ],
238
+ };
239
+ }
240
+ }
241
+ /**
242
+ * Format agent definition content for display
243
+ *
244
+ * @private
245
+ * @param agent - Agent definition to format
246
+ * @returns Formatted content string
247
+ */
248
+ formatAgentContent(agent) {
249
+ let content = `# Agent: ${agent.name}\n\n`;
250
+ content += `**Description:** ${agent.description}\n`;
251
+ content += `**File Path:** ${agent.filePath}\n`;
252
+ content += `**Last Modified:** ${agent.lastModified.toISOString()}\n`;
253
+ content += `**Content Length:** ${agent.content.length} characters\n\n`;
254
+ content += '## Agent Definition\n\n';
255
+ content += agent.content;
256
+ return content;
257
+ }
258
+ /**
259
+ * Get list of available agent names
260
+ *
261
+ * @private
262
+ * @returns Promise resolving to array of agent names
263
+ */
264
+ async getAvailableAgentNames() {
265
+ if (!this.agentManager) {
266
+ return [];
267
+ }
268
+ try {
269
+ const agents = await this.agentManager.listAgents();
270
+ return agents.map((agent) => agent.name);
271
+ }
272
+ catch (error) {
273
+ return [];
274
+ }
275
+ }
276
+ /**
277
+ * Generate unique request ID for tracking
278
+ *
279
+ * @private
280
+ * @returns Unique request identifier
281
+ */
282
+ generateRequestId() {
283
+ return `resource_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
284
+ }
285
+ /**
286
+ * Check if a resource URI is valid with enhanced validation
287
+ *
288
+ * @param uri - Resource URI to validate
289
+ * @returns True if URI is valid
290
+ */
291
+ isValidResourceUri(uri) {
292
+ if (!uri || typeof uri !== 'string') {
293
+ return false;
294
+ }
295
+ if (uri === 'agents://list') {
296
+ return true;
297
+ }
298
+ const agentNameMatch = uri.match(/^agents:\/\/(.+)$/);
299
+ if (!agentNameMatch || !agentNameMatch[1]) {
300
+ return false;
301
+ }
302
+ const agentName = agentNameMatch[1];
303
+ // Validate agent name format
304
+ if (agentName.length === 0 || agentName.length > 100) {
305
+ return false;
306
+ }
307
+ // Check for valid characters (same as RunAgentTool validation)
308
+ if (!/^[a-zA-Z0-9_-]+$/.test(agentName)) {
309
+ return false;
310
+ }
311
+ return true;
312
+ }
313
+ }
314
+ exports.AgentResources = AgentResources;
315
+ //# sourceMappingURL=AgentResources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentResources.js","sourceRoot":"","sources":["../../src/resources/AgentResources.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH,6CAAyC;AA+BzC;;;;;GAKG;AACH,MAAa,cAAc;IAGzB,YAAoB,YAA2B;QAA3B,iBAAY,GAAZ,YAAY,CAAe;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;YAC7C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAkB,EAAE,CAAA;QAEnC,0BAA0B;QAC1B,SAAS,CAAC,IAAI,CAAC;YACb,GAAG,EAAE,eAAe;YACpB,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE,YAAY;SACvB,CAAC,CAAA;QAEF,+DAA+D;QAC/D,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;gBAEnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE;oBACtD,UAAU,EAAE,MAAM,CAAC,MAAM;oBACzB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACjC,CAAC,CAAA;gBAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,SAAS,CAAC,IAAI,CAAC;wBACb,GAAG,EAAE,YAAY,KAAK,CAAC,IAAI,EAAE;wBAC7B,IAAI,EAAE,UAAU,KAAK,CAAC,IAAI,EAAE;wBAC5B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,kBAAkB;wBACpD,QAAQ,EAAE,eAAe;qBAC1B,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,4CAA4C,EAC5C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC1C;oBACE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACjC,CACF,CAAA;gBACD,yDAAyD;YAC3D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;QACtE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;YAC7C,aAAa,EAAE,SAAS,CAAC,MAAM;YAC/B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SAClC,CAAC,CAAA;QAEF,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAE1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;YAC1C,SAAS;YACT,GAAG;YACH,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAA;QAEF,IAAI,CAAC;YACH,IAAI,MAA2B,CAAA;YAE/B,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;gBAC5B,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;YAC3C,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;gBACrD,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxB,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;oBACnC,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;gBAChD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAA;gBACxD,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBAC1C,SAAS;gBACT,GAAG;gBACH,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;aACrD,CAAC,CAAA;YAEF,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE;gBACpF,SAAS;gBACT,GAAG;gBACH,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACjC,CAAC,CAAA;YACF,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,mBAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,uDAAuD;wBAC7D,GAAG,EAAE,eAAe;qBACrB;iBACF;aACF,CAAA;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;YAEnD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,2DAA2D;4BACjE,GAAG,EAAE,eAAe;yBACrB;qBACF;iBACF,CAAA;YACH,CAAC;YAED,IAAI,QAAQ,GAAG,qCAAqC,MAAM,CAAC,MAAM,cAAc,CAAA;YAE/E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,QAAQ,IAAI,MAAM,KAAK,CAAC,IAAI,IAAI,CAAA;gBAChC,QAAQ,IAAI,oBAAoB,KAAK,CAAC,WAAW,IAAI,CAAA;gBACrD,QAAQ,IAAI,aAAa,KAAK,CAAC,QAAQ,IAAI,CAAA;gBAC3C,QAAQ,IAAI,sBAAsB,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAA;gBACtE,QAAQ,IAAI,8BAA8B,KAAK,CAAC,IAAI,MAAM,CAAA;YAC5D,CAAC;YAED,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,QAAQ;wBACd,GAAG,EAAE,eAAe;qBACrB;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;wBAC7F,GAAG,EAAE,eAAe;qBACrB;iBACF;aACF,CAAA;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,eAAe,CAAC,SAAiB;QAC7C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,iEAAiE;wBACvE,GAAG,EAAE,YAAY,SAAS,EAAE;qBAC7B;iBACF;aACF,CAAA;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;YAEzD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;gBAC3D,IAAI,SAAS,GAAG,UAAU,SAAS,cAAc,CAAA;gBAEjD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,SAAS,IAAI,0BAA0B,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;gBAChG,CAAC;gBAED,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,SAAS;4BACf,GAAG,EAAE,YAAY,SAAS,EAAE;yBAC7B;qBACF;iBACF,CAAA;YACH,CAAC;YAED,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;wBACpC,GAAG,EAAE,YAAY,SAAS,EAAE;qBAC7B;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wBAAwB,SAAS,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;wBACvG,GAAG,EAAE,YAAY,SAAS,EAAE;qBAC7B;iBACF;aACF,CAAA;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,kBAAkB,CAAC,KAAsB;QAC/C,IAAI,OAAO,GAAG,YAAY,KAAK,CAAC,IAAI,MAAM,CAAA;QAC1C,OAAO,IAAI,oBAAoB,KAAK,CAAC,WAAW,IAAI,CAAA;QACpD,OAAO,IAAI,kBAAkB,KAAK,CAAC,QAAQ,IAAI,CAAA;QAC/C,OAAO,IAAI,sBAAsB,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAA;QACrE,OAAO,IAAI,uBAAuB,KAAK,CAAC,OAAO,CAAC,MAAM,iBAAiB,CAAA;QACvE,OAAO,IAAI,yBAAyB,CAAA;QACpC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAA;QAExB,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,sBAAsB;QAClC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;YACnD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,iBAAiB;QACvB,OAAO,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;IAC5E,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,GAAW;QAC5B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACrD,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QAEnC,6BAA6B;QAC7B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACrD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AA5UD,wCA4UC"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * MCP Server implementation using @modelcontextprotocol/sdk
3
+ *
4
+ * Provides the foundational MCP server functionality with StdioServerTransport
5
+ * for stdin/stdout communication. This class serves as the entry point for
6
+ * the MCP server and handles basic server lifecycle operations.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const config = await ServerConfig.fromEnvironment()
11
+ * const server = new McpServer(config)
12
+ * await server.start()
13
+ * ```
14
+ */
15
+ import type { ServerConfig } from '../config/ServerConfig';
16
+ /**
17
+ * Server information interface for MCP server identification
18
+ */
19
+ interface ServerInfo {
20
+ name: string;
21
+ version: string;
22
+ }
23
+ /**
24
+ * MCP Server class providing foundational server functionality
25
+ */
26
+ export declare class McpServer {
27
+ private server;
28
+ private transport;
29
+ private config;
30
+ private agentManager;
31
+ private agentExecutor;
32
+ private runAgentTool;
33
+ private agentResources;
34
+ /**
35
+ * Create a new MCP server instance
36
+ * @param config Server configuration object
37
+ * @throws {Error} When server name is empty
38
+ */
39
+ constructor(config: ServerConfig);
40
+ /**
41
+ * Validate server configuration
42
+ * @param config Configuration to validate
43
+ * @throws {Error} When configuration is invalid
44
+ */
45
+ private validateConfig;
46
+ /**
47
+ * Log message with structured format
48
+ * @param level Log level
49
+ * @param message Log message
50
+ * @param metadata Additional metadata
51
+ */
52
+ private log;
53
+ /**
54
+ * Setup StdioServerTransport for MCP communication
55
+ */
56
+ private setupTransport;
57
+ /**
58
+ * Setup MCP protocol handlers with performance monitoring
59
+ */
60
+ private setupHandlers;
61
+ /**
62
+ * Get server information
63
+ * @returns Server name and version
64
+ */
65
+ getServerInfo(): ServerInfo;
66
+ /**
67
+ * Check if transport is configured
68
+ * @returns True if transport is available
69
+ */
70
+ hasTransport(): boolean;
71
+ /**
72
+ * Check if server is ready to start
73
+ * @returns True if server is ready
74
+ */
75
+ isReady(): boolean;
76
+ /**
77
+ * Start the MCP server
78
+ * @throws {Error} When server is not ready or transport setup fails
79
+ */
80
+ start(): Promise<void>;
81
+ /**
82
+ * List available tools (for testing)
83
+ * @returns Promise resolving to array of tool definitions
84
+ */
85
+ listTools(): Promise<Array<{
86
+ name: string;
87
+ description: string;
88
+ inputSchema: unknown;
89
+ }>>;
90
+ /**
91
+ * List available resources (for testing)
92
+ * @returns Promise resolving to array of resource definitions
93
+ */
94
+ listResources(): Promise<Array<{
95
+ uri: string;
96
+ name: string;
97
+ description: string;
98
+ }>>;
99
+ /**
100
+ * Call a tool (for testing)
101
+ * @param toolName - Name of the tool to call
102
+ * @param params - Tool parameters
103
+ * @returns Promise resolving to tool response
104
+ */
105
+ callTool(toolName: string, params: unknown): Promise<unknown>;
106
+ /**
107
+ * Read a resource (for testing)
108
+ * @param uri - Resource URI to read
109
+ * @returns Promise resolving to resource content
110
+ */
111
+ readResource(uri: string): Promise<unknown>;
112
+ /**
113
+ * Get server performance statistics
114
+ *
115
+ * @returns Performance and usage statistics
116
+ */
117
+ getServerStats(): {
118
+ serverInfo: {
119
+ name: string;
120
+ version: string;
121
+ };
122
+ executionStats: Map<string, {
123
+ count: number;
124
+ totalTime: number;
125
+ lastUsed: Date;
126
+ }>;
127
+ };
128
+ /**
129
+ * Reset statistics
130
+ */
131
+ resetStats(): void;
132
+ /**
133
+ * Close the server and cleanup resources
134
+ */
135
+ close(): Promise<void>;
136
+ }
137
+ export {};
138
+ //# sourceMappingURL=McpServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpServer.d.ts","sourceRoot":"","sources":["../../src/server/McpServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAeH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAO3D;;GAEG;AACH,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAOD;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAgB;IAEtC;;;;OAIG;gBACS,MAAM,EAAE,YAAY;IA+ChC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAStB;;;;;OAKG;IACH,OAAO,CAAC,GAAG;IAqBX;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAuIrB;;;OAGG;IACH,aAAa,IAAI,UAAU;IAO3B;;;OAGG;IACH,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACH,OAAO,IAAI,OAAO;IAIlB;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5B;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAU9F;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IASzF;;;;;OAKG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAOnE;;;;OAIG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOjD;;;;OAIG;IACH,cAAc,IAAI;QAChB,UAAU,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;QAC7C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,IAAI,CAAA;SAAE,CAAC,CAAA;KAClF;IAOD;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAuB7B"}