callman-mcp 0.1.0 → 0.2.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 (204) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/README.md +45 -16
  3. package/dist/client/api.d.ts +64 -3
  4. package/dist/client/api.d.ts.map +1 -1
  5. package/dist/client/api.js +67 -2
  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 +33 -7
  9. package/dist/client/errors.js.map +1 -1
  10. package/dist/client/types.d.ts +91 -2
  11. package/dist/client/types.d.ts.map +1 -1
  12. package/dist/context.d.ts +2 -0
  13. package/dist/context.d.ts.map +1 -1
  14. package/dist/context.js +7 -2
  15. package/dist/context.js.map +1 -1
  16. package/dist/domain/contracts.d.ts +893 -0
  17. package/dist/domain/contracts.d.ts.map +1 -0
  18. package/dist/domain/contracts.js +90 -0
  19. package/dist/domain/contracts.js.map +1 -0
  20. package/dist/domain/diagram/build.d.ts +520 -18
  21. package/dist/domain/diagram/build.d.ts.map +1 -1
  22. package/dist/domain/diagram/build.js +65 -19
  23. package/dist/domain/diagram/build.js.map +1 -1
  24. package/dist/domain/diagram/patch.d.ts +624 -51
  25. package/dist/domain/diagram/patch.d.ts.map +1 -1
  26. package/dist/domain/diagram/patch.js +180 -40
  27. package/dist/domain/diagram/patch.js.map +1 -1
  28. package/dist/domain/diagram/style.d.ts +315 -0
  29. package/dist/domain/diagram/style.d.ts.map +1 -0
  30. package/dist/domain/diagram/style.js +124 -0
  31. package/dist/domain/diagram/style.js.map +1 -0
  32. package/dist/domain/diagram/summarize.d.ts +8 -0
  33. package/dist/domain/diagram/summarize.d.ts.map +1 -1
  34. package/dist/domain/diagram/summarize.js +28 -13
  35. package/dist/domain/diagram/summarize.js.map +1 -1
  36. package/dist/domain/requestIntegrations.d.ts +719 -0
  37. package/dist/domain/requestIntegrations.d.ts.map +1 -0
  38. package/dist/domain/requestIntegrations.js +222 -0
  39. package/dist/domain/requestIntegrations.js.map +1 -0
  40. package/dist/domain/requestShape.d.ts +1350 -152
  41. package/dist/domain/requestShape.d.ts.map +1 -1
  42. package/dist/domain/requestShape.js +336 -121
  43. package/dist/domain/requestShape.js.map +1 -1
  44. package/dist/domain/resolve.d.ts +2 -1
  45. package/dist/domain/resolve.d.ts.map +1 -1
  46. package/dist/domain/resolve.js +5 -1
  47. package/dist/domain/resolve.js.map +1 -1
  48. package/dist/domain/scenario/build.d.ts +82 -26
  49. package/dist/domain/scenario/build.d.ts.map +1 -1
  50. package/dist/domain/scenario/build.js +196 -65
  51. package/dist/domain/scenario/build.js.map +1 -1
  52. package/dist/domain/scenario/nodeConfig.d.ts +11 -0
  53. package/dist/domain/scenario/nodeConfig.d.ts.map +1 -0
  54. package/dist/domain/scenario/nodeConfig.js +251 -0
  55. package/dist/domain/scenario/nodeConfig.js.map +1 -0
  56. package/dist/domain/scenario/summarize.d.ts +145 -25
  57. package/dist/domain/scenario/summarize.d.ts.map +1 -1
  58. package/dist/domain/scenario/summarize.js +84 -29
  59. package/dist/domain/scenario/summarize.js.map +1 -1
  60. package/dist/lib/mask.d.ts +0 -18
  61. package/dist/lib/mask.d.ts.map +1 -1
  62. package/dist/lib/mask.js +2 -44
  63. package/dist/lib/mask.js.map +1 -1
  64. package/dist/lib/pagination.d.ts +3 -2
  65. package/dist/lib/pagination.d.ts.map +1 -1
  66. package/dist/lib/pagination.js +13 -8
  67. package/dist/lib/pagination.js.map +1 -1
  68. package/dist/lib/redact.d.ts +12 -0
  69. package/dist/lib/redact.d.ts.map +1 -0
  70. package/dist/lib/redact.js +50 -0
  71. package/dist/lib/redact.js.map +1 -0
  72. package/dist/lib/strict.d.ts +4 -0
  73. package/dist/lib/strict.d.ts.map +1 -0
  74. package/dist/lib/strict.js +14 -0
  75. package/dist/lib/strict.js.map +1 -0
  76. package/dist/prompts/index.js +7 -7
  77. package/dist/prompts/index.js.map +1 -1
  78. package/dist/resources/docs/contracts.d.ts +2 -0
  79. package/dist/resources/docs/contracts.d.ts.map +1 -0
  80. package/dist/resources/docs/contracts.js +74 -0
  81. package/dist/resources/docs/contracts.js.map +1 -0
  82. package/dist/resources/docs/diagramSchema.d.ts +1 -1
  83. package/dist/resources/docs/diagramSchema.d.ts.map +1 -1
  84. package/dist/resources/docs/diagramSchema.js +95 -28
  85. package/dist/resources/docs/diagramSchema.js.map +1 -1
  86. package/dist/resources/docs/overview.d.ts +1 -1
  87. package/dist/resources/docs/overview.d.ts.map +1 -1
  88. package/dist/resources/docs/overview.js +29 -7
  89. package/dist/resources/docs/overview.js.map +1 -1
  90. package/dist/resources/docs/requestSchema.d.ts +1 -1
  91. package/dist/resources/docs/requestSchema.d.ts.map +1 -1
  92. package/dist/resources/docs/requestSchema.js +85 -16
  93. package/dist/resources/docs/requestSchema.js.map +1 -1
  94. package/dist/resources/generated/aiPacks.d.ts +1 -1
  95. package/dist/resources/generated/aiPacks.d.ts.map +1 -1
  96. package/dist/resources/generated/aiPacks.js +3 -2
  97. package/dist/resources/generated/aiPacks.js.map +1 -1
  98. package/dist/resources/index.d.ts.map +1 -1
  99. package/dist/resources/index.js +19 -19
  100. package/dist/resources/index.js.map +1 -1
  101. package/dist/run/executeCollection.d.ts +3 -1
  102. package/dist/run/executeCollection.d.ts.map +1 -1
  103. package/dist/run/executeCollection.js +16 -4
  104. package/dist/run/executeCollection.js.map +1 -1
  105. package/dist/run/summarize.d.ts +17 -6
  106. package/dist/run/summarize.d.ts.map +1 -1
  107. package/dist/run/summarize.js +48 -41
  108. package/dist/run/summarize.js.map +1 -1
  109. package/dist/run/types.d.ts +1 -0
  110. package/dist/run/types.d.ts.map +1 -1
  111. package/dist/server.d.ts +1 -1
  112. package/dist/server.d.ts.map +1 -1
  113. package/dist/server.js +1 -1
  114. package/dist/server.js.map +1 -1
  115. package/dist/tools/catalog.d.ts +1 -1
  116. package/dist/tools/catalog.d.ts.map +1 -1
  117. package/dist/tools/catalog.js +18 -0
  118. package/dist/tools/catalog.js.map +1 -1
  119. package/dist/tools/collections.d.ts.map +1 -1
  120. package/dist/tools/collections.js +53 -41
  121. package/dist/tools/collections.js.map +1 -1
  122. package/dist/tools/contracts.d.ts +4 -0
  123. package/dist/tools/contracts.d.ts.map +1 -0
  124. package/dist/tools/contracts.js +201 -0
  125. package/dist/tools/contracts.js.map +1 -0
  126. package/dist/tools/diagrams.d.ts.map +1 -1
  127. package/dist/tools/diagrams.js +19 -10
  128. package/dist/tools/diagrams.js.map +1 -1
  129. package/dist/tools/environments.d.ts.map +1 -1
  130. package/dist/tools/environments.js +184 -64
  131. package/dist/tools/environments.js.map +1 -1
  132. package/dist/tools/import.d.ts.map +1 -1
  133. package/dist/tools/import.js +111 -20
  134. package/dist/tools/import.js.map +1 -1
  135. package/dist/tools/index.d.ts +2 -1
  136. package/dist/tools/index.d.ts.map +1 -1
  137. package/dist/tools/index.js +19 -1
  138. package/dist/tools/index.js.map +1 -1
  139. package/dist/tools/lookups.d.ts +38 -7
  140. package/dist/tools/lookups.d.ts.map +1 -1
  141. package/dist/tools/lookups.js +113 -10
  142. package/dist/tools/lookups.js.map +1 -1
  143. package/dist/tools/meta.d.ts.map +1 -1
  144. package/dist/tools/meta.js +9 -4
  145. package/dist/tools/meta.js.map +1 -1
  146. package/dist/tools/requests.d.ts.map +1 -1
  147. package/dist/tools/requests.js +138 -50
  148. package/dist/tools/requests.js.map +1 -1
  149. package/dist/tools/run.d.ts.map +1 -1
  150. package/dist/tools/run.js +84 -28
  151. package/dist/tools/run.js.map +1 -1
  152. package/dist/tools/scenarios.d.ts.map +1 -1
  153. package/dist/tools/scenarios.js +238 -75
  154. package/dist/tools/scenarios.js.map +1 -1
  155. package/dist/tools/shared.d.ts +1 -0
  156. package/dist/tools/shared.d.ts.map +1 -1
  157. package/dist/tools/shared.js +9 -1
  158. package/dist/tools/shared.js.map +1 -1
  159. package/dist/tools/workspaces.d.ts.map +1 -1
  160. package/dist/tools/workspaces.js +44 -7
  161. package/dist/tools/workspaces.js.map +1 -1
  162. package/dist-cjs/client/api.js +67 -2
  163. package/dist-cjs/client/errors.js +33 -7
  164. package/dist-cjs/context.js +7 -2
  165. package/dist-cjs/domain/contracts.js +93 -0
  166. package/dist-cjs/domain/diagram/build.js +71 -20
  167. package/dist-cjs/domain/diagram/patch.js +179 -39
  168. package/dist-cjs/domain/diagram/style.js +130 -0
  169. package/dist-cjs/domain/diagram/summarize.js +28 -13
  170. package/dist-cjs/domain/requestIntegrations.js +228 -0
  171. package/dist-cjs/domain/requestShape.js +342 -121
  172. package/dist-cjs/domain/resolve.js +5 -1
  173. package/dist-cjs/domain/scenario/build.js +197 -65
  174. package/dist-cjs/domain/scenario/nodeConfig.js +260 -0
  175. package/dist-cjs/domain/scenario/summarize.js +86 -29
  176. package/dist-cjs/lib/mask.js +3 -48
  177. package/dist-cjs/lib/pagination.js +13 -8
  178. package/dist-cjs/lib/redact.js +53 -0
  179. package/dist-cjs/lib/strict.js +18 -0
  180. package/dist-cjs/prompts/index.js +7 -7
  181. package/dist-cjs/resources/docs/contracts.js +76 -0
  182. package/dist-cjs/resources/docs/diagramSchema.js +95 -28
  183. package/dist-cjs/resources/docs/overview.js +29 -7
  184. package/dist-cjs/resources/docs/requestSchema.js +85 -16
  185. package/dist-cjs/resources/generated/aiPacks.js +3 -2
  186. package/dist-cjs/resources/index.js +17 -17
  187. package/dist-cjs/run/executeCollection.js +16 -4
  188. package/dist-cjs/run/summarize.js +48 -41
  189. package/dist-cjs/server.js +1 -1
  190. package/dist-cjs/tools/catalog.js +18 -0
  191. package/dist-cjs/tools/collections.js +52 -40
  192. package/dist-cjs/tools/contracts.js +204 -0
  193. package/dist-cjs/tools/diagrams.js +19 -10
  194. package/dist-cjs/tools/environments.js +182 -62
  195. package/dist-cjs/tools/import.js +107 -16
  196. package/dist-cjs/tools/index.js +21 -2
  197. package/dist-cjs/tools/lookups.js +123 -11
  198. package/dist-cjs/tools/meta.js +9 -4
  199. package/dist-cjs/tools/requests.js +134 -46
  200. package/dist-cjs/tools/run.js +82 -26
  201. package/dist-cjs/tools/scenarios.js +235 -72
  202. package/dist-cjs/tools/shared.js +11 -2
  203. package/dist-cjs/tools/workspaces.js +43 -6
  204. package/package.json +2 -2
@@ -1,29 +1,38 @@
1
1
  import { z } from "zod";
2
2
  import { ToolInputError } from "../client/errors.js";
3
+ import { strictObject } from "../lib/strict.js";
3
4
  import { requestSummaryView } from "../domain/requestShape.js";
4
5
  import { resolvedSummary } from "../domain/resolve.js";
5
6
  import { sliceWithCursor } from "../lib/pagination.js";
6
7
  import { byteLength, LIMITS } from "../lib/truncate.js";
7
- import { loadCollections, loadTree, resolveCollection, resolveFolder, sameName } from "./lookups.js";
8
+ import { findCollection, loadCollections, loadTree, resolveCollection, resolveFolder, sameName, workspacesForListing, workspaceTag } from "./lookups.js";
8
9
  import { confirmArg, cursorArgs, DESTRUCTIVE, guarded, IDEMPOTENT_WRITE, ok, READ, refArg, requireConfirm, workspaceArg, WRITE } from "./shared.js";
9
10
  const EXPORT_MAX_BYTES = 1024 * 1024;
11
+ const runnerSettingsArg = strictObject({
12
+ database: z.boolean().optional().describe("Run each request's database pre/post steps during collection runs"),
13
+ kafka: z.boolean().optional().describe("Run each request's Kafka publish/consume steps during collection runs"),
14
+ }, "runner setting")
15
+ .optional()
16
+ .describe("Collection runner switches (both default to on)");
10
17
  export const registerCollectionTools = (server, ctx) => {
11
18
  server.registerTool("list_collections", {
12
19
  title: "List collections",
13
- description: "List the collections in a workspace with request/folder counts. Optional `query` filters by name (substring). Use get_collection_tree to see what is inside one.",
20
+ description: "List collections with request/folder counts — across ALL your workspaces unless `workspace` narrows it (the default workspace comes first; every row says its workspace). Optional `query` filters by name (substring). Use get_collection_tree to see what is inside one.",
14
21
  inputSchema: { workspace: workspaceArg, query: z.string().max(200).optional(), ...cursorArgs },
15
22
  annotations: READ,
16
23
  }, guarded(async ({ workspace, query, cursor, limit }) => {
17
- const ws = await ctx.resolveWorkspace(workspace);
18
- const all = await loadCollections(ctx, ws.id);
24
+ const workspaces = await workspacesForListing(ctx, workspace);
19
25
  const needle = query?.trim().toLowerCase();
20
- const filtered = needle ? all.filter((collection) => collection.name.toLowerCase().includes(needle)) : all;
21
- const page = sliceWithCursor(filtered, cursor, limit);
26
+ const rows = (await Promise.all(workspaces.map(async (ws) => (await loadCollections(ctx, ws.id)).map((collection) => ({ ws, collection })))))
27
+ .flat()
28
+ .filter(({ collection }) => !needle || collection.name.toLowerCase().includes(needle));
29
+ const page = sliceWithCursor(rows, cursor, limit, `${workspaces.map((ws) => ws.id).join(",")}|${needle ?? ""}`);
22
30
  return ok({
23
- workspace: { id: ws.id, name: ws.name },
24
- collections: page.items.map((collection) => ({
31
+ ...(workspaces.length === 1 ? { workspace: workspaceTag(workspaces[0]) } : { workspaces: workspaces.map(workspaceTag) }),
32
+ collections: page.items.map(({ ws, collection }) => ({
25
33
  id: collection.id,
26
34
  name: collection.name,
35
+ ...(workspaces.length > 1 ? { workspace: workspaceTag(ws) } : {}),
27
36
  requestCount: collection.requestCount ?? null,
28
37
  folderCount: collection.folderCount ?? null,
29
38
  updatedAt: collection.updatedAt ?? null,
@@ -34,17 +43,17 @@ export const registerCollectionTools = (server, ctx) => {
34
43
  }));
35
44
  server.registerTool("get_collection_tree", {
36
45
  title: "Get a collection's folders and requests",
37
- description: "The folders (with paths like \"Auth/Login\") and requests (id, name, method, url, folder) of one collection — the map you need before creating, moving or running requests.",
46
+ description: "The folders (with paths like \"Auth/Login\") and requests (id, name, method, url, folder) of one collection, in whichever workspace it lives — the map you need before creating, moving or running requests.",
38
47
  inputSchema: { workspace: workspaceArg, collection: refArg("Collection") },
39
48
  annotations: READ,
40
49
  }, guarded(async ({ workspace, collection }) => {
41
- const ws = await ctx.resolveWorkspace(workspace);
42
- const resolved = await resolveCollection(ctx, ws.id, collection);
50
+ const { ws, value: resolved, note } = await findCollection(ctx, workspace, collection);
43
51
  const tree = await loadTree(ctx, ws.id, resolved.item.id);
44
52
  const truncated = tree.requests.length > LIMITS.TREE_ITEMS;
45
53
  return ok({
46
54
  collection: { id: resolved.item.id, name: resolved.item.name },
47
- resolved: [resolvedSummary(collection, resolved)],
55
+ workspace: workspaceTag(ws),
56
+ resolved: [resolvedSummary(collection, resolved), ...(note ? [{ input: collection, note }] : [])],
48
57
  folders: tree.folders.map((folder) => ({ id: folder.id, name: folder.name, parentId: folder.parentId, path: folder.path })),
49
58
  requests: tree.requests.slice(0, LIMITS.TREE_ITEMS).map(requestSummaryView),
50
59
  ...(truncated ? { truncated: true, totalRequests: tree.requests.length } : {}),
@@ -56,23 +65,22 @@ export const registerCollectionTools = (server, ctx) => {
56
65
  inputSchema: { workspace: workspaceArg, collection: refArg("Collection"), format: z.enum(["internal", "postman"]).default("internal") },
57
66
  annotations: READ,
58
67
  }, guarded(async ({ workspace, collection, format }) => {
59
- const ws = await ctx.resolveWorkspace(workspace);
60
- const resolved = await resolveCollection(ctx, ws.id, collection);
68
+ const { ws, value: resolved } = await findCollection(ctx, workspace, collection);
61
69
  const document = await ctx.api.exportCollection(ws.id, resolved.item.id, format);
62
70
  const bytes = byteLength(document);
63
71
  if (bytes > EXPORT_MAX_BYTES) {
64
72
  throw new ToolInputError("EXPORT_TOO_LARGE", `The export is ${bytes} bytes (limit ${EXPORT_MAX_BYTES}). Export it from the desktop app instead.`, { bytes });
65
73
  }
66
- return ok({ collection: { id: resolved.item.id, name: resolved.item.name }, format, bytes, document: document });
74
+ return ok({ collection: { id: resolved.item.id, name: resolved.item.name }, workspace: workspaceTag(ws), format, bytes, document: document });
67
75
  }));
68
76
  server.registerTool("create_collection", {
69
77
  title: "Create a collection",
70
- description: "Create an empty collection. Refuses a name that already exists in the workspace unless allowDuplicateName is true — list_collections first and reuse an existing one when it fits.",
78
+ description: "Create an empty collection in `workspace` (or the session default — use_workspace; with one workspace, that one). Refuses a name that already exists in that workspace unless allowDuplicateName is true — list_collections first and reuse an existing one when it fits.",
71
79
  inputSchema: {
72
80
  workspace: workspaceArg,
73
81
  name: z.string().min(1).max(LIMITS.NAME),
74
82
  allowDuplicateName: z.boolean().optional(),
75
- runnerSettings: z.object({ database: z.boolean().optional(), kafka: z.boolean().optional(), redis: z.boolean().optional() }).optional(),
83
+ runnerSettings: runnerSettingsArg,
76
84
  },
77
85
  annotations: WRITE,
78
86
  }, guarded(async ({ workspace, name, allowDuplicateName, runnerSettings }) => {
@@ -85,29 +93,28 @@ export const registerCollectionTools = (server, ctx) => {
85
93
  }
86
94
  const created = await ctx.api.createCollection(ws.id, { name: name.trim(), ...(runnerSettings ? { runnerSettings: compactSettings(runnerSettings) } : {}) });
87
95
  ctx.invalidate(`collections:${ws.id}`);
88
- return ok({ collection: { id: created.id, name: created.name }, note: "Created. Add requests with create_request / create_requests_bulk / import_content." });
96
+ return ok({ collection: { id: created.id, name: created.name }, workspace: workspaceTag(ws), note: "Created. Add requests with create_request / create_requests_bulk / import_content." });
89
97
  }));
90
98
  server.registerTool("update_collection", {
91
99
  title: "Rename a collection / change runner settings",
92
- description: "Rename a collection or toggle its runner settings (database / kafka / redis steps during runs).",
100
+ description: "Rename a collection or toggle its runner settings: whether collection runs execute the requests' database steps and Kafka steps.",
93
101
  inputSchema: {
94
102
  workspace: workspaceArg,
95
103
  collection: refArg("Collection"),
96
104
  name: z.string().min(1).max(LIMITS.NAME).optional(),
97
- runnerSettings: z.object({ database: z.boolean().optional(), kafka: z.boolean().optional(), redis: z.boolean().optional() }).optional(),
105
+ runnerSettings: runnerSettingsArg,
98
106
  },
99
107
  annotations: IDEMPOTENT_WRITE,
100
108
  }, guarded(async ({ workspace, collection, name, runnerSettings }) => {
101
109
  if (name === undefined && runnerSettings === undefined)
102
110
  throw new ToolInputError("NOTHING_TO_UPDATE", "Pass name and/or runnerSettings.");
103
- const ws = await ctx.resolveWorkspace(workspace);
104
- const resolved = await resolveCollection(ctx, ws.id, collection);
111
+ const { ws, value: resolved, note } = await findCollection(ctx, workspace, collection);
105
112
  const updated = await ctx.api.updateCollection(ws.id, resolved.item.id, {
106
113
  ...(name !== undefined ? { name: name.trim() } : {}),
107
114
  ...(runnerSettings ? { runnerSettings: compactSettings(runnerSettings) } : {}),
108
115
  });
109
116
  ctx.invalidate(`collections:${ws.id}`);
110
- return ok({ collection: { id: updated.id, name: updated.name, runnerSettings: updated.runnerSettings ?? null }, resolved: [resolvedSummary(collection, resolved)] });
117
+ return ok({ collection: { id: updated.id, name: updated.name, runnerSettings: updated.runnerSettings ?? null }, workspace: workspaceTag(ws), resolved: [resolvedSummary(collection, resolved), ...(note ? [{ input: collection, note }] : [])] });
111
118
  }));
112
119
  server.registerTool("create_folder", {
113
120
  title: "Create a folder",
@@ -120,8 +127,7 @@ export const registerCollectionTools = (server, ctx) => {
120
127
  },
121
128
  annotations: WRITE,
122
129
  }, guarded(async ({ workspace, collection, name, parent }) => {
123
- const ws = await ctx.resolveWorkspace(workspace);
124
- const resolved = await resolveCollection(ctx, ws.id, collection);
130
+ const { ws, value: resolved } = await findCollection(ctx, workspace, collection);
125
131
  const parentFolder = await resolveFolder(ctx, ws.id, resolved.item.id, parent);
126
132
  const tree = await loadTree(ctx, ws.id, resolved.item.id);
127
133
  const sibling = tree.folders.find((folder) => folder.parentId === (parentFolder?.item.id ?? null) && sameName(folder.name, name));
@@ -133,36 +139,44 @@ export const registerCollectionTools = (server, ctx) => {
133
139
  ctx.invalidate(`collections:${ws.id}`);
134
140
  return ok({
135
141
  folder: { id: folder.id, name: folder.name, parentId: folder.parentId, path: parentFolder ? `${parentFolder.item.path}/${folder.name}` : folder.name },
142
+ workspace: workspaceTag(ws),
136
143
  resolved: [resolvedSummary(collection, resolved), ...(parentFolder ? [resolvedSummary(parent, parentFolder)] : [])],
137
144
  });
138
145
  }));
139
146
  server.registerTool("update_folder", {
140
147
  title: "Rename or move a folder",
141
- description: "Rename a folder and/or move it under another parent (pass parent: null for top level).",
148
+ description: "Rename a folder and/or move it — under another parent in the same collection (parent: null = top level) or into another collection (targetCollection, with its subfolders and requests).",
142
149
  inputSchema: {
143
150
  workspace: workspaceArg,
144
151
  collection: refArg("Collection"),
145
152
  folder: refArg("Folder", "(or path)"),
146
153
  name: z.string().min(1).max(LIMITS.NAME).optional(),
147
- parent: z.string().max(300).nullable().optional().describe("New parent folder (id, name or path); null = top level"),
154
+ parent: z.string().max(300).nullable().optional().describe("New parent folder (id, name or path) in the target collection; null = top level"),
155
+ targetCollection: z.string().max(200).optional().describe("Move the folder into this collection (id or name)"),
148
156
  },
149
157
  annotations: IDEMPOTENT_WRITE,
150
- }, guarded(async ({ workspace, collection, folder, name, parent }) => {
151
- if (name === undefined && parent === undefined)
152
- throw new ToolInputError("NOTHING_TO_UPDATE", "Pass name and/or parent.");
153
- const ws = await ctx.resolveWorkspace(workspace);
154
- const resolved = await resolveCollection(ctx, ws.id, collection);
158
+ }, guarded(async ({ workspace, collection, folder, name, parent, targetCollection }) => {
159
+ if (name === undefined && parent === undefined && targetCollection === undefined)
160
+ throw new ToolInputError("NOTHING_TO_UPDATE", "Pass name, parent and/or targetCollection.");
161
+ const { ws, value: resolved } = await findCollection(ctx, workspace, collection);
155
162
  const target = await resolveFolder(ctx, ws.id, resolved.item.id, folder);
156
163
  if (!target)
157
164
  throw new ToolInputError("REF_REQUIRED", "folder is required.");
158
- const parentFolder = parent ? await resolveFolder(ctx, ws.id, resolved.item.id, parent) : null;
165
+ const destination = targetCollection ? await resolveCollection(ctx, ws.id, targetCollection) : resolved;
166
+ const moving = destination.item.id !== resolved.item.id;
167
+ const parentFolder = parent ? await resolveFolder(ctx, ws.id, destination.item.id, parent) : null;
159
168
  if (parentFolder && parentFolder.item.id === target.item.id)
160
169
  throw new ToolInputError("FOLDER_CYCLE", "A folder cannot be its own parent.");
161
170
  const updated = await ctx.api.updateFolder(ws.id, target.item.id, {
162
171
  ...(name !== undefined ? { name: name.trim() } : {}),
163
- ...(parent !== undefined ? { parentId: parentFolder?.item.id ?? null } : {}),
172
+ ...(parent !== undefined || moving ? { parentId: parentFolder?.item.id ?? null } : {}),
173
+ ...(moving ? { collectionId: destination.item.id } : {}),
164
174
  });
165
175
  ctx.invalidate(`tree:${ws.id}:${resolved.item.id}`);
176
+ if (moving) {
177
+ ctx.invalidate(`tree:${ws.id}:${destination.item.id}`);
178
+ ctx.invalidate(`collections:${ws.id}`);
179
+ }
166
180
  return ok({ folder: { id: updated.id, name: updated.name, parentId: updated.parentId }, resolved: [resolvedSummary(collection, resolved), resolvedSummary(folder, target)] });
167
181
  }));
168
182
  server.registerTool("delete_collection", {
@@ -172,12 +186,11 @@ export const registerCollectionTools = (server, ctx) => {
172
186
  annotations: DESTRUCTIVE,
173
187
  }, guarded(async ({ workspace, collection, confirm }) => {
174
188
  requireConfirm(confirm, "a collection");
175
- const ws = await ctx.resolveWorkspace(workspace);
176
- const resolved = await resolveCollection(ctx, ws.id, collection);
189
+ const { ws, value: resolved } = await findCollection(ctx, workspace, collection, { exact: true });
177
190
  await ctx.api.deleteCollection(ws.id, resolved.item.id);
178
191
  ctx.invalidate(`collections:${ws.id}`);
179
192
  ctx.invalidate(`tree:${ws.id}:${resolved.item.id}`);
180
- return ok({ deleted: { id: resolved.item.id, name: resolved.item.name }, resolved: [resolvedSummary(collection, resolved)] });
193
+ return ok({ deleted: { id: resolved.item.id, name: resolved.item.name }, workspace: workspaceTag(ws), resolved: [resolvedSummary(collection, resolved)] });
181
194
  }));
182
195
  server.registerTool("delete_folder", {
183
196
  title: "Delete a folder",
@@ -186,15 +199,14 @@ export const registerCollectionTools = (server, ctx) => {
186
199
  annotations: DESTRUCTIVE,
187
200
  }, guarded(async ({ workspace, collection, folder, confirm }) => {
188
201
  requireConfirm(confirm, "a folder");
189
- const ws = await ctx.resolveWorkspace(workspace);
190
- const resolved = await resolveCollection(ctx, ws.id, collection);
191
- const target = await resolveFolder(ctx, ws.id, resolved.item.id, folder);
202
+ const { ws, value: resolved } = await findCollection(ctx, workspace, collection);
203
+ const target = await resolveFolder(ctx, ws.id, resolved.item.id, folder, { exact: true });
192
204
  if (!target)
193
205
  throw new ToolInputError("REF_REQUIRED", "folder is required.");
194
206
  await ctx.api.deleteFolder(ws.id, target.item.id);
195
207
  ctx.invalidate(`tree:${ws.id}:${resolved.item.id}`);
196
208
  ctx.invalidate(`collections:${ws.id}`);
197
- return ok({ deleted: { id: target.item.id, name: target.item.name, path: target.item.path }, resolved: [resolvedSummary(collection, resolved), resolvedSummary(folder, target)] });
209
+ return ok({ deleted: { id: target.item.id, name: target.item.name, path: target.item.path }, workspace: workspaceTag(ws), resolved: [resolvedSummary(collection, resolved), resolvedSummary(folder, target)] });
198
210
  }));
199
211
  };
200
212
  const compactSettings = (settings) => Object.fromEntries(Object.entries(settings).filter(([, value]) => typeof value === "boolean"));
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/tools/collections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/tools/collections.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 registerContractTools: (server: McpServer, ctx: ToolContext) => void;
4
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/tools/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAmBjD,eAAO,MAAM,qBAAqB,GAAI,QAAQ,SAAS,EAAE,KAAK,WAAW,KAAG,IAgO3E,CAAC"}
@@ -0,0 +1,201 @@
1
+ import { z } from "zod";
2
+ import { ToolInputError } from "../client/errors.js";
3
+ import { contractPathSchema, contractRuleInputSchema, contractRulesSchema, DATA_CONTRACT_LIMITS, dataContractRowSchema, undeclaredDataColumns } from "../domain/contracts.js";
4
+ import { requestSummaryView } from "../domain/requestShape.js";
5
+ import { findInWorkspaces, findRequest, workspacesForListing, workspaceTag } from "./lookups.js";
6
+ import { confirmArg, DESTRUCTIVE, dryRunArg, failureOf, guarded, IDEMPOTENT_WRITE, ok, READ, refArg, requireConfirm, workspaceArg, WRITE } from "./shared.js";
7
+ // Contract checks on a saved request (the desktop's Contracts tab): field
8
+ // rules and the data-driven contract. Every runner evaluates them after the
9
+ // response — run_request / run_collection report them under `contracts`.
10
+ // Read callman://docs/contracts for the rule vocabulary and path grammar.
11
+ const requestArgs = {
12
+ workspace: workspaceArg,
13
+ request: refArg("Request", "(name, \"METHOD url\" or id)"),
14
+ collection: z.string().max(200).optional().describe("Narrow a request name lookup to one collection"),
15
+ };
16
+ const ruleView = (rule) => ({ id: rule.id, path: rule.path, enabled: rule.enabled, rules: rule.rules });
17
+ export const registerContractTools = (server, ctx) => {
18
+ server.registerTool("get_contract_checks", {
19
+ title: "Get a request's contract checks",
20
+ description: "Read a saved request's contract checks: field rules ({ id, path, rules, enabled }) and its data-driven contract (columns + rows, each row with expectedStatus and assertions). These run after every response of the request (desktop, CLI, run_request, run_collection).",
21
+ inputSchema: requestArgs,
22
+ annotations: READ,
23
+ }, guarded(async ({ workspace, request, collection }) => {
24
+ const { ws, value, note } = await findRequest(ctx, workspace, request, collection);
25
+ const { request: found, annotation } = value;
26
+ const [rules, dataContract] = await Promise.all([ctx.api.listContractRules(ws.id, found.id), ctx.api.getDataContract(ws.id, found.id)]);
27
+ return ok({
28
+ request: requestSummaryView(found),
29
+ workspace: workspaceTag(ws),
30
+ rules: rules.items.map(ruleView),
31
+ dataContract: dataContract.rows.length > 0 || dataContract.columns.length > 0 ? { columns: dataContract.columns, rows: dataContract.rows } : null,
32
+ ...(annotation || note ? { resolved: [{ input: request, matched: found.name, id: found.id, note: [annotation, note].filter(Boolean).join("; ") }] } : {}),
33
+ });
34
+ }));
35
+ server.registerTool("add_contract_rules", {
36
+ title: "Add contract rules to a request",
37
+ description: "Add field rules to a saved request's contract (one call, up to 200): each is { path, rules, enabled? } — e.g. { path: \"users[].id\", rules: { required: true, type: \"string\", format: \"uuid\" } } or { path: \"response.status\", rules: { equals: 200 } }. replace: true removes the request's existing rules first (needs requests:delete). Try them against a sample response with test_contract_rules. Rule vocabulary: callman://docs/contracts.",
38
+ inputSchema: {
39
+ ...requestArgs,
40
+ rules: z.array(contractRuleInputSchema).min(1).max(200),
41
+ replace: z.boolean().optional().describe("Delete the request's existing rules first"),
42
+ dryRun: dryRunArg,
43
+ },
44
+ annotations: WRITE,
45
+ }, guarded(async ({ workspace, request, collection, rules, replace, dryRun }) => {
46
+ const { ws, value } = await findRequest(ctx, workspace, request, collection);
47
+ const { request: found } = value;
48
+ const existing = (await ctx.api.listContractRules(ws.id, found.id)).items;
49
+ const duplicates = replace ? [] : rules.filter((rule) => existing.some((entry) => entry.path === rule.path)).map((rule) => rule.path);
50
+ const warnings = duplicates.length > 0 ? [`These paths already had rules and now have another one each: ${duplicates.join(", ")} — use update_contract_rule to change an existing rule instead.`] : [];
51
+ if (dryRun) {
52
+ return ok({ dryRun: true, request: requestSummaryView(found),
53
+ workspace: workspaceTag(ws), adding: rules.length, ...(replace ? { removing: existing.length } : {}), warnings });
54
+ }
55
+ if (replace) {
56
+ for (const rule of existing)
57
+ await ctx.api.deleteContractRule(ws.id, rule.id);
58
+ }
59
+ const created = await ctx.api.createContractRules(ws.id, { requestId: found.id, rules: rules.map((rule) => ({ ...rule, enabled: rule.enabled ?? true })) });
60
+ return ok({
61
+ request: requestSummaryView(found),
62
+ workspace: workspaceTag(ws),
63
+ added: created.items.map(ruleView),
64
+ ...(replace ? { removed: existing.length } : {}),
65
+ ...(warnings.length > 0 ? { warnings } : {}),
66
+ });
67
+ }));
68
+ server.registerTool("update_contract_rule", {
69
+ title: "Change one contract rule",
70
+ description: "Change one contract rule by id (from get_contract_checks): its path, its rules (the whole rules object is replaced — send every check you want to keep) and/or enabled.",
71
+ inputSchema: {
72
+ workspace: workspaceArg,
73
+ rule: z.string().min(1).max(64).describe("Rule id from get_contract_checks"),
74
+ path: contractPathSchema.optional(),
75
+ rules: contractRulesSchema.optional(),
76
+ enabled: z.boolean().optional(),
77
+ },
78
+ annotations: IDEMPOTENT_WRITE,
79
+ }, guarded(async ({ workspace, rule, path, rules, enabled }) => {
80
+ if (path === undefined && rules === undefined && enabled === undefined)
81
+ throw new ToolInputError("NOTHING_TO_UPDATE", "Pass path, rules and/or enabled.");
82
+ const body = { ...(path !== undefined ? { path } : {}), ...(rules !== undefined ? { rules } : {}), ...(enabled !== undefined ? { enabled } : {}) };
83
+ // A rule id lives in exactly one workspace; the others answer 404.
84
+ const { ws, value: updated } = await findInWorkspaces(ctx, workspace, "contract rule", rule, (candidate) => ctx.api.updateContractRule(candidate.id, rule, body), { matchOf: () => "id" });
85
+ return ok({ rule: ruleView(updated), workspace: workspaceTag(ws) });
86
+ }));
87
+ server.registerTool("delete_contract_rules", {
88
+ title: "Delete contract rules",
89
+ description: "Delete contract rules of a request — the listed rule ids, or all of them when `rules` is omitted. Permanent — confirm with the user first.",
90
+ inputSchema: {
91
+ ...requestArgs,
92
+ rules: z.array(z.string().min(1).max(64)).max(200).optional().describe("Rule ids; omit to delete every rule of the request"),
93
+ confirm: confirmArg,
94
+ },
95
+ annotations: DESTRUCTIVE,
96
+ }, guarded(async ({ workspace, request, collection, rules, confirm }) => {
97
+ requireConfirm(confirm, "contract rules");
98
+ const { ws, value } = await findRequest(ctx, workspace, request, collection, { exact: true });
99
+ const { request: found } = value;
100
+ const existing = (await ctx.api.listContractRules(ws.id, found.id)).items;
101
+ const ids = rules ?? existing.map((rule) => rule.id);
102
+ const unknown = ids.filter((id) => !existing.some((rule) => rule.id === id));
103
+ if (unknown.length > 0) {
104
+ throw new ToolInputError("CONTRACT_RULE_NOT_FOUND", `Not rules of "${found.name}": ${unknown.join(", ")}.`, { rules: existing.map(ruleView) });
105
+ }
106
+ const deleted = [];
107
+ const failed = [];
108
+ for (const id of ids) {
109
+ try {
110
+ await ctx.api.deleteContractRule(ws.id, id);
111
+ deleted.push(id);
112
+ }
113
+ catch (error) {
114
+ failed.push({ rule: id, error: failureOf(error) });
115
+ }
116
+ }
117
+ return ok({ request: requestSummaryView(found),
118
+ workspace: workspaceTag(ws), deleted, failed });
119
+ }));
120
+ server.registerTool("test_contract_rules", {
121
+ title: "Test contract rules against a response body",
122
+ description: "Evaluate a request's ENABLED contract rules against a response body you provide (e.g. a sample from the API docs or a previous run) — on the server, nothing is sent to the API and nothing is saved. Returns pass/fail per rule. `response.*` rules (status, headers) need a real run: use run_request.",
123
+ inputSchema: {
124
+ ...requestArgs,
125
+ responseBody: z.unknown().describe("The response body (JSON value) to check"),
126
+ },
127
+ annotations: READ,
128
+ }, guarded(async ({ workspace, request, collection, responseBody }) => {
129
+ const { ws, value } = await findRequest(ctx, workspace, request, collection);
130
+ const { request: found } = value;
131
+ const result = await ctx.api.validateContractRules(ws.id, { requestId: found.id, responseBody: responseBody ?? null });
132
+ return ok({ request: requestSummaryView(found),
133
+ workspace: workspaceTag(ws), summary: result.summary, results: result.results });
134
+ }));
135
+ server.registerTool("set_data_contract", {
136
+ title: "Set a request's data-driven contract",
137
+ description: `Replace a request's data-driven contract: the request runs once per row with the row's values as {{data.<column>}}, and each row checks its own expectedStatus and assertions (same rule vocabulary as contract rules). Limits: ${DATA_CONTRACT_LIMITS.columns} columns, ${DATA_CONTRACT_LIMITS.rows} rows, ${DATA_CONTRACT_LIMITS.assertions} assertions per row. Put {{data.<column>}} into the request's url/body/headers with update_request so the rows are used.`,
138
+ inputSchema: {
139
+ ...requestArgs,
140
+ columns: z.array(z.string().trim().min(1).max(200)).max(DATA_CONTRACT_LIMITS.columns).describe("Column names — referenced as {{data.<column>}}"),
141
+ rows: z.array(dataContractRowSchema).min(1).max(DATA_CONTRACT_LIMITS.rows),
142
+ },
143
+ annotations: IDEMPOTENT_WRITE,
144
+ }, guarded(async ({ workspace, request, collection, columns, rows }) => {
145
+ const undeclared = undeclaredDataColumns(columns, rows);
146
+ if (undeclared.length > 0) {
147
+ throw new ToolInputError("DATA_COLUMN_UNDECLARED", `Rows use column(s) not in columns: ${undeclared.join(", ")}.`);
148
+ }
149
+ const { ws, value } = await findRequest(ctx, workspace, request, collection);
150
+ const { request: found } = value;
151
+ const saved = await ctx.api.putDataContract(ws.id, { requestId: found.id, columns, rows });
152
+ const text = JSON.stringify([found.url, found.headers, found.body, found.query]);
153
+ const unused = columns.filter((column) => !text.includes(`{{data.${column}}}`));
154
+ return ok({
155
+ request: requestSummaryView(found),
156
+ workspace: workspaceTag(ws),
157
+ dataContract: { columns: saved.columns, rows: saved.rows.length },
158
+ ...(unused.length > 0 ? { warnings: [`The request does not reference {{data.${unused.join("}}, {{data.")}}} yet — add them to its url, query, headers or body with update_request.`] } : {}),
159
+ });
160
+ }));
161
+ server.registerTool("delete_data_contract", {
162
+ title: "Delete a request's data-driven contract",
163
+ description: "Remove a request's data-driven contract (all rows). Permanent — confirm with the user first.",
164
+ inputSchema: { ...requestArgs, confirm: confirmArg },
165
+ annotations: DESTRUCTIVE,
166
+ }, guarded(async ({ workspace, request, collection, confirm }) => {
167
+ requireConfirm(confirm, "a data contract");
168
+ const { ws, value } = await findRequest(ctx, workspace, request, collection, { exact: true });
169
+ const { request: found } = value;
170
+ await ctx.api.deleteDataContract(ws.id, found.id);
171
+ return ok({ request: requestSummaryView(found),
172
+ workspace: workspaceTag(ws), deleted: true });
173
+ }));
174
+ server.registerTool("list_connections", {
175
+ title: "List workspace connections",
176
+ description: "List database / Redis / Kafka / notification / AI connections (id, name, type, provider, workspace — never credentials) across all your workspaces, or one `workspace`. A connection belongs to one workspace: use one from the same workspace as the request or scenario. Request database/Kafka/Redis steps and scenario db/redis/kafka/notification/ai nodes reference a connection by this id (or name). Connections are created and tested in the desktop app.",
177
+ inputSchema: {
178
+ workspace: workspaceArg,
179
+ type: z.enum(["database", "redis", "kafka", "notification", "ai"]).optional(),
180
+ },
181
+ annotations: READ,
182
+ }, guarded(async ({ workspace, type }) => {
183
+ const workspaces = await workspacesForListing(ctx, workspace);
184
+ const perWorkspace = await Promise.all(workspaces.map(async (ws) => (await ctx.api.listConnections(ws.id, type)).map((connection) => ({ ws, connection }))));
185
+ return ok({
186
+ ...(workspaces.length === 1 ? { workspace: workspaceTag(workspaces[0]) } : { workspaces: workspaces.map(workspaceTag) }),
187
+ connections: perWorkspace.flat().map(({ ws, connection }) => ({
188
+ id: connection.id,
189
+ name: connection.name,
190
+ ...(workspaces.length > 1 ? { workspace: workspaceTag(ws) } : {}),
191
+ type: connection.type,
192
+ provider: connection.provider,
193
+ ...(connection.description ? { description: connection.description } : {}),
194
+ ...(connection.isActive === false ? { active: false } : {}),
195
+ ...(connection.managed ? { managed: true } : {}),
196
+ ...(connection.lastTestStatus ? { lastTest: connection.lastTestStatus } : {}),
197
+ })),
198
+ });
199
+ }));
200
+ };
201
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/tools/contracts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagrams.d.ts","sourceRoot":"","sources":["../../src/tools/diagrams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAqBjD,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS,EAAE,KAAK,WAAW,KAAG,IA4O1E,CAAC"}
1
+ {"version":3,"file":"diagrams.d.ts","sourceRoot":"","sources":["../../src/tools/diagrams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAqBjD,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS,EAAE,KAAK,WAAW,KAAG,IAwP1E,CAAC"}