callman-mcp 0.7.0 → 0.8.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 (98) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +27 -7
  3. package/dist/client/api.d.ts +59 -1
  4. package/dist/client/api.d.ts.map +1 -1
  5. package/dist/client/api.js +67 -0
  6. package/dist/client/api.js.map +1 -1
  7. package/dist/client/errors.d.ts.map +1 -1
  8. package/dist/client/errors.js +18 -11
  9. package/dist/client/errors.js.map +1 -1
  10. package/dist/client/types.d.ts +105 -0
  11. package/dist/client/types.d.ts.map +1 -1
  12. package/dist/config.d.ts +2 -0
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +5 -1
  15. package/dist/config.js.map +1 -1
  16. package/dist/context.d.ts +8 -0
  17. package/dist/context.d.ts.map +1 -1
  18. package/dist/context.js +1 -0
  19. package/dist/context.js.map +1 -1
  20. package/dist/domain/requestShape.d.ts +4 -4
  21. package/dist/index.js +10 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/resources/docs/mocks.d.ts +2 -0
  24. package/dist/resources/docs/mocks.d.ts.map +1 -0
  25. package/dist/resources/docs/mocks.js +210 -0
  26. package/dist/resources/docs/mocks.js.map +1 -0
  27. package/dist/resources/docs/overview.d.ts +1 -1
  28. package/dist/resources/docs/overview.d.ts.map +1 -1
  29. package/dist/resources/docs/overview.js +7 -1
  30. package/dist/resources/docs/overview.js.map +1 -1
  31. package/dist/resources/generated/aiPacks.d.ts +1 -1
  32. package/dist/resources/generated/aiPacks.js +2 -2
  33. package/dist/resources/index.d.ts.map +1 -1
  34. package/dist/resources/index.js +2 -0
  35. package/dist/resources/index.js.map +1 -1
  36. package/dist/run/executeCollection.d.ts.map +1 -1
  37. package/dist/run/executeCollection.js +5 -1
  38. package/dist/run/executeCollection.js.map +1 -1
  39. package/dist/run/loadBundle.d.ts.map +1 -1
  40. package/dist/run/loadBundle.js +49 -2
  41. package/dist/run/loadBundle.js.map +1 -1
  42. package/dist/run/summarize.d.ts +28 -4
  43. package/dist/run/summarize.d.ts.map +1 -1
  44. package/dist/run/summarize.js +19 -1
  45. package/dist/run/summarize.js.map +1 -1
  46. package/dist/run/types.d.ts +2 -1
  47. package/dist/run/types.d.ts.map +1 -1
  48. package/dist/server.d.ts +6 -1
  49. package/dist/server.d.ts.map +1 -1
  50. package/dist/server.js +16 -4
  51. package/dist/server.js.map +1 -1
  52. package/dist/tools/catalog.d.ts +1 -1
  53. package/dist/tools/catalog.d.ts.map +1 -1
  54. package/dist/tools/catalog.js +18 -0
  55. package/dist/tools/catalog.js.map +1 -1
  56. package/dist/tools/index.d.ts +9 -2
  57. package/dist/tools/index.d.ts.map +1 -1
  58. package/dist/tools/index.js +27 -3
  59. package/dist/tools/index.js.map +1 -1
  60. package/dist/tools/meta.d.ts.map +1 -1
  61. package/dist/tools/meta.js +29 -2
  62. package/dist/tools/meta.js.map +1 -1
  63. package/dist/tools/mockShared.d.ts +983 -0
  64. package/dist/tools/mockShared.d.ts.map +1 -0
  65. package/dist/tools/mockShared.js +387 -0
  66. package/dist/tools/mockShared.js.map +1 -0
  67. package/dist/tools/mocks.d.ts +4 -0
  68. package/dist/tools/mocks.d.ts.map +1 -0
  69. package/dist/tools/mocks.js +331 -0
  70. package/dist/tools/mocks.js.map +1 -0
  71. package/dist/tools/mocksLocal.d.ts +24 -0
  72. package/dist/tools/mocksLocal.d.ts.map +1 -0
  73. package/dist/tools/mocksLocal.js +169 -0
  74. package/dist/tools/mocksLocal.js.map +1 -0
  75. package/dist/tools/run.d.ts +0 -1
  76. package/dist/tools/run.d.ts.map +1 -1
  77. package/dist/tools/run.js +7 -26
  78. package/dist/tools/run.js.map +1 -1
  79. package/dist-cjs/client/api.js +67 -0
  80. package/dist-cjs/client/errors.js +18 -11
  81. package/dist-cjs/config.js +5 -1
  82. package/dist-cjs/context.js +1 -0
  83. package/dist-cjs/resources/docs/mocks.js +212 -0
  84. package/dist-cjs/resources/docs/overview.js +7 -1
  85. package/dist-cjs/resources/generated/aiPacks.js +2 -2
  86. package/dist-cjs/resources/index.js +2 -0
  87. package/dist-cjs/run/executeCollection.js +5 -1
  88. package/dist-cjs/run/loadBundle.js +49 -2
  89. package/dist-cjs/run/summarize.js +19 -1
  90. package/dist-cjs/server.js +16 -4
  91. package/dist-cjs/tools/catalog.js +18 -0
  92. package/dist-cjs/tools/index.js +30 -6
  93. package/dist-cjs/tools/meta.js +28 -1
  94. package/dist-cjs/tools/mockShared.js +414 -0
  95. package/dist-cjs/tools/mocks.js +334 -0
  96. package/dist-cjs/tools/mocksLocal.js +179 -0
  97. package/dist-cjs/tools/run.js +7 -26
  98. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockShared.d.ts","sourceRoot":"","sources":["../../src/tools/mockShared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,387 @@
1
+ import { z } from "zod";
2
+ import { ToolInputError } from "../client/errors.js";
3
+ import { resolveRef } from "../domain/resolve.js";
4
+ import { normalizeName } from "../lib/ids.js";
5
+ import { unknownKeysErrorMap } from "../lib/strict.js";
6
+ import { jsonPreview, LIMITS, safeStringify } from "../lib/truncate.js";
7
+ import { findInWorkspaces } from "./lookups.js";
8
+ import { refArg } from "./shared.js";
9
+ // Shared by the mock tools: the route input schema (typed, but the backend
10
+ // stays the validator), conversion to the server's route body, the shape of a
11
+ // mock as the model reads it, reference resolution (mock by name / slug / id,
12
+ // route by id / "METHOD /path" / name) and the ready-to-run curl lines.
13
+ export const MOCK_METHODS = ["GET", "POST", "PUT", "DELETE", "PATCH", "ANY"];
14
+ const strictObject = (shape, where) => z.object(shape, { errorMap: unknownKeysErrorMap("field", Object.keys(shape), where) }).strict();
15
+ const statusCode = z.coerce.number().int().min(100).max(599);
16
+ const headersSchema = z.record(z.string().max(8192));
17
+ // ── route input ─────────────────────────────────────────────────────────
18
+ const delaySchema = z.discriminatedUnion("mode", [
19
+ strictObject({ mode: z.literal("none") }, "delay"),
20
+ strictObject({ mode: z.literal("fixed"), ms: z.number().int().min(0).max(60_000) }, "delay"),
21
+ strictObject({ mode: z.literal("random"), minMs: z.number().int().min(0).max(60_000), maxMs: z.number().int().min(0).max(60_000) }, "delay"),
22
+ ]);
23
+ const staticOrTemplateResponse = (type) => strictObject({
24
+ type: z.literal(type),
25
+ statusCode,
26
+ headers: headersSchema.optional(),
27
+ body: z.unknown().optional().describe(type === "template" ? 'JSON value; every string may contain {{request.params.id}}, {{request.query.x}}, {{request.body.x}}, {{state.key}}, {{faker.email}}, {{random.int(1,9)}}, {{now}} …' : "Any JSON value (object, array, string, number, null). Omit for an empty body."),
28
+ }, `${type} response`);
29
+ const builderResponse = strictObject({
30
+ type: z.literal("builder"),
31
+ preset: z.enum(["list", "detail", "create", "update", "delete", "echo", "custom"]),
32
+ config: z.record(z.unknown()).describe("The preset's config; config.preset must equal preset. See callman://docs/mocks"),
33
+ }, "builder response");
34
+ export const mockResponseSchema = z.discriminatedUnion("type", [staticOrTemplateResponse("static"), staticOrTemplateResponse("template"), builderResponse]);
35
+ const variantSchema = strictObject({
36
+ variantId: z.string().max(64).optional(),
37
+ priority: z.number().int().min(0).max(10_000).describe("Lower runs first; the first matching variant wins"),
38
+ condition: strictObject({
39
+ type: z.enum(["all", "any"]),
40
+ rules: z
41
+ .array(strictObject({
42
+ field: z.string().min(1).max(200).describe("headers.<name>, params.<name>, query.<name> or body.<dotted.path>"),
43
+ operator: z.enum(["exists", "not-exists", "equals", "not-equals", "contains", "starts-with", "matches"]),
44
+ value: z.string().max(2000).optional(),
45
+ }, "condition rule"))
46
+ .min(1)
47
+ .max(20),
48
+ }, "condition"),
49
+ response: mockResponseSchema,
50
+ }, "variant");
51
+ const requestValidationSchema = strictObject({ mode: z.enum(["any", "schema"]), schema: z.unknown().optional().describe("JSON Schema (draft-07) the request body must match when mode is schema; a mismatch answers 400") }, "requestValidation");
52
+ const routeShape = {
53
+ method: z.enum(MOCK_METHODS),
54
+ path: z.string().min(1).max(256).describe("Starts with /; :name segments are path parameters, a trailing /* is a catch-all. Example: /api/users/:id"),
55
+ name: z.string().max(120).optional(),
56
+ response: mockResponseSchema.optional().describe("The response. Shorthand instead: statusCode / headers / body (a static response)"),
57
+ statusCode: statusCode.optional().describe("Shorthand for a static response (default 200)"),
58
+ headers: headersSchema.optional().describe("Shorthand: static response headers"),
59
+ body: z.unknown().optional().describe("Shorthand: static response body (any JSON value; on target desktop a string is sent as is and anything else as formatted JSON)"),
60
+ variants: z.array(variantSchema).max(20).optional().describe("Server mocks only: other responses chosen by a condition on the request"),
61
+ delay: delaySchema.optional().describe("Wait before answering (server: ≤ 60 s, desktop: ≤ 30 s)"),
62
+ requestValidation: requestValidationSchema.nullish().describe("Server mocks only: validate the request body against a JSON Schema"),
63
+ };
64
+ export const mockRouteInputSchema = strictObject(routeShape, "route").describe("One mock route");
65
+ export const mockRoutePatchSchema = mockRouteInputSchema.partial().describe("The fields to change; the rest of the route is kept");
66
+ // ── path / response validation (early, readable errors) ────────────────
67
+ const PATH_PATTERN = /^\/[A-Za-z0-9/_\-:*.]*$/;
68
+ export const assertRoutePath = (path, where) => {
69
+ const problem = !PATH_PATTERN.test(path)
70
+ ? "must start with / and use only letters, digits and / _ - : * ."
71
+ : path.includes("..")
72
+ ? "may not contain '..'"
73
+ : path.split("/").some((segment) => segment.startsWith(":") && !/^:[A-Za-z_][A-Za-z0-9_]*$/.test(segment))
74
+ ? "path parameters are :name with letters, digits or underscore (e.g. :userId)"
75
+ : null;
76
+ if (problem)
77
+ throw new ToolInputError("MOCK_ROUTE_PATH_INVALID", `${where}: path "${path}" ${problem}.`, { path });
78
+ };
79
+ const SHORTHAND = ["statusCode", "headers", "body"];
80
+ const hasShorthand = (route) => SHORTHAND.some((key) => route[key] !== undefined);
81
+ // A route as the server's createRouteSchema takes it.
82
+ export const toServerRoute = (input, where) => {
83
+ assertRoutePath(input.path, where);
84
+ if (input.response && hasShorthand(input)) {
85
+ throw new ToolInputError("MOCK_ROUTE_RESPONSE_CONFLICT", `${where}: give either \`response\` or the shorthand statusCode / headers / body, not both.`);
86
+ }
87
+ const response = input.response ?? { type: "static", statusCode: input.statusCode ?? 200, headers: input.headers ?? {}, ...(input.body !== undefined ? { body: input.body } : {}) };
88
+ return {
89
+ method: input.method,
90
+ path: input.path,
91
+ ...(input.name ? { name: input.name } : {}),
92
+ response,
93
+ ...(input.variants ? { variants: input.variants } : {}),
94
+ behavior: { delay: input.delay ?? { mode: "none" } },
95
+ ...(input.requestValidation ? { requestValidation: input.requestValidation } : {}),
96
+ };
97
+ };
98
+ // A patch as the server's updateRouteSchema takes it. Shorthand fields are
99
+ // merged over the route's current static/template response so that
100
+ // `{ statusCode: 404 }` alone keeps the body.
101
+ export const toServerRoutePatch = (patch, current, where) => {
102
+ if (patch.path !== undefined)
103
+ assertRoutePath(patch.path, where);
104
+ if (patch.response && hasShorthand(patch)) {
105
+ throw new ToolInputError("MOCK_ROUTE_RESPONSE_CONFLICT", `${where}: give either \`response\` or the shorthand statusCode / headers / body, not both.`);
106
+ }
107
+ const body = {};
108
+ if (patch.method !== undefined)
109
+ body.method = patch.method;
110
+ if (patch.path !== undefined)
111
+ body.path = patch.path;
112
+ if (patch.name !== undefined)
113
+ body.name = patch.name;
114
+ if (patch.response)
115
+ body.response = patch.response;
116
+ else if (hasShorthand(patch)) {
117
+ const base = current.response.type === "static" || current.response.type === "template" ? current.response : { type: "static", statusCode: 200, headers: {} };
118
+ if (current.response.type === "builder") {
119
+ throw new ToolInputError("MOCK_ROUTE_RESPONSE_CONFLICT", `${where}: this route uses a builder response; pass a complete \`response\` to replace it.`);
120
+ }
121
+ body.response = { ...base, ...(patch.statusCode !== undefined ? { statusCode: patch.statusCode } : {}), ...(patch.headers !== undefined ? { headers: patch.headers } : {}), ...(patch.body !== undefined ? { body: patch.body } : {}) };
122
+ }
123
+ if (patch.variants !== undefined)
124
+ body.variants = patch.variants;
125
+ if (patch.delay !== undefined)
126
+ body.behavior = { delay: patch.delay };
127
+ if (patch.requestValidation !== undefined)
128
+ body.requestValidation = patch.requestValidation ?? { mode: "any" };
129
+ if (Object.keys(body).length === 0)
130
+ throw new ToolInputError("NOTHING_TO_UPDATE", `${where}: no field to change was given.`);
131
+ return body;
132
+ };
133
+ export const duplicateRoutes = (routes) => {
134
+ const seen = new Set();
135
+ const duplicates = [];
136
+ for (const route of routes) {
137
+ const key = `${route.method} ${route.path}`;
138
+ if (seen.has(key))
139
+ duplicates.push(key);
140
+ seen.add(key);
141
+ }
142
+ return duplicates;
143
+ };
144
+ // ── views ───────────────────────────────────────────────────────────────
145
+ // The summary rows of GET /api/mocks come without routes and state, so their
146
+ // routeCount / stateSizeBytes are always 0 — a list shows neither (get_mock does).
147
+ export const mockListView = (mock) => ({
148
+ mockId: mock.mockId,
149
+ id: mock.id,
150
+ name: mock.name,
151
+ ...(mock.description ? { description: mock.description } : {}),
152
+ auth: mock.auth.type,
153
+ publicUrl: mock.publicUrl,
154
+ requestCount: mock.requestCount,
155
+ expiresAt: mock.expiresAt,
156
+ expired: Date.parse(mock.expiresAt) < Date.now(),
157
+ createdAt: mock.createdAt,
158
+ });
159
+ export const mockSummaryView = (mock) => ({
160
+ ...mockListView(mock),
161
+ routeCount: mock.routeCount,
162
+ stateSizeBytes: mock.stateSizeBytes,
163
+ });
164
+ // The server announces its own public address (MOCK_PUBLIC_BASE_URL); an
165
+ // installation that left it at the default announces a host nobody can reach.
166
+ // When it differs from the API address we were configured with, offer the
167
+ // address that certainly answers from here.
168
+ export const alternativeUrl = (apiUrl, mock) => {
169
+ try {
170
+ if (new URL(mock.publicUrl).origin === new URL(apiUrl).origin)
171
+ return {};
172
+ }
173
+ catch {
174
+ return {};
175
+ }
176
+ return { alternativeUrl: `${apiUrl.replace(/\/+$/, "")}/mock/${mock.mockId}`, urlNote: "publicUrl is the address the server announces; if it does not answer from here, the same mock is served at alternativeUrl (the API address)." };
177
+ };
178
+ export const routeView = (route) => ({
179
+ routeId: route.routeId,
180
+ method: route.method,
181
+ path: route.path,
182
+ ...(route.name ? { name: route.name } : {}),
183
+ response: route.response,
184
+ ...(route.variants?.length ? { variants: route.variants } : {}),
185
+ delay: route.behavior?.delay ?? { mode: "none" },
186
+ ...(route.requestValidation ? { requestValidation: route.requestValidation } : {}),
187
+ });
188
+ const routeBrief = (route) => ({
189
+ routeId: route.routeId,
190
+ method: route.method,
191
+ path: route.path,
192
+ ...(route.name ? { name: route.name } : {}),
193
+ responseType: route.response?.type,
194
+ ...(typeof route.response?.statusCode === "number" ? { statusCode: route.response.statusCode } : {}),
195
+ ...(route.variants?.length ? { variants: route.variants.length } : {}),
196
+ });
197
+ const ROUTES_INLINE_LIMIT = 128 * 1024;
198
+ // Full routes while they fit, one line per route beyond that.
199
+ export const routesView = (routes) => {
200
+ const full = routes.map(routeView);
201
+ if (safeStringify(full).length <= ROUTES_INLINE_LIMIT)
202
+ return { routes: full };
203
+ return { routes: routes.map(routeBrief), routesTruncated: true, routesNote: "Routes are shown without their response bodies (too large); read one with get_mock { route }… or change it with update_mock_route." };
204
+ };
205
+ export const mockDetailView = (mock, apiUrl, auth) => ({
206
+ ...mockSummaryView(mock),
207
+ ...alternativeUrl(apiUrl, mock),
208
+ auth,
209
+ limits: mock.limits,
210
+ ...routesView(mock.routes ?? []),
211
+ });
212
+ // ── curl ────────────────────────────────────────────────────────────────
213
+ const shellQuote = (value) => `'${value.replace(/'/g, "'\\''")}'`;
214
+ const sampleValue = (schema) => {
215
+ const type = schema?.type;
216
+ switch (Array.isArray(type) ? type[0] : type) {
217
+ case "number":
218
+ case "integer":
219
+ return 1;
220
+ case "boolean":
221
+ return true;
222
+ case "array":
223
+ return [];
224
+ case "object":
225
+ return sampleObject(schema);
226
+ default:
227
+ return "example";
228
+ }
229
+ };
230
+ const sampleObject = (schema) => {
231
+ const properties = schema?.properties ?? {};
232
+ const required = schema?.required;
233
+ const keys = Array.isArray(required) ? required.filter((key) => typeof key === "string") : Object.keys(properties).slice(0, 5);
234
+ return Object.fromEntries(keys.map((key) => [key, sampleValue(properties[key])]));
235
+ };
236
+ // A request body that the route will accept: from its JSON Schema gate, or a
237
+ // create builder's required fields; `{}` otherwise.
238
+ const sampleBody = (route) => {
239
+ if (route.requestValidation?.mode === "schema")
240
+ return sampleObject(route.requestValidation.schema);
241
+ const config = route.response?.type === "builder" ? route.response.config : undefined;
242
+ if (config?.preset === "create" && Array.isArray(config.requiredFields))
243
+ return Object.fromEntries(config.requiredFields.map((field) => [String(field), "example"]));
244
+ return {};
245
+ };
246
+ export const sampleRoutePath = (path) => path
247
+ .split("/")
248
+ .map((segment) => (segment.startsWith(":") ? "1" : segment === "*" || segment === "**" ? "example" : segment))
249
+ .join("/");
250
+ export const curlLine = (baseUrl, route, token) => {
251
+ const method = route.method === "ANY" ? "GET" : route.method;
252
+ const parts = ["curl -sS", `-X ${method}`];
253
+ if (token !== undefined)
254
+ parts.push(`-H ${shellQuote(`X-Mock-Token: ${token ?? "<token>"}`)}`);
255
+ if (method === "POST" || method === "PUT" || method === "PATCH")
256
+ parts.push("-H 'Content-Type: application/json'", `-d ${shellQuote(safeStringify(sampleBody(route)))}`);
257
+ parts.push(shellQuote(`${baseUrl.replace(/\/+$/, "")}${sampleRoutePath(route.path)}`));
258
+ return parts.join(" ");
259
+ };
260
+ export const mockRefArg = (what) => refArg(what, "(its name, slug or id)");
261
+ export const targetArg = z
262
+ .enum(["server", "desktop"])
263
+ .optional()
264
+ .describe('"server" (default): a mock on the Callman server with a public URL. "desktop": a local mock inside the user\'s Callman desktop app, reachable at http://127.0.0.1:<port> on their computer only (needs the app open with "Let AI tools manage local mock APIs on this computer" on).');
265
+ // An argument that belongs to the other target is an error, not a silent no-op.
266
+ export const requireTarget = (target, args, only, hint) => {
267
+ const given = Object.entries(args).filter(([, value]) => value !== undefined).map(([key]) => key);
268
+ if (given.length > 0 && target !== only) {
269
+ throw new ToolInputError("ARG_TARGET_MISMATCH", `${given.join(", ")} ${given.length === 1 ? "applies" : "apply"} to ${only} mocks only — ${hint}`, { target });
270
+ }
271
+ };
272
+ export const loadMocks = (ctx, ws) => ctx.cache.getOrSet(`mocks:${ws}`, () => ctx.api.listAllMocks(ws));
273
+ // `id` of a MockRef is the slug (mockId) — what every /api/mocks route takes.
274
+ export const resolveMock = async (ctx, ws, ref, options = {}) => {
275
+ const mocks = await loadMocks(ctx, ws);
276
+ const items = mocks.map((summary) => ({ id: summary.mockId, name: summary.name, summary }));
277
+ return resolveRef("mock", ref, items, { aliases: (item) => [item.summary.id], describe: (item) => ({ publicUrl: item.summary.publicUrl }), ...options });
278
+ };
279
+ export const findMock = (ctx, workspace, ref, options = {}) => findInWorkspaces(ctx, workspace, "mock", ref, (ws) => resolveMock(ctx, ws.id, ref, options), {
280
+ matchOf: (resolved) => resolved.matched,
281
+ describe: (resolved) => ({ mockId: resolved.item.id, name: resolved.item.name }),
282
+ });
283
+ // A route of a mock: routeId, "METHOD /path", the path alone (when unique) or its name.
284
+ export const resolveRoute = (mock, ref) => {
285
+ const routes = mock.routes ?? [];
286
+ const reference = ref.trim();
287
+ const candidates = () => routes.slice(0, 20).map((route) => ({ routeId: route.routeId, method: route.method, path: route.path, ...(route.name ? { name: route.name } : {}) }));
288
+ const byId = routes.find((route) => route.routeId === reference);
289
+ if (byId)
290
+ return byId;
291
+ const combined = /^(GET|POST|PUT|DELETE|PATCH|ANY)\s+(\S+)$/i.exec(reference);
292
+ if (combined) {
293
+ const hit = routes.find((route) => route.method === combined[1].toUpperCase() && route.path === combined[2]);
294
+ if (hit)
295
+ return hit;
296
+ }
297
+ else {
298
+ const byPath = routes.filter((route) => route.path === reference);
299
+ if (byPath.length === 1)
300
+ return byPath[0];
301
+ if (byPath.length > 1)
302
+ throw new ToolInputError("REF_AMBIGUOUS", `Several routes use the path "${reference}" — say "METHOD ${reference}" or pass the routeId.`, { kind: "route", ref: reference, candidates: byPath.map((route) => ({ routeId: route.routeId, method: route.method, path: route.path })) });
303
+ const byName = routes.filter((route) => route.name && normalizeName(route.name) === normalizeName(reference));
304
+ if (byName.length === 1)
305
+ return byName[0];
306
+ }
307
+ throw new ToolInputError("REF_NOT_FOUND", `No route of mock "${mock.name}" matches "${reference}".`, { kind: "route", ref: reference, candidates: candidates() });
308
+ };
309
+ // ── local mocks (the desktop app's own mock servers) ───────────────────
310
+ export const LOCAL_BODY_MAX_BYTES = 256 * 1024;
311
+ export const LOCAL_DELAY_MAX_MS = 30_000;
312
+ const localUnsupported = (where, what) => new ToolInputError("LOCAL_MOCK_FEATURE_UNSUPPORTED", `${where}: local mocks on the desktop answer with static responses only — ${what} is not available.`, {
313
+ hint: 'Use target: "server" for templates, builders, variants, request validation and state, or describe the response as a static one.',
314
+ });
315
+ // A route as the desktop's local mock manager stores it.
316
+ export const toLocalRoute = (input, where) => {
317
+ assertRoutePath(input.path, where);
318
+ if (input.variants?.length)
319
+ throw localUnsupported(where, "variants");
320
+ if (input.requestValidation)
321
+ throw localUnsupported(where, "requestValidation");
322
+ if (input.response && hasShorthand(input)) {
323
+ throw new ToolInputError("MOCK_ROUTE_RESPONSE_CONFLICT", `${where}: give either \`response\` or the shorthand statusCode / headers / body, not both.`);
324
+ }
325
+ if (input.response && input.response.type !== "static")
326
+ throw localUnsupported(where, `a ${input.response.type} response`);
327
+ const source = input.response ?? { statusCode: input.statusCode ?? 200, headers: input.headers, body: input.body };
328
+ const body = source.body === undefined || source.body === null ? "" : typeof source.body === "string" ? source.body : JSON.stringify(source.body, null, 2);
329
+ if (Buffer.byteLength(body, "utf8") > LOCAL_BODY_MAX_BYTES) {
330
+ throw new ToolInputError("LOCAL_MOCK_BODY_TOO_LARGE", `${where}: the response body is larger than ${LOCAL_BODY_MAX_BYTES / 1024} KB, the limit of a local mock route.`);
331
+ }
332
+ const delay = input.delay ?? { mode: "none" };
333
+ if ((delay.mode === "fixed" && delay.ms > LOCAL_DELAY_MAX_MS) || (delay.mode === "random" && (delay.maxMs > LOCAL_DELAY_MAX_MS || delay.minMs > delay.maxMs))) {
334
+ throw new ToolInputError("LOCAL_MOCK_DELAY_INVALID", `${where}: a local mock delay is at most ${LOCAL_DELAY_MAX_MS / 1000} s (random: minMs ≤ maxMs).`);
335
+ }
336
+ return { method: input.method, path: input.path, ...(input.name ? { name: input.name } : {}), statusCode: source.statusCode, headers: source.headers ?? {}, body, delay };
337
+ };
338
+ export const localBaseUrl = (mock) => `http://127.0.0.1:${mock.port}`;
339
+ export const localRouteView = (route) => ({
340
+ ...(route.routeId ? { routeId: route.routeId } : {}),
341
+ method: route.method,
342
+ path: route.path,
343
+ ...(route.name ? { name: route.name } : {}),
344
+ statusCode: route.statusCode,
345
+ headers: route.headers,
346
+ body: route.body,
347
+ delay: route.delay,
348
+ });
349
+ export const localMockView = (mock, options = { routes: true }) => {
350
+ const routes = (mock.routes ?? []).map(localRouteView);
351
+ const inline = safeStringify(routes).length <= ROUTES_INLINE_LIMIT;
352
+ return {
353
+ id: mock.id,
354
+ name: mock.name,
355
+ port: mock.port,
356
+ running: mock.running,
357
+ baseUrl: localBaseUrl(mock),
358
+ autoStart: mock.autoStart,
359
+ ...(mock.source ? { source: mock.source } : {}),
360
+ ...(mock.lastError ? { lastError: mock.lastError } : {}),
361
+ requestCount: mock.requestCount ?? 0,
362
+ routeCount: routes.length,
363
+ ...(options.routes
364
+ ? inline
365
+ ? { routes }
366
+ : { routes: routes.map(({ body: _body, headers: _headers, ...rest }) => rest), routesTruncated: true }
367
+ : {}),
368
+ };
369
+ };
370
+ export const localCalls = (mock) => (mock.routes ?? []).map((route) => ({ route: `${route.method} ${route.path}`, curl: curlLine(localBaseUrl(mock), route, undefined) }));
371
+ export const resolveLocalMock = (mocks, ref, options = {}) => resolveRef("local mock", ref, mocks.map((record) => ({ id: record.id, name: record.name, record })), { describe: (item) => ({ port: item.record.port, running: item.record.running }), ...options });
372
+ export const logView = (entry) => ({
373
+ id: String(entry._id),
374
+ at: entry.createdAt,
375
+ method: entry.request?.method,
376
+ path: entry.request?.path,
377
+ ...(entry.request?.query && Object.keys(entry.request.query).length > 0 ? { query: entry.request.query } : {}),
378
+ ...(entry.request?.body !== undefined ? { requestBody: jsonPreview(entry.request.body, LIMITS.BODY_PREVIEW) } : {}),
379
+ statusCode: entry.response?.statusCode,
380
+ durationMs: entry.response?.durationMs,
381
+ ...(entry.response?.body !== undefined ? { responseBody: jsonPreview(entry.response.body, LIMITS.BODY_PREVIEW) } : {}),
382
+ matched: entry.matchInfo?.matched ?? false,
383
+ ...(entry.matchInfo?.matchedRouteId ? { routeId: entry.matchInfo.matchedRouteId } : {}),
384
+ ...(entry.matchInfo?.matchedVariantId ? { variantId: entry.matchInfo.matchedVariantId } : {}),
385
+ ...(entry.matchInfo?.failureReason ? { failureReason: entry.matchInfo.failureReason } : {}),
386
+ });
387
+ //# sourceMappingURL=mockShared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockShared.js","sourceRoot":"","sources":["../../src/tools/mockShared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { ToolContext } from "../context.js";
3
+ export declare const registerMockTools: (server: McpServer, ctx: ToolContext) => void;
4
+ //# sourceMappingURL=mocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/tools/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAgCjD,eAAO,MAAM,iBAAiB,GAAI,QAAQ,SAAS,EAAE,KAAK,WAAW,KAAG,IAgXvE,CAAC"}