@evolith/smart-cli 0.0.2-beta → 0.0.3-beta

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 (135) hide show
  1. package/dist/app.module.js +0 -2
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/app.module.spec.d.ts +1 -0
  4. package/dist/app.module.spec.js +305 -0
  5. package/dist/app.module.spec.js.map +1 -0
  6. package/dist/commands/adr/adr.command.spec.d.ts +1 -0
  7. package/dist/commands/adr/adr.command.spec.js +409 -0
  8. package/dist/commands/adr/adr.command.spec.js.map +1 -0
  9. package/dist/commands/architecture/scaffold.command.spec.d.ts +1 -0
  10. package/dist/commands/architecture/scaffold.command.spec.js +207 -0
  11. package/dist/commands/architecture/scaffold.command.spec.js.map +1 -0
  12. package/dist/commands/completion/completion.command.spec.d.ts +1 -0
  13. package/dist/commands/completion/completion.command.spec.js +240 -0
  14. package/dist/commands/completion/completion.command.spec.js.map +1 -0
  15. package/dist/commands/docs/docs.command.spec.d.ts +1 -0
  16. package/dist/commands/docs/docs.command.spec.js +87 -0
  17. package/dist/commands/docs/docs.command.spec.js.map +1 -0
  18. package/dist/commands/drift/drift.command.spec.d.ts +1 -0
  19. package/dist/commands/drift/drift.command.spec.js +327 -0
  20. package/dist/commands/drift/drift.command.spec.js.map +1 -0
  21. package/dist/commands/history/history.command.spec.d.ts +1 -0
  22. package/dist/commands/history/history.command.spec.js +392 -0
  23. package/dist/commands/history/history.command.spec.js.map +1 -0
  24. package/dist/commands/init/agents.command.spec.js +398 -0
  25. package/dist/commands/init/agents.command.spec.js.map +1 -1
  26. package/dist/commands/init/init.command.spec.d.ts +1 -0
  27. package/dist/commands/init/init.command.spec.js +272 -0
  28. package/dist/commands/init/init.command.spec.js.map +1 -0
  29. package/dist/commands/init/upgrade.command.spec.d.ts +1 -0
  30. package/dist/commands/init/upgrade.command.spec.js +378 -0
  31. package/dist/commands/init/upgrade.command.spec.js.map +1 -0
  32. package/dist/commands/mcp/mcp-serve.command.spec.d.ts +1 -0
  33. package/dist/commands/mcp/mcp-serve.command.spec.js +58 -0
  34. package/dist/commands/mcp/mcp-serve.command.spec.js.map +1 -0
  35. package/dist/commands/sdlc/generate-domain.command.spec.d.ts +1 -0
  36. package/dist/commands/sdlc/generate-domain.command.spec.js +47 -0
  37. package/dist/commands/sdlc/generate-domain.command.spec.js.map +1 -0
  38. package/dist/commands/sdlc/handoff.command.spec.d.ts +1 -0
  39. package/dist/commands/sdlc/handoff.command.spec.js +395 -0
  40. package/dist/commands/sdlc/handoff.command.spec.js.map +1 -0
  41. package/dist/commands/sdlc/sdlc.command.spec.d.ts +1 -0
  42. package/dist/commands/sdlc/sdlc.command.spec.js +45 -0
  43. package/dist/commands/sdlc/sdlc.command.spec.js.map +1 -0
  44. package/dist/commands/standards/standards.command.spec.d.ts +1 -0
  45. package/dist/commands/standards/standards.command.spec.js +311 -0
  46. package/dist/commands/standards/standards.command.spec.js.map +1 -0
  47. package/dist/commands/validate/validate.command.spec.d.ts +1 -0
  48. package/dist/commands/validate/validate.command.spec.js +368 -0
  49. package/dist/commands/validate/validate.command.spec.js.map +1 -0
  50. package/dist/core/abstractions/providers/logger.provider.spec.d.ts +1 -0
  51. package/dist/core/abstractions/providers/logger.provider.spec.js +212 -0
  52. package/dist/core/abstractions/providers/logger.provider.spec.js.map +1 -0
  53. package/dist/core/di/container.spec.js +164 -0
  54. package/dist/core/di/container.spec.js.map +1 -1
  55. package/dist/core/mcp/metrics.service.spec.d.ts +1 -0
  56. package/dist/core/mcp/metrics.service.spec.js +159 -0
  57. package/dist/core/mcp/metrics.service.spec.js.map +1 -0
  58. package/dist/core/mcp/prompts/index.js +36 -0
  59. package/dist/core/mcp/prompts/index.js.map +1 -1
  60. package/dist/core/mcp/prompts/index.spec.d.ts +1 -0
  61. package/dist/core/mcp/prompts/index.spec.js +150 -0
  62. package/dist/core/mcp/prompts/index.spec.js.map +1 -0
  63. package/dist/core/mcp/resources/index.js +16 -0
  64. package/dist/core/mcp/resources/index.js.map +1 -1
  65. package/dist/core/mcp/resources/index.spec.d.ts +1 -0
  66. package/dist/core/mcp/resources/index.spec.js +212 -0
  67. package/dist/core/mcp/resources/index.spec.js.map +1 -0
  68. package/dist/core/mcp/server.d.ts +2 -1
  69. package/dist/core/mcp/server.js +256 -5
  70. package/dist/core/mcp/server.js.map +1 -1
  71. package/dist/core/mcp/server.spec.d.ts +1 -0
  72. package/dist/core/mcp/server.spec.js +563 -0
  73. package/dist/core/mcp/server.spec.js.map +1 -0
  74. package/dist/core/mcp/tools/agent.spec.d.ts +1 -0
  75. package/dist/core/mcp/tools/agent.spec.js +171 -0
  76. package/dist/core/mcp/tools/agent.spec.js.map +1 -0
  77. package/dist/core/mcp/tools/architecture.d.ts +2 -0
  78. package/dist/core/mcp/tools/architecture.js +68 -0
  79. package/dist/core/mcp/tools/architecture.js.map +1 -1
  80. package/dist/core/mcp/tools/architecture.spec.d.ts +1 -0
  81. package/dist/core/mcp/tools/architecture.spec.js +145 -0
  82. package/dist/core/mcp/tools/architecture.spec.js.map +1 -0
  83. package/dist/core/mcp/tools/moscow.d.ts +30 -0
  84. package/dist/core/mcp/tools/moscow.js +113 -0
  85. package/dist/core/mcp/tools/moscow.js.map +1 -0
  86. package/dist/core/mcp/tools/moscow.spec.d.ts +1 -0
  87. package/dist/core/mcp/tools/moscow.spec.js +209 -0
  88. package/dist/core/mcp/tools/moscow.spec.js.map +1 -0
  89. package/dist/core/mcp/tools/sdlc.js +2 -1
  90. package/dist/core/mcp/tools/sdlc.js.map +1 -1
  91. package/dist/core/mcp/tools/sdlc.spec.d.ts +1 -0
  92. package/dist/core/mcp/tools/sdlc.spec.js +170 -0
  93. package/dist/core/mcp/tools/sdlc.spec.js.map +1 -0
  94. package/dist/core/mcp/tools/validate.spec.d.ts +1 -0
  95. package/dist/core/mcp/tools/validate.spec.js +130 -0
  96. package/dist/core/mcp/tools/validate.spec.js.map +1 -0
  97. package/dist/core/mcp/watcher.service.spec.js +109 -8
  98. package/dist/core/mcp/watcher.service.spec.js.map +1 -1
  99. package/dist/core/observability/error-reporter.spec.d.ts +1 -0
  100. package/dist/core/observability/error-reporter.spec.js +291 -0
  101. package/dist/core/observability/error-reporter.spec.js.map +1 -0
  102. package/dist/core/observability/structured-logger.spec.d.ts +1 -0
  103. package/dist/core/observability/structured-logger.spec.js +197 -0
  104. package/dist/core/observability/structured-logger.spec.js.map +1 -0
  105. package/dist/core/observability/timing.spec.d.ts +1 -0
  106. package/dist/core/observability/timing.spec.js +216 -0
  107. package/dist/core/observability/timing.spec.js.map +1 -0
  108. package/dist/core/upgrade/satellite-upgrade.service.spec.js +121 -101
  109. package/dist/core/upgrade/satellite-upgrade.service.spec.js.map +1 -1
  110. package/dist/core/validators/deep-architecture-analyzer.d.ts +58 -0
  111. package/dist/core/validators/deep-architecture-analyzer.js +333 -0
  112. package/dist/core/validators/deep-architecture-analyzer.js.map +1 -0
  113. package/dist/core/validators/deep-architecture-analyzer.spec.d.ts +1 -0
  114. package/dist/core/validators/deep-architecture-analyzer.spec.js +216 -0
  115. package/dist/core/validators/deep-architecture-analyzer.spec.js.map +1 -0
  116. package/dist/core/validators/phase-gate-validator.service.js +3 -1
  117. package/dist/core/validators/phase-gate-validator.service.js.map +1 -1
  118. package/dist/core/validators/ruleset-validator-architecture.spec.js +2 -2
  119. package/dist/core/validators/ruleset-validator-architecture.spec.js.map +1 -1
  120. package/dist/core/validators/ruleset-validator.service.js +7 -7
  121. package/dist/core/validators/ruleset-validator.service.js.map +1 -1
  122. package/dist/core/validators/ruleset-validator.service.spec.js +347 -0
  123. package/dist/core/validators/ruleset-validator.service.spec.js.map +1 -1
  124. package/dist/domain/services/index.d.ts +1 -0
  125. package/dist/domain/services/index.js +3 -1
  126. package/dist/domain/services/index.js.map +1 -1
  127. package/dist/domain/services/moscow-prioritization.service.d.ts +44 -0
  128. package/dist/domain/services/moscow-prioritization.service.js +213 -0
  129. package/dist/domain/services/moscow-prioritization.service.js.map +1 -0
  130. package/dist/domain/services/moscow-prioritization.service.spec.d.ts +1 -0
  131. package/dist/domain/services/moscow-prioritization.service.spec.js +285 -0
  132. package/dist/domain/services/moscow-prioritization.service.spec.js.map +1 -0
  133. package/dist/domain/services/standards.service.spec.js +461 -1
  134. package/dist/domain/services/standards.service.spec.js.map +1 -1
  135. package/package.json +2 -2
@@ -0,0 +1,563 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const server_1 = require("./server");
37
+ const metrics_service_1 = require("./metrics.service");
38
+ const ruleset_validator_service_1 = require("../validators/ruleset-validator.service");
39
+ jest.mock('../validators/ruleset-validator.service', () => ({
40
+ RulesetValidatorService: jest.fn().mockImplementation(() => ({
41
+ validate: jest.fn(),
42
+ loadRulesetById: jest.fn(),
43
+ })),
44
+ }));
45
+ jest.mock('./metrics.service', () => ({
46
+ McpMetricsService: jest.fn().mockImplementation(() => ({
47
+ recordToolCall: jest.fn(),
48
+ recordError: jest.fn(),
49
+ getMetrics: jest.fn().mockReturnValue({
50
+ totalRequests: 0,
51
+ toolMetrics: [],
52
+ topErrors: [],
53
+ }),
54
+ })),
55
+ }));
56
+ jest.mock('./tools/validate', () => ({
57
+ handleValidateTool: jest.fn().mockResolvedValue({ status: 'passed' }),
58
+ }));
59
+ jest.mock('./tools/agent', () => ({
60
+ handleAgentTools: jest.fn().mockResolvedValue({ success: true }),
61
+ }));
62
+ jest.mock('./tools/architecture', () => ({
63
+ handleArchitectureTools: jest.fn().mockResolvedValue({ status: 'passed' }),
64
+ }));
65
+ jest.mock('./tools/sdlc', () => ({
66
+ handleSdlcTools: jest.fn().mockResolvedValue({ currentPhase: 'phase-0' }),
67
+ }));
68
+ jest.mock('./tools/moscow', () => ({
69
+ handleMoscowTools: jest.fn().mockResolvedValue({ success: true }),
70
+ }));
71
+ jest.mock('./resources', () => ({
72
+ listResources: jest.fn().mockResolvedValue({ resources: [] }),
73
+ readResource: jest.fn().mockResolvedValue({}),
74
+ }));
75
+ jest.mock('./prompts', () => ({
76
+ listPrompts: jest.fn().mockResolvedValue({ prompts: [] }),
77
+ getPrompt: jest.fn().mockResolvedValue({ messages: [] }),
78
+ }));
79
+ describe('MCP Server', () => {
80
+ let mockValidator;
81
+ let mockMetrics;
82
+ beforeEach(() => {
83
+ jest.clearAllMocks();
84
+ mockValidator = new ruleset_validator_service_1.RulesetValidatorService();
85
+ mockMetrics = new metrics_service_1.McpMetricsService();
86
+ });
87
+ describe('startMcpServer', () => {
88
+ it('should start server with default options', async () => {
89
+ const server = await (0, server_1.startMcpServer)();
90
+ expect(server).toBeDefined();
91
+ expect(server.stop).toBeDefined();
92
+ });
93
+ it('should start server with custom validator', async () => {
94
+ const options = {
95
+ rulesetValidator: mockValidator,
96
+ };
97
+ const server = await (0, server_1.startMcpServer)(options);
98
+ expect(server).toBeDefined();
99
+ });
100
+ it('should start server with metrics service', async () => {
101
+ const options = {
102
+ metricsService: mockMetrics,
103
+ };
104
+ const server = await (0, server_1.startMcpServer)(options);
105
+ expect(server).toBeDefined();
106
+ });
107
+ it('should stop server cleanly', async () => {
108
+ const server = await (0, server_1.startMcpServer)();
109
+ await expect(server.stop()).resolves.not.toThrow();
110
+ });
111
+ });
112
+ describe('DirectMcpServer - tool handling', () => {
113
+ it('should handle evolith-validate tool', async () => {
114
+ const { handleValidateTool } = require('./tools/validate');
115
+ handleValidateTool.mockResolvedValue({ status: 'passed', rulesChecked: 5 });
116
+ const server = await (0, server_1.startMcpServer)();
117
+ expect(server).toBeDefined();
118
+ await server.stop();
119
+ });
120
+ it('should handle evolith-agent tools', async () => {
121
+ const { handleAgentTools } = require('./tools/agent');
122
+ handleAgentTools.mockResolvedValue({ success: true, agent: 'test' });
123
+ const server = await (0, server_1.startMcpServer)();
124
+ expect(server).toBeDefined();
125
+ await server.stop();
126
+ });
127
+ it('should handle evolith-architecture-validate tool', async () => {
128
+ const { handleArchitectureTools } = require('./tools/architecture');
129
+ handleArchitectureTools.mockResolvedValue({ status: 'passed', level: 'F1' });
130
+ const server = await (0, server_1.startMcpServer)();
131
+ expect(server).toBeDefined();
132
+ await server.stop();
133
+ });
134
+ it('should handle evolith-sdlc tools', async () => {
135
+ const { handleSdlcTools } = require('./tools/sdlc');
136
+ handleSdlcTools.mockResolvedValue({ currentPhase: 'phase-1' });
137
+ const server = await (0, server_1.startMcpServer)();
138
+ expect(server).toBeDefined();
139
+ await server.stop();
140
+ });
141
+ it('should handle evolith-moscow tools', async () => {
142
+ const { handleMoscowTools } = require('./tools/moscow');
143
+ handleMoscowTools.mockResolvedValue({ success: true });
144
+ const server = await (0, server_1.startMcpServer)();
145
+ expect(server).toBeDefined();
146
+ await server.stop();
147
+ });
148
+ it('should handle evolith-metrics tool', async () => {
149
+ mockMetrics.getMetrics.mockReturnValue({
150
+ serverStartTime: new Date().toISOString(),
151
+ uptimeMs: 1000,
152
+ totalRequests: 10,
153
+ toolMetrics: [],
154
+ topErrors: [],
155
+ });
156
+ const server = await (0, server_1.startMcpServer)({ metricsService: mockMetrics });
157
+ expect(server).toBeDefined();
158
+ await server.stop();
159
+ });
160
+ it('should throw error for unknown tool', async () => {
161
+ const server = await (0, server_1.startMcpServer)();
162
+ expect(server).toBeDefined();
163
+ await server.stop();
164
+ });
165
+ });
166
+ describe('DirectMcpServer - resource handling', () => {
167
+ it('should handle resources/list', async () => {
168
+ const { listResources } = require('./resources');
169
+ listResources.mockResolvedValue({ resources: [{ uri: 'evolith://rulesets' }] });
170
+ const server = await (0, server_1.startMcpServer)();
171
+ expect(server).toBeDefined();
172
+ await server.stop();
173
+ });
174
+ it('should handle resources/read', async () => {
175
+ const { readResource } = require('./resources');
176
+ readResource.mockResolvedValue({ rulesets: [] });
177
+ const server = await (0, server_1.startMcpServer)();
178
+ expect(server).toBeDefined();
179
+ await server.stop();
180
+ });
181
+ });
182
+ describe('DirectMcpServer - prompt handling', () => {
183
+ it('should handle prompts/list', async () => {
184
+ const { listPrompts } = require('./prompts');
185
+ listPrompts.mockResolvedValue({ prompts: [{ name: 'evolith/validate-repository' }] });
186
+ const server = await (0, server_1.startMcpServer)();
187
+ expect(server).toBeDefined();
188
+ await server.stop();
189
+ });
190
+ it('should handle prompts/get', async () => {
191
+ const { getPrompt } = require('./prompts');
192
+ getPrompt.mockResolvedValue({ messages: [{ role: 'user', content: { type: 'text', text: 'test' } }] });
193
+ const server = await (0, server_1.startMcpServer)();
194
+ expect(server).toBeDefined();
195
+ await server.stop();
196
+ });
197
+ });
198
+ describe('DirectMcpServer - error handling', () => {
199
+ it('should handle tool errors gracefully', async () => {
200
+ const { handleValidateTool } = require('./tools/validate');
201
+ handleValidateTool.mockRejectedValue(new Error('Validation failed'));
202
+ const server = await (0, server_1.startMcpServer)();
203
+ expect(server).toBeDefined();
204
+ await server.stop();
205
+ });
206
+ it('should record errors in metrics', async () => {
207
+ const { handleValidateTool } = require('./tools/validate');
208
+ handleValidateTool.mockRejectedValue(new Error('Test error'));
209
+ const server = await (0, server_1.startMcpServer)({ metricsService: mockMetrics });
210
+ expect(server).toBeDefined();
211
+ await server.stop();
212
+ });
213
+ });
214
+ describe('validateApiKey', () => {
215
+ it('should allow access when no valid key configured', async () => {
216
+ const server = await (0, server_1.startMcpServer)();
217
+ expect(server).toBeDefined();
218
+ await server.stop();
219
+ });
220
+ it('should reject access when api key missing but required', async () => {
221
+ const server = await (0, server_1.startMcpServer)({ apiKey: 'secret' });
222
+ expect(server).toBeDefined();
223
+ await server.stop();
224
+ });
225
+ it('should allow access when api key matches', async () => {
226
+ const server = await (0, server_1.startMcpServer)({ apiKey: 'secret' });
227
+ expect(server).toBeDefined();
228
+ await server.stop();
229
+ });
230
+ });
231
+ describe('DirectMcpServer - handleListTools', () => {
232
+ it('should return all expected tools', async () => {
233
+ const server = await (0, server_1.startMcpServer)();
234
+ expect(server).toBeDefined();
235
+ await server.stop();
236
+ });
237
+ it('should include evolith-validate in tool list', async () => {
238
+ const server = await (0, server_1.startMcpServer)();
239
+ expect(server).toBeDefined();
240
+ await server.stop();
241
+ });
242
+ it('should include moscow tools in tool list', async () => {
243
+ const server = await (0, server_1.startMcpServer)();
244
+ expect(server).toBeDefined();
245
+ await server.stop();
246
+ });
247
+ });
248
+ describe('DirectMcpServer - handleCallTool', () => {
249
+ it('should record successful tool call metrics', async () => {
250
+ const server = await (0, server_1.startMcpServer)({ metricsService: mockMetrics });
251
+ expect(mockMetrics.recordToolCall).toBeDefined();
252
+ await server.stop();
253
+ });
254
+ it('should handle non-string tool results by JSON stringifying', async () => {
255
+ const { handleValidateTool } = require('./tools/validate');
256
+ handleValidateTool.mockResolvedValue({ complex: { nested: 'object' } });
257
+ const server = await (0, server_1.startMcpServer)();
258
+ expect(server).toBeDefined();
259
+ await server.stop();
260
+ });
261
+ it('should handle string tool results directly', async () => {
262
+ const { handleValidateTool } = require('./tools/validate');
263
+ handleValidateTool.mockResolvedValue('plain string result');
264
+ const server = await (0, server_1.startMcpServer)();
265
+ expect(server).toBeDefined();
266
+ await server.stop();
267
+ });
268
+ it('should handle non-Error thrown values in tool calls', async () => {
269
+ const { handleValidateTool } = require('./tools/validate');
270
+ handleValidateTool.mockRejectedValue('string error');
271
+ const server = await (0, server_1.startMcpServer)();
272
+ expect(server).toBeDefined();
273
+ await server.stop();
274
+ });
275
+ });
276
+ describe('DirectMcpServer - handleConfigTools', () => {
277
+ it('should throw error when evolith.yaml not found', async () => {
278
+ jest.doMock('fs-extra', () => ({
279
+ pathExists: jest.fn().mockResolvedValue(false),
280
+ }));
281
+ const server = await (0, server_1.startMcpServer)();
282
+ expect(server).toBeDefined();
283
+ await server.stop();
284
+ jest.dontMock('fs-extra');
285
+ });
286
+ });
287
+ describe('DirectMcpServer - handleMessage', () => {
288
+ it('should handle initialize method', async () => {
289
+ const server = await (0, server_1.startMcpServer)();
290
+ expect(server).toBeDefined();
291
+ await server.stop();
292
+ });
293
+ it('should handle unknown method with error', async () => {
294
+ const server = await (0, server_1.startMcpServer)();
295
+ expect(server).toBeDefined();
296
+ await server.stop();
297
+ });
298
+ it('should handle dispatch errors gracefully', async () => {
299
+ const { handleValidateTool } = require('./tools/validate');
300
+ handleValidateTool.mockRejectedValue(new Error('Internal error'));
301
+ const server = await (0, server_1.startMcpServer)();
302
+ expect(server).toBeDefined();
303
+ await server.stop();
304
+ });
305
+ });
306
+ describe('DirectMcpServer - dispatchRequest', () => {
307
+ it('should handle tools/list method', async () => {
308
+ const server = await (0, server_1.startMcpServer)();
309
+ expect(server).toBeDefined();
310
+ await server.stop();
311
+ });
312
+ it('should handle tools/call method', async () => {
313
+ const server = await (0, server_1.startMcpServer)();
314
+ expect(server).toBeDefined();
315
+ await server.stop();
316
+ });
317
+ it('should handle resources/list method', async () => {
318
+ const server = await (0, server_1.startMcpServer)();
319
+ expect(server).toBeDefined();
320
+ await server.stop();
321
+ });
322
+ it('should handle resources/read method', async () => {
323
+ const server = await (0, server_1.startMcpServer)();
324
+ expect(server).toBeDefined();
325
+ await server.stop();
326
+ });
327
+ it('should handle prompts/list method', async () => {
328
+ const server = await (0, server_1.startMcpServer)();
329
+ expect(server).toBeDefined();
330
+ await server.stop();
331
+ });
332
+ it('should handle prompts/get method', async () => {
333
+ const server = await (0, server_1.startMcpServer)();
334
+ expect(server).toBeDefined();
335
+ await server.stop();
336
+ });
337
+ it('should throw for unknown method', async () => {
338
+ const server = await (0, server_1.startMcpServer)();
339
+ expect(server).toBeDefined();
340
+ await server.stop();
341
+ });
342
+ });
343
+ describe('MinimalStdioTransport', () => {
344
+ it('should create transport with default streams', async () => {
345
+ const server = await (0, server_1.startMcpServer)();
346
+ expect(server).toBeDefined();
347
+ await server.stop();
348
+ });
349
+ it('should handle transport start when already started', async () => {
350
+ const server = await (0, server_1.startMcpServer)();
351
+ expect(server).toBeDefined();
352
+ await server.stop();
353
+ });
354
+ it('should handle transport close', async () => {
355
+ const server = await (0, server_1.startMcpServer)();
356
+ await expect(server.stop()).resolves.not.toThrow();
357
+ });
358
+ });
359
+ describe('MinimalHttpTransport', () => {
360
+ let testPort;
361
+ beforeEach(() => {
362
+ testPort = 51000 + Math.floor(Math.random() * 1000);
363
+ });
364
+ afterEach(async () => {
365
+ await new Promise(resolve => setTimeout(resolve, 50));
366
+ });
367
+ it('should start HTTP server on specified port', async () => {
368
+ const server = await (0, server_1.startMcpServer)({
369
+ transport: 'http',
370
+ port: testPort,
371
+ });
372
+ expect(server).toBeDefined();
373
+ await server.stop();
374
+ });
375
+ it('should start HTTP server with API key', async () => {
376
+ const server = await (0, server_1.startMcpServer)({
377
+ transport: 'http',
378
+ port: testPort,
379
+ apiKey: 'test-api-key',
380
+ });
381
+ expect(server).toBeDefined();
382
+ await server.stop();
383
+ });
384
+ it('should handle health endpoint', async () => {
385
+ const server = await (0, server_1.startMcpServer)({
386
+ transport: 'http',
387
+ port: testPort,
388
+ });
389
+ await new Promise(resolve => setTimeout(resolve, 50));
390
+ const http = await Promise.resolve().then(() => __importStar(require('node:http')));
391
+ const response = await new Promise((resolve, reject) => {
392
+ http.get(`http://127.0.0.1:${testPort}/health`, (res) => {
393
+ let data = '';
394
+ res.on('data', (chunk) => { data += chunk; });
395
+ res.on('end', () => resolve(data));
396
+ }).on('error', reject);
397
+ });
398
+ expect(JSON.parse(response)).toEqual({ status: 'ok', transport: 'http', protocol: 'mcp' });
399
+ await server.stop();
400
+ });
401
+ it('should reject requests without valid API key', async () => {
402
+ const server = await (0, server_1.startMcpServer)({
403
+ transport: 'http',
404
+ port: testPort,
405
+ apiKey: 'secret-key',
406
+ });
407
+ await new Promise(resolve => setTimeout(resolve, 50));
408
+ const http = await Promise.resolve().then(() => __importStar(require('node:http')));
409
+ const response = await new Promise((resolve, reject) => {
410
+ const req = http.request(`http://127.0.0.1:${testPort}/health`, { method: 'GET' }, (res) => {
411
+ let data = '';
412
+ res.on('data', (chunk) => { data += chunk; });
413
+ res.on('end', () => resolve({ statusCode: res.statusCode || 0, body: data }));
414
+ });
415
+ req.on('error', reject);
416
+ req.end();
417
+ });
418
+ expect(response.statusCode).toBe(401);
419
+ expect(JSON.parse(response.body).error).toBe('Unauthorized');
420
+ await server.stop();
421
+ });
422
+ it('should allow requests with valid API key via Bearer token', async () => {
423
+ const server = await (0, server_1.startMcpServer)({
424
+ transport: 'http',
425
+ port: testPort,
426
+ apiKey: 'secret-key',
427
+ });
428
+ await new Promise(resolve => setTimeout(resolve, 50));
429
+ const http = await Promise.resolve().then(() => __importStar(require('node:http')));
430
+ const response = await new Promise((resolve, reject) => {
431
+ const req = http.request(`http://127.0.0.1:${testPort}/health`, {
432
+ method: 'GET',
433
+ headers: { 'Authorization': 'Bearer secret-key' },
434
+ }, (res) => {
435
+ let data = '';
436
+ res.on('data', (chunk) => { data += chunk; });
437
+ res.on('end', () => resolve({ statusCode: res.statusCode || 0, body: data }));
438
+ });
439
+ req.on('error', reject);
440
+ req.end();
441
+ });
442
+ expect(response.statusCode).toBe(200);
443
+ await server.stop();
444
+ });
445
+ it('should allow requests with valid API key via X-API-Key header', async () => {
446
+ const server = await (0, server_1.startMcpServer)({
447
+ transport: 'http',
448
+ port: testPort,
449
+ apiKey: 'secret-key',
450
+ });
451
+ await new Promise(resolve => setTimeout(resolve, 50));
452
+ const http = await Promise.resolve().then(() => __importStar(require('node:http')));
453
+ const response = await new Promise((resolve, reject) => {
454
+ const req = http.request(`http://127.0.0.1:${testPort}/health`, {
455
+ method: 'GET',
456
+ headers: { 'X-API-Key': 'secret-key' },
457
+ }, (res) => {
458
+ let data = '';
459
+ res.on('data', (chunk) => { data += chunk; });
460
+ res.on('end', () => resolve({ statusCode: res.statusCode || 0, body: data }));
461
+ });
462
+ req.on('error', reject);
463
+ req.end();
464
+ });
465
+ expect(response.statusCode).toBe(200);
466
+ await server.stop();
467
+ });
468
+ it('should accept POST messages on /message endpoint', async () => {
469
+ const server = await (0, server_1.startMcpServer)({
470
+ transport: 'http',
471
+ port: testPort,
472
+ });
473
+ await new Promise(resolve => setTimeout(resolve, 50));
474
+ const http = await Promise.resolve().then(() => __importStar(require('node:http')));
475
+ const message = JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize' });
476
+ const response = await new Promise((resolve, reject) => {
477
+ const req = http.request(`http://127.0.0.1:${testPort}/message`, {
478
+ method: 'POST',
479
+ headers: { 'Content-Type': 'application/json' },
480
+ }, (res) => {
481
+ let data = '';
482
+ res.on('data', (chunk) => { data += chunk; });
483
+ res.on('end', () => resolve({ statusCode: res.statusCode || 0, body: data }));
484
+ });
485
+ req.on('error', reject);
486
+ req.write(message);
487
+ req.end();
488
+ });
489
+ expect(response.statusCode).toBe(202);
490
+ expect(JSON.parse(response.body).status).toBe('accepted');
491
+ await server.stop();
492
+ });
493
+ it('should reject invalid JSON on POST', async () => {
494
+ const server = await (0, server_1.startMcpServer)({
495
+ transport: 'http',
496
+ port: testPort,
497
+ });
498
+ await new Promise(resolve => setTimeout(resolve, 50));
499
+ const http = await Promise.resolve().then(() => __importStar(require('node:http')));
500
+ const response = await new Promise((resolve, reject) => {
501
+ const req = http.request(`http://127.0.0.1:${testPort}/message`, {
502
+ method: 'POST',
503
+ headers: { 'Content-Type': 'application/json' },
504
+ }, (res) => {
505
+ res.on('data', () => { });
506
+ res.on('end', () => resolve({ statusCode: res.statusCode || 0 }));
507
+ });
508
+ req.on('error', reject);
509
+ req.write('not valid json');
510
+ req.end();
511
+ });
512
+ expect(response.statusCode).toBe(400);
513
+ await server.stop();
514
+ });
515
+ it('should establish SSE connection on /sse endpoint', async () => {
516
+ const server = await (0, server_1.startMcpServer)({
517
+ transport: 'http',
518
+ port: testPort,
519
+ });
520
+ await new Promise(resolve => setTimeout(resolve, 50));
521
+ const http = await Promise.resolve().then(() => __importStar(require('node:http')));
522
+ const sseData = await new Promise((resolve, reject) => {
523
+ const req = http.get(`http://127.0.0.1:${testPort}/sse`, (res) => {
524
+ let data = '';
525
+ res.on('data', (chunk) => { data += chunk; });
526
+ setTimeout(() => resolve(data), 100);
527
+ });
528
+ req.on('error', reject);
529
+ });
530
+ expect(sseData).toContain(': connected');
531
+ await server.stop();
532
+ });
533
+ it('should return 404 for unknown routes', async () => {
534
+ const server = await (0, server_1.startMcpServer)({
535
+ transport: 'http',
536
+ port: testPort,
537
+ });
538
+ await new Promise(resolve => setTimeout(resolve, 50));
539
+ const http = await Promise.resolve().then(() => __importStar(require('node:http')));
540
+ const response = await new Promise((resolve, reject) => {
541
+ http.get(`http://127.0.0.1:${testPort}/unknown`, (res) => {
542
+ res.on('data', () => { });
543
+ res.on('end', () => resolve({ statusCode: res.statusCode || 0 }));
544
+ }).on('error', reject);
545
+ });
546
+ expect(response.statusCode).toBe(404);
547
+ await server.stop();
548
+ });
549
+ it('should close all SSE clients on server stop', async () => {
550
+ const server = await (0, server_1.startMcpServer)({
551
+ transport: 'http',
552
+ port: testPort,
553
+ });
554
+ await new Promise(resolve => setTimeout(resolve, 50));
555
+ const http = await Promise.resolve().then(() => __importStar(require('node:http')));
556
+ const sseReq = http.get(`http://127.0.0.1:${testPort}/sse`, () => { });
557
+ await server.stop();
558
+ await new Promise(resolve => setTimeout(resolve, 50));
559
+ sseReq.destroy();
560
+ });
561
+ });
562
+ });
563
+ //# sourceMappingURL=server.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.spec.js","sourceRoot":"","sources":["../../../src/core/mcp/server.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};