swagger-parser-mcp-server 2.3.4 → 3.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 (127) hide show
  1. package/README.md +81 -120
  2. package/dist/index.d.ts +0 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +266 -102
  5. package/dist/index.js.map +1 -1
  6. package/dist/schemas.d.ts +2 -283
  7. package/dist/schemas.d.ts.map +1 -1
  8. package/dist/schemas.js +0 -108
  9. package/dist/schemas.js.map +1 -1
  10. package/dist/utils/swaggerCache.d.ts +0 -4
  11. package/dist/utils/swaggerCache.d.ts.map +1 -1
  12. package/dist/utils/swaggerCache.js +0 -8
  13. package/dist/utils/swaggerCache.js.map +1 -1
  14. package/package.json +3 -11
  15. package/dist/application/snapshot/createSnapshotRuntime.d.ts +0 -2
  16. package/dist/application/snapshot/createSnapshotRuntime.d.ts.map +0 -1
  17. package/dist/application/snapshot/createSnapshotRuntime.js +0 -2
  18. package/dist/application/snapshot/createSnapshotRuntime.js.map +0 -1
  19. package/dist/application/snapshot/snapshotCaptureService.d.ts +0 -90
  20. package/dist/application/snapshot/snapshotCaptureService.d.ts.map +0 -1
  21. package/dist/application/snapshot/snapshotCaptureService.js +0 -394
  22. package/dist/application/snapshot/snapshotCaptureService.js.map +0 -1
  23. package/dist/application/snapshot/snapshotRepository.d.ts +0 -77
  24. package/dist/application/snapshot/snapshotRepository.d.ts.map +0 -1
  25. package/dist/application/snapshot/snapshotRepository.js +0 -2
  26. package/dist/application/snapshot/snapshotRepository.js.map +0 -1
  27. package/dist/domain/canonical/canonicalSnapshot.d.ts +0 -61
  28. package/dist/domain/canonical/canonicalSnapshot.d.ts.map +0 -1
  29. package/dist/domain/canonical/canonicalSnapshot.js +0 -300
  30. package/dist/domain/canonical/canonicalSnapshot.js.map +0 -1
  31. package/dist/domain/contracts/runtimeEnvironmentContract.d.ts +0 -21
  32. package/dist/domain/contracts/runtimeEnvironmentContract.d.ts.map +0 -1
  33. package/dist/domain/contracts/runtimeEnvironmentContract.js +0 -50
  34. package/dist/domain/contracts/runtimeEnvironmentContract.js.map +0 -1
  35. package/dist/domain/contracts/snapshotDiffContract.d.ts +0 -270
  36. package/dist/domain/contracts/snapshotDiffContract.d.ts.map +0 -1
  37. package/dist/domain/contracts/snapshotDiffContract.js +0 -99
  38. package/dist/domain/contracts/snapshotDiffContract.js.map +0 -1
  39. package/dist/domain/diff/endpointDiffClassifier.d.ts +0 -78
  40. package/dist/domain/diff/endpointDiffClassifier.d.ts.map +0 -1
  41. package/dist/domain/diff/endpointDiffClassifier.js +0 -317
  42. package/dist/domain/diff/endpointDiffClassifier.js.map +0 -1
  43. package/dist/http.d.ts +0 -3
  44. package/dist/http.d.ts.map +0 -1
  45. package/dist/http.js +0 -52
  46. package/dist/http.js.map +0 -1
  47. package/dist/infrastructure/postgres/migrationRunner.d.ts +0 -14
  48. package/dist/infrastructure/postgres/migrationRunner.d.ts.map +0 -1
  49. package/dist/infrastructure/postgres/migrationRunner.js +0 -161
  50. package/dist/infrastructure/postgres/migrationRunner.js.map +0 -1
  51. package/dist/infrastructure/postgres/migrations/001_snapshot_schema.sql +0 -29
  52. package/dist/infrastructure/postgres/migrations/002_snapshot_change_history.sql +0 -32
  53. package/dist/infrastructure/postgres/postgresSnapshotRepository.d.ts +0 -25
  54. package/dist/infrastructure/postgres/postgresSnapshotRepository.d.ts.map +0 -1
  55. package/dist/infrastructure/postgres/postgresSnapshotRepository.js +0 -323
  56. package/dist/infrastructure/postgres/postgresSnapshotRepository.js.map +0 -1
  57. package/dist/infrastructure/postgres/runMigrations.d.ts +0 -3
  58. package/dist/infrastructure/postgres/runMigrations.d.ts.map +0 -1
  59. package/dist/infrastructure/postgres/runMigrations.js +0 -33
  60. package/dist/infrastructure/postgres/runMigrations.js.map +0 -1
  61. package/dist/infrastructure/runtime/createSnapshotRuntime.d.ts +0 -17
  62. package/dist/infrastructure/runtime/createSnapshotRuntime.d.ts.map +0 -1
  63. package/dist/infrastructure/runtime/createSnapshotRuntime.js +0 -38
  64. package/dist/infrastructure/runtime/createSnapshotRuntime.js.map +0 -1
  65. package/dist/tests/canonicalSnapshot.test.d.ts +0 -2
  66. package/dist/tests/canonicalSnapshot.test.d.ts.map +0 -1
  67. package/dist/tests/canonicalSnapshot.test.js +0 -425
  68. package/dist/tests/canonicalSnapshot.test.js.map +0 -1
  69. package/dist/tests/endpointDiffClassifier.test.d.ts +0 -2
  70. package/dist/tests/endpointDiffClassifier.test.d.ts.map +0 -1
  71. package/dist/tests/endpointDiffClassifier.test.js +0 -633
  72. package/dist/tests/endpointDiffClassifier.test.js.map +0 -1
  73. package/dist/tests/httpSnapshotTransport.test.d.ts +0 -2
  74. package/dist/tests/httpSnapshotTransport.test.d.ts.map +0 -1
  75. package/dist/tests/httpSnapshotTransport.test.js +0 -393
  76. package/dist/tests/httpSnapshotTransport.test.js.map +0 -1
  77. package/dist/tests/indexLifecycle.test.d.ts +0 -2
  78. package/dist/tests/indexLifecycle.test.d.ts.map +0 -1
  79. package/dist/tests/indexLifecycle.test.js +0 -44
  80. package/dist/tests/indexLifecycle.test.js.map +0 -1
  81. package/dist/tests/mcpSnapshotTools.test.d.ts +0 -2
  82. package/dist/tests/mcpSnapshotTools.test.d.ts.map +0 -1
  83. package/dist/tests/mcpSnapshotTools.test.js +0 -316
  84. package/dist/tests/mcpSnapshotTools.test.js.map +0 -1
  85. package/dist/tests/postgresMigrationSmoke.test.d.ts +0 -2
  86. package/dist/tests/postgresMigrationSmoke.test.d.ts.map +0 -1
  87. package/dist/tests/postgresMigrationSmoke.test.js +0 -187
  88. package/dist/tests/postgresMigrationSmoke.test.js.map +0 -1
  89. package/dist/tests/realPostgresTestSchema.d.ts +0 -10
  90. package/dist/tests/realPostgresTestSchema.d.ts.map +0 -1
  91. package/dist/tests/realPostgresTestSchema.js +0 -73
  92. package/dist/tests/realPostgresTestSchema.js.map +0 -1
  93. package/dist/tests/snapshotCapturePipeline.test.d.ts +0 -2
  94. package/dist/tests/snapshotCapturePipeline.test.d.ts.map +0 -1
  95. package/dist/tests/snapshotCapturePipeline.test.js +0 -475
  96. package/dist/tests/snapshotCapturePipeline.test.js.map +0 -1
  97. package/dist/tests/snapshotDiffContract.test.d.ts +0 -2
  98. package/dist/tests/snapshotDiffContract.test.d.ts.map +0 -1
  99. package/dist/tests/snapshotDiffContract.test.js +0 -156
  100. package/dist/tests/snapshotDiffContract.test.js.map +0 -1
  101. package/dist/tests/snapshotPersistence.real.test.d.ts +0 -2
  102. package/dist/tests/snapshotPersistence.real.test.d.ts.map +0 -1
  103. package/dist/tests/snapshotPersistence.real.test.js +0 -310
  104. package/dist/tests/snapshotPersistence.real.test.js.map +0 -1
  105. package/dist/tests/webServerRuntime.test.d.ts +0 -2
  106. package/dist/tests/webServerRuntime.test.d.ts.map +0 -1
  107. package/dist/tests/webServerRuntime.test.js +0 -123
  108. package/dist/tests/webServerRuntime.test.js.map +0 -1
  109. package/dist/transport/createSnapshotToolRuntime.d.ts +0 -7
  110. package/dist/transport/createSnapshotToolRuntime.d.ts.map +0 -1
  111. package/dist/transport/createSnapshotToolRuntime.js +0 -40
  112. package/dist/transport/createSnapshotToolRuntime.js.map +0 -1
  113. package/dist/transport/httpSnapshotServer.d.ts +0 -11
  114. package/dist/transport/httpSnapshotServer.d.ts.map +0 -1
  115. package/dist/transport/httpSnapshotServer.js +0 -234
  116. package/dist/transport/httpSnapshotServer.js.map +0 -1
  117. package/dist/transport/mcpToolRouter.d.ts +0 -81
  118. package/dist/transport/mcpToolRouter.d.ts.map +0 -1
  119. package/dist/transport/mcpToolRouter.js +0 -416
  120. package/dist/transport/mcpToolRouter.js.map +0 -1
  121. package/dist/transport/webServerRuntime.d.ts +0 -17
  122. package/dist/transport/webServerRuntime.d.ts.map +0 -1
  123. package/dist/transport/webServerRuntime.js +0 -73
  124. package/dist/transport/webServerRuntime.js.map +0 -1
  125. package/dist/web/dashboard.css +0 -411
  126. package/dist/web/dashboard.html +0 -141
  127. package/dist/web/dashboard.js +0 -540
@@ -1,416 +0,0 @@
1
- import { zodToJsonSchema } from 'zod-to-json-schema';
2
- import { ZodError } from 'zod';
3
- import { snapshotDiffResultSchema } from '../domain/contracts/snapshotDiffContract.js';
4
- import { captureSnapshotSchema, endpointDiffDetailOutputSchema, getControllersSchema, getEndpointDiffDetailSchema, getPathDetailsSchema, getPathsByControllerSchema, getSnapshotDiffSchema, listEndpointChangeHistoryResultSchema, listEndpointChangeHistorySchema, listSnapshotsResultSchema, listSnapshotsSchema, loadSwaggerSchema, resolveSchemaSchema, } from '../schemas.js';
5
- import { SUPPORTED_HTTP_METHODS, } from '../utils/types.js';
6
- export const TOOL_NAMES = {
7
- LOAD_SWAGGER: 'load_swagger',
8
- GET_CONTROLLERS: 'get_controllers',
9
- GET_PATHS_BY_CONTROLLER: 'get_paths_by_controller',
10
- GET_PATH_DETAILS: 'get_path_details',
11
- RESOLVE_SCHEMA: 'resolve_schema',
12
- CAPTURE_SNAPSHOT: 'capture_snapshot',
13
- LIST_SNAPSHOTS: 'list_snapshots',
14
- LIST_ENDPOINT_CHANGE_HISTORY: 'list_endpoint_change_history',
15
- GET_SNAPSHOT_DIFF: 'get_snapshot_diff',
16
- GET_ENDPOINT_DIFF_DETAIL: 'get_endpoint_diff_detail',
17
- };
18
- const TOOL_NAME_VALUES = new Set(Object.values(TOOL_NAMES));
19
- class ToolExecutionError extends Error {
20
- code;
21
- statusCode;
22
- constructor(code, statusCode, message) {
23
- super(message);
24
- this.code = code;
25
- this.statusCode = statusCode;
26
- this.name = 'ToolExecutionError';
27
- }
28
- }
29
- const toolDefinitions = [
30
- {
31
- name: TOOL_NAMES.LOAD_SWAGGER,
32
- description: 'Swagger/OpenAPI JSON URL을 로드합니다',
33
- inputSchema: loadSwaggerSchema,
34
- },
35
- {
36
- name: TOOL_NAMES.GET_CONTROLLERS,
37
- description: '모든 컨트롤러(태그) 목록을 가져옵니다',
38
- inputSchema: getControllersSchema,
39
- },
40
- {
41
- name: TOOL_NAMES.GET_PATHS_BY_CONTROLLER,
42
- description: '특정 컨트롤러의 모든 path를 가져옵니다',
43
- inputSchema: getPathsByControllerSchema,
44
- },
45
- {
46
- name: TOOL_NAMES.GET_PATH_DETAILS,
47
- description: '특정 path의 상세 정보를 가져옵니다',
48
- inputSchema: getPathDetailsSchema,
49
- },
50
- {
51
- name: TOOL_NAMES.RESOLVE_SCHEMA,
52
- description: '$ref를 해결하여 실제 스키마를 가져옵니다',
53
- inputSchema: resolveSchemaSchema,
54
- },
55
- {
56
- name: TOOL_NAMES.CAPTURE_SNAPSHOT,
57
- description: '환경변수에 고정된 source에서 snapshot을 캡처하고 diff summary를 반환합니다',
58
- inputSchema: captureSnapshotSchema,
59
- },
60
- {
61
- name: TOOL_NAMES.LIST_SNAPSHOTS,
62
- description: '환경변수에 고정된 source의 snapshot 이력을 최신순으로 조회합니다',
63
- inputSchema: listSnapshotsSchema,
64
- },
65
- {
66
- name: TOOL_NAMES.GET_SNAPSHOT_DIFF,
67
- description: '두 snapshot id를 기준으로 재현 가능한 diff summary를 조회합니다',
68
- inputSchema: getSnapshotDiffSchema,
69
- },
70
- {
71
- name: TOOL_NAMES.LIST_ENDPOINT_CHANGE_HISTORY,
72
- description: '환경변수에 고정된 source의 최신 endpoint 변경 feed 또는 특정 endpoint 타임라인을 조회합니다',
73
- inputSchema: listEndpointChangeHistorySchema,
74
- },
75
- {
76
- name: TOOL_NAMES.GET_ENDPOINT_DIFF_DETAIL,
77
- description: '두 snapshot 사이 특정 endpoint(path+method)의 before/after diff detail을 조회합니다',
78
- inputSchema: getEndpointDiffDetailSchema,
79
- },
80
- ];
81
- const LEGACY_HTTP_METHODS = [...SUPPORTED_HTTP_METHODS];
82
- function isToolName(value) {
83
- return TOOL_NAME_VALUES.has(value);
84
- }
85
- function createTextResponse(payload) {
86
- const text = typeof payload === 'string' ? payload : JSON.stringify(payload, null, 2);
87
- return {
88
- content: [{ type: 'text', text }],
89
- };
90
- }
91
- function isRecord(value) {
92
- return value !== null && typeof value === 'object' && !Array.isArray(value);
93
- }
94
- function isParameterLocation(value) {
95
- return value === 'query' || value === 'header' || value === 'path' || value === 'cookie';
96
- }
97
- function formatZodError(error) {
98
- return error.issues
99
- .map(issue => {
100
- const path = issue.path.length === 0 ? 'input' : issue.path.join('.');
101
- return `${path}: ${issue.message}`;
102
- })
103
- .join('; ');
104
- }
105
- function mapKnownRequestError(error) {
106
- if (error.message.startsWith('Baseline snapshot not found') ||
107
- error.message.startsWith('Target snapshot not found') ||
108
- error.message.startsWith('Endpoint not found')) {
109
- return new ToolExecutionError('NOT_FOUND', 404, error.message);
110
- }
111
- if (/^Path [A-Z]+ .+ not found$/.test(error.message)) {
112
- return new ToolExecutionError('NOT_FOUND', 404, error.message);
113
- }
114
- if (error.message === 'Cannot replay diff across different sources.' ||
115
- error.message === 'Snapshots do not belong to the configured source.') {
116
- return new ToolExecutionError('INVALID_REQUEST', 400, error.message);
117
- }
118
- return null;
119
- }
120
- function toExecutionError(error) {
121
- if (error instanceof ToolExecutionError) {
122
- return error;
123
- }
124
- if (error instanceof ZodError) {
125
- return new ToolExecutionError('VALIDATION_ERROR', 400, formatZodError(error));
126
- }
127
- if (error instanceof Error) {
128
- const mapped = mapKnownRequestError(error);
129
- if (mapped) {
130
- return mapped;
131
- }
132
- return new ToolExecutionError('INTERNAL_ERROR', 500, error.message);
133
- }
134
- return new ToolExecutionError('INTERNAL_ERROR', 500, 'Unknown error occurred');
135
- }
136
- function assertSourceIsolation(diffResult, bootstrap) {
137
- if (diffResult.summary.projectKey !== bootstrap.project.projectKey ||
138
- diffResult.summary.sourceUrl !== bootstrap.source.swaggerUrl) {
139
- throw new ToolExecutionError('INVALID_REQUEST', 400, 'Snapshots do not belong to the configured source.');
140
- }
141
- }
142
- async function getSwagger(cache, url) {
143
- return cache.getOrLoad(url);
144
- }
145
- function asStructuredSuccess(data) {
146
- return {
147
- ok: true,
148
- statusCode: 200,
149
- data,
150
- };
151
- }
152
- async function executeKnownTool(name, args, deps) {
153
- switch (name) {
154
- case TOOL_NAMES.LOAD_SWAGGER: {
155
- const validatedArgs = loadSwaggerSchema.parse(args);
156
- const swagger = await deps.swaggerCache.load(validatedArgs.url);
157
- return {
158
- success: true,
159
- info: swagger.info,
160
- pathCount: Object.keys(swagger.paths).length,
161
- hasComponents: !!swagger.components,
162
- };
163
- }
164
- case TOOL_NAMES.GET_CONTROLLERS: {
165
- const validatedArgs = getControllersSchema.parse(args);
166
- const swagger = await getSwagger(deps.swaggerCache, validatedArgs.url);
167
- const controllers = new Set();
168
- Object.values(swagger.paths || {}).forEach(pathItem => {
169
- if (!pathItem)
170
- return;
171
- LEGACY_HTTP_METHODS.forEach(method => {
172
- const operation = pathItem[method];
173
- if (operation?.tags) {
174
- operation.tags.forEach(tag => controllers.add(tag));
175
- }
176
- });
177
- });
178
- return {
179
- controllers: Array.from(controllers),
180
- count: controllers.size,
181
- };
182
- }
183
- case TOOL_NAMES.GET_PATHS_BY_CONTROLLER: {
184
- const validatedArgs = getPathsByControllerSchema.parse(args);
185
- const swagger = await getSwagger(deps.swaggerCache, validatedArgs.url);
186
- const paths = [];
187
- Object.entries(swagger.paths || {}).forEach(([path, pathItem]) => {
188
- if (!pathItem)
189
- return;
190
- LEGACY_HTTP_METHODS.forEach(method => {
191
- const operation = pathItem[method];
192
- if (operation?.tags?.includes(validatedArgs.controller)) {
193
- paths.push({
194
- path,
195
- method,
196
- operationId: operation.operationId,
197
- summary: operation.summary,
198
- description: operation.description,
199
- });
200
- }
201
- });
202
- });
203
- return {
204
- controller: validatedArgs.controller,
205
- paths,
206
- count: paths.length,
207
- };
208
- }
209
- case TOOL_NAMES.GET_PATH_DETAILS: {
210
- const validatedArgs = getPathDetailsSchema.parse(args);
211
- const swagger = await getSwagger(deps.swaggerCache, validatedArgs.url);
212
- const pathItem = swagger.paths?.[validatedArgs.path];
213
- const operation = pathItem?.[validatedArgs.method.toLowerCase()];
214
- if (!operation || typeof operation !== 'object') {
215
- throw new ToolExecutionError('NOT_FOUND', 404, `Path ${validatedArgs.method.toUpperCase()} ${validatedArgs.path} not found`);
216
- }
217
- const parameters = operation.parameters?.map((param) => {
218
- if ('$ref' in param) {
219
- const resolvedParam = deps.schemaResolver.resolveRef(param.$ref, swagger);
220
- if (!isRecord(resolvedParam) ||
221
- typeof resolvedParam.name !== 'string' ||
222
- typeof resolvedParam.in !== 'string') {
223
- throw new ToolExecutionError('INVALID_SWAGGER', 400, `Failed to resolve parameter reference: ${param.$ref}`);
224
- }
225
- if (!isParameterLocation(resolvedParam.in)) {
226
- throw new ToolExecutionError('INVALID_SWAGGER', 400, `Unsupported parameter location: ${resolvedParam.in}`);
227
- }
228
- return {
229
- name: resolvedParam.name,
230
- in: resolvedParam.in,
231
- required: resolvedParam.required === true,
232
- description: typeof resolvedParam.description === 'string' ? resolvedParam.description : undefined,
233
- schema: deps.schemaResolver.resolveSchemaReference(resolvedParam.schema, swagger),
234
- };
235
- }
236
- if (!isParameterLocation(param.in)) {
237
- throw new ToolExecutionError('INVALID_SWAGGER', 400, `Unsupported parameter location: ${param.in}`);
238
- }
239
- return {
240
- name: param.name,
241
- in: param.in,
242
- required: param.required === true,
243
- description: param.description,
244
- schema: deps.schemaResolver.resolveSchemaReference(param.schema, swagger),
245
- };
246
- }) || [];
247
- let requestBody = null;
248
- if (operation.requestBody && 'content' in operation.requestBody && operation.requestBody.content) {
249
- const content = operation.requestBody.content;
250
- const mediaType = Object.keys(content)[0];
251
- const mediaTypeObj = content[mediaType];
252
- if (mediaTypeObj?.schema) {
253
- requestBody = {
254
- required: operation.requestBody.required,
255
- mediaType,
256
- schema: deps.schemaResolver.resolveSchemaReference(mediaTypeObj.schema, swagger),
257
- };
258
- }
259
- }
260
- const responses = {};
261
- if (operation.responses) {
262
- Object.entries(operation.responses).forEach(([statusCode, response]) => {
263
- if (response && typeof response === 'object' && 'content' in response && response.content) {
264
- const content = response.content;
265
- const mediaType = Object.keys(content)[0];
266
- const mediaTypeObj = content[mediaType];
267
- if (mediaTypeObj?.schema) {
268
- responses[statusCode] = {
269
- description: response.description,
270
- mediaType,
271
- schema: deps.schemaResolver.resolveSchemaReference(mediaTypeObj.schema, swagger),
272
- };
273
- }
274
- }
275
- else if (response && typeof response === 'object' && 'description' in response) {
276
- responses[statusCode] = {
277
- description: response.description,
278
- };
279
- }
280
- });
281
- }
282
- const pathDetails = {
283
- path: validatedArgs.path,
284
- method: validatedArgs.method.toUpperCase(),
285
- operationId: operation.operationId,
286
- summary: operation.summary,
287
- description: operation.description,
288
- tags: operation.tags,
289
- parameters,
290
- requestBody: requestBody || undefined,
291
- responses,
292
- };
293
- return pathDetails;
294
- }
295
- case TOOL_NAMES.RESOLVE_SCHEMA: {
296
- const validatedArgs = resolveSchemaSchema.parse(args);
297
- const swagger = await getSwagger(deps.swaggerCache, validatedArgs.url);
298
- const resolved = deps.schemaResolver.resolveRef(validatedArgs.ref, swagger);
299
- return {
300
- ref: validatedArgs.ref,
301
- resolved,
302
- };
303
- }
304
- case TOOL_NAMES.CAPTURE_SNAPSHOT: {
305
- captureSnapshotSchema.parse(args ?? {});
306
- const runtime = await deps.runtimeProvider();
307
- const captureResult = await runtime.service.capture(runtime.environment);
308
- return snapshotDiffResultSchema.parse(captureResult.diffResult);
309
- }
310
- case TOOL_NAMES.LIST_SNAPSHOTS: {
311
- const validatedArgs = listSnapshotsSchema.parse(args ?? {});
312
- const runtime = await deps.runtimeProvider();
313
- const bootstrap = await runtime.service.bootstrap(runtime.environment);
314
- const snapshots = await runtime.service.listSnapshotsBySource(bootstrap.source.id, validatedArgs.limit ?? 50);
315
- return listSnapshotsResultSchema.parse({
316
- projectKey: bootstrap.project.projectKey,
317
- sourceUrl: bootstrap.source.swaggerUrl,
318
- snapshots,
319
- });
320
- }
321
- case TOOL_NAMES.LIST_ENDPOINT_CHANGE_HISTORY: {
322
- const validatedArgs = listEndpointChangeHistorySchema.parse(args ?? {});
323
- const runtime = await deps.runtimeProvider();
324
- const bootstrap = await runtime.service.bootstrap(runtime.environment);
325
- const events = await runtime.service.listEndpointChangeHistory({
326
- sourceId: bootstrap.source.id,
327
- limit: validatedArgs.limit ?? 50,
328
- path: validatedArgs.path,
329
- method: validatedArgs.method,
330
- });
331
- return listEndpointChangeHistoryResultSchema.parse({
332
- projectKey: bootstrap.project.projectKey,
333
- sourceUrl: bootstrap.source.swaggerUrl,
334
- filter: {
335
- path: validatedArgs.path ?? null,
336
- method: validatedArgs.method ?? null,
337
- },
338
- events,
339
- });
340
- }
341
- case TOOL_NAMES.GET_SNAPSHOT_DIFF: {
342
- const validatedArgs = getSnapshotDiffSchema.parse(args);
343
- const runtime = await deps.runtimeProvider();
344
- const bootstrap = await runtime.service.bootstrap(runtime.environment);
345
- const diffResult = snapshotDiffResultSchema.parse(await runtime.service.replayDiff(validatedArgs));
346
- assertSourceIsolation(diffResult, bootstrap);
347
- return diffResult;
348
- }
349
- case TOOL_NAMES.GET_ENDPOINT_DIFF_DETAIL: {
350
- const validatedArgs = getEndpointDiffDetailSchema.parse(args);
351
- const runtime = await deps.runtimeProvider();
352
- const bootstrap = await runtime.service.bootstrap(runtime.environment);
353
- const diffResult = snapshotDiffResultSchema.parse(await runtime.service.replayDiff({
354
- baselineSnapshotId: validatedArgs.baselineSnapshotId,
355
- targetSnapshotId: validatedArgs.targetSnapshotId,
356
- }));
357
- assertSourceIsolation(diffResult, bootstrap);
358
- return endpointDiffDetailOutputSchema.parse(await runtime.service.getEndpointDiffDetail({
359
- baselineSnapshotId: validatedArgs.baselineSnapshotId,
360
- targetSnapshotId: validatedArgs.targetSnapshotId,
361
- path: validatedArgs.path,
362
- method: validatedArgs.method,
363
- }));
364
- }
365
- default: {
366
- const _exhaustiveCheck = name;
367
- return _exhaustiveCheck;
368
- }
369
- }
370
- }
371
- export function createMcpToolRouter(deps) {
372
- const executeStructured = async (name, args) => {
373
- if (!isToolName(name)) {
374
- return {
375
- ok: false,
376
- statusCode: 404,
377
- error: {
378
- code: 'UNKNOWN_TOOL',
379
- message: `Unknown tool: ${name}`,
380
- },
381
- };
382
- }
383
- try {
384
- const data = await executeKnownTool(name, args, deps);
385
- return asStructuredSuccess(data);
386
- }
387
- catch (error) {
388
- const executionError = toExecutionError(error);
389
- return {
390
- ok: false,
391
- statusCode: executionError.statusCode,
392
- error: {
393
- code: executionError.code,
394
- message: executionError.message,
395
- },
396
- };
397
- }
398
- };
399
- const execute = async (name, args) => {
400
- const result = await executeStructured(name, args);
401
- if (result.ok) {
402
- return createTextResponse(result.data);
403
- }
404
- return createTextResponse(`Error: ${result.error.message}`);
405
- };
406
- return {
407
- listTools: () => toolDefinitions.map(tool => ({
408
- name: tool.name,
409
- description: tool.description,
410
- inputSchema: zodToJsonSchema(tool.inputSchema),
411
- })),
412
- execute,
413
- executeStructured,
414
- };
415
- }
416
- //# sourceMappingURL=mcpToolRouter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcpToolRouter.js","sourceRoot":"","sources":["../../src/transport/mcpToolRouter.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { createMcpToolRouter } from './mcpToolRouter.js';
2
- type ToolRouter = Pick<ReturnType<typeof createMcpToolRouter>, 'executeStructured'>;
3
- export interface StartSnapshotWebServerOptions {
4
- env: NodeJS.ProcessEnv;
5
- toolRouter: ToolRouter;
6
- forceEnable?: boolean;
7
- }
8
- export interface SnapshotWebServerHandle {
9
- enabled: boolean;
10
- host: string;
11
- port: number;
12
- close(): Promise<void>;
13
- }
14
- export declare function isSnapshotWebEnabled(env: NodeJS.ProcessEnv): boolean;
15
- export declare function startSnapshotWebServer(options: StartSnapshotWebServerOptions): Promise<SnapshotWebServerHandle>;
16
- export {};
17
- //# sourceMappingURL=webServerRuntime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webServerRuntime.d.ts","sourceRoot":"","sources":["../../src/transport/webServerRuntime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAIpF,MAAM,WAAW,6BAA6B;IAC5C,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAOpE;AAkDD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAuBrH"}
@@ -1,73 +0,0 @@
1
- import { createHttpSnapshotServer } from './httpSnapshotServer.js';
2
- const WEB_DISABLE_VALUES = new Set(['false', '0', 'off', 'no']);
3
- export function isSnapshotWebEnabled(env) {
4
- const raw = env.SNAPSHOT_WEB_ENABLED;
5
- if (!raw) {
6
- return true;
7
- }
8
- return !WEB_DISABLE_VALUES.has(raw.trim().toLowerCase());
9
- }
10
- function parsePort(value, fallback) {
11
- if (!value) {
12
- return fallback;
13
- }
14
- const parsed = Number(value);
15
- if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65535) {
16
- return fallback;
17
- }
18
- return parsed;
19
- }
20
- async function closeServer(server) {
21
- if (!server.listening) {
22
- return;
23
- }
24
- await new Promise((resolve, reject) => {
25
- server.close(error => {
26
- if (error) {
27
- reject(error);
28
- return;
29
- }
30
- resolve();
31
- });
32
- });
33
- }
34
- async function listenServer(server, host, port) {
35
- await new Promise((resolve, reject) => {
36
- const onError = (error) => {
37
- server.off('error', onError);
38
- reject(error);
39
- };
40
- server.once('error', onError);
41
- server.listen(port, host, () => {
42
- server.off('error', onError);
43
- resolve();
44
- });
45
- });
46
- const address = server.address();
47
- if (!address || typeof address === 'string') {
48
- return port;
49
- }
50
- return address.port;
51
- }
52
- export async function startSnapshotWebServer(options) {
53
- const host = options.env.HTTP_HOST ?? '0.0.0.0';
54
- const requestedPort = parsePort(options.env.HTTP_PORT ?? options.env.PORT, 3100);
55
- const enabled = options.forceEnable ? true : isSnapshotWebEnabled(options.env);
56
- if (!enabled) {
57
- return {
58
- enabled: false,
59
- host,
60
- port: requestedPort,
61
- close: () => Promise.resolve(),
62
- };
63
- }
64
- const server = createHttpSnapshotServer({ toolRouter: options.toolRouter });
65
- const actualPort = await listenServer(server, host, requestedPort);
66
- return {
67
- enabled: true,
68
- host,
69
- port: actualPort,
70
- close: () => closeServer(server),
71
- };
72
- }
73
- //# sourceMappingURL=webServerRuntime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webServerRuntime.js","sourceRoot":"","sources":["../../src/transport/webServerRuntime.ts"],"names":[],"mappings":"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"}