callman-mcp 0.1.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.
- package/CHANGELOG.md +28 -0
- package/LICENSE +21 -0
- package/README.md +203 -0
- package/dist/client/api.d.ts +109 -0
- package/dist/client/api.d.ts.map +1 -0
- package/dist/client/api.js +180 -0
- package/dist/client/api.js.map +1 -0
- package/dist/client/errors.d.ts +27 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +98 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/http.d.ts +34 -0
- package/dist/client/http.d.ts.map +1 -0
- package/dist/client/http.js +121 -0
- package/dist/client/http.js.map +1 -0
- package/dist/client/types.d.ts +327 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +5 -0
- package/dist/client/types.js.map +1 -0
- package/dist/config.d.ts +20 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +69 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +35 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +91 -0
- package/dist/context.js.map +1 -0
- package/dist/domain/diagram/build.d.ts +260 -0
- package/dist/domain/diagram/build.d.ts.map +1 -0
- package/dist/domain/diagram/build.js +160 -0
- package/dist/domain/diagram/build.js.map +1 -0
- package/dist/domain/diagram/layout.d.ts +17 -0
- package/dist/domain/diagram/layout.d.ts.map +1 -0
- package/dist/domain/diagram/layout.js +61 -0
- package/dist/domain/diagram/layout.js.map +1 -0
- package/dist/domain/diagram/patch.d.ts +330 -0
- package/dist/domain/diagram/patch.d.ts.map +1 -0
- package/dist/domain/diagram/patch.js +176 -0
- package/dist/domain/diagram/patch.js.map +1 -0
- package/dist/domain/diagram/summarize.d.ts +41 -0
- package/dist/domain/diagram/summarize.d.ts.map +1 -0
- package/dist/domain/diagram/summarize.js +47 -0
- package/dist/domain/diagram/summarize.js.map +1 -0
- package/dist/domain/importDetect.d.ts +6 -0
- package/dist/domain/importDetect.d.ts.map +1 -0
- package/dist/domain/importDetect.js +32 -0
- package/dist/domain/importDetect.js.map +1 -0
- package/dist/domain/requestShape.d.ts +796 -0
- package/dist/domain/requestShape.d.ts.map +1 -0
- package/dist/domain/requestShape.js +250 -0
- package/dist/domain/requestShape.js.map +1 -0
- package/dist/domain/resolve.d.ts +30 -0
- package/dist/domain/resolve.d.ts.map +1 -0
- package/dist/domain/resolve.js +56 -0
- package/dist/domain/resolve.js.map +1 -0
- package/dist/domain/scenario/build.d.ts +270 -0
- package/dist/domain/scenario/build.d.ts.map +1 -0
- package/dist/domain/scenario/build.js +135 -0
- package/dist/domain/scenario/build.js.map +1 -0
- package/dist/domain/scenario/summarize.d.ts +206 -0
- package/dist/domain/scenario/summarize.d.ts.map +1 -0
- package/dist/domain/scenario/summarize.js +138 -0
- package/dist/domain/scenario/summarize.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cache.d.ts +12 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/dist/lib/cache.js +40 -0
- package/dist/lib/cache.js.map +1 -0
- package/dist/lib/ids.d.ts +5 -0
- package/dist/lib/ids.d.ts.map +1 -0
- package/dist/lib/ids.js +19 -0
- package/dist/lib/ids.js.map +1 -0
- package/dist/lib/log.d.ts +10 -0
- package/dist/lib/log.d.ts.map +1 -0
- package/dist/lib/log.js +25 -0
- package/dist/lib/log.js.map +1 -0
- package/dist/lib/mask.d.ts +24 -0
- package/dist/lib/mask.d.ts.map +1 -0
- package/dist/lib/mask.js +63 -0
- package/dist/lib/mask.js.map +1 -0
- package/dist/lib/pagination.d.ts +21 -0
- package/dist/lib/pagination.d.ts.map +1 -0
- package/dist/lib/pagination.js +40 -0
- package/dist/lib/pagination.js.map +1 -0
- package/dist/lib/truncate.d.ts +25 -0
- package/dist/lib/truncate.d.ts.map +1 -0
- package/dist/lib/truncate.js +45 -0
- package/dist/lib/truncate.js.map +1 -0
- package/dist/main.d.ts +9 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +12 -0
- package/dist/main.js.map +1 -0
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +72 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/docs/diagramSchema.d.ts +2 -0
- package/dist/resources/docs/diagramSchema.d.ts.map +1 -0
- package/dist/resources/docs/diagramSchema.js +65 -0
- package/dist/resources/docs/diagramSchema.js.map +1 -0
- package/dist/resources/docs/overview.d.ts +2 -0
- package/dist/resources/docs/overview.d.ts.map +1 -0
- package/dist/resources/docs/overview.js +46 -0
- package/dist/resources/docs/overview.js.map +1 -0
- package/dist/resources/docs/requestSchema.d.ts +2 -0
- package/dist/resources/docs/requestSchema.d.ts.map +1 -0
- package/dist/resources/docs/requestSchema.js +70 -0
- package/dist/resources/docs/requestSchema.js.map +1 -0
- package/dist/resources/generated/aiPacks.d.ts +3 -0
- package/dist/resources/generated/aiPacks.d.ts.map +1 -0
- package/dist/resources/generated/aiPacks.js +11 -0
- package/dist/resources/generated/aiPacks.js.map +1 -0
- package/dist/resources/index.d.ts +4 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +114 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/run/executeCollection.d.ts +19 -0
- package/dist/run/executeCollection.d.ts.map +1 -0
- package/dist/run/executeCollection.js +89 -0
- package/dist/run/executeCollection.js.map +1 -0
- package/dist/run/loadBundle.d.ts +9 -0
- package/dist/run/loadBundle.d.ts.map +1 -0
- package/dist/run/loadBundle.js +242 -0
- package/dist/run/loadBundle.js.map +1 -0
- package/dist/run/resolveTemplate.d.ts +2 -0
- package/dist/run/resolveTemplate.d.ts.map +1 -0
- package/dist/run/resolveTemplate.js +12 -0
- package/dist/run/resolveTemplate.js.map +1 -0
- package/dist/run/summarize.d.ts +73 -0
- package/dist/run/summarize.d.ts.map +1 -0
- package/dist/run/summarize.js +69 -0
- package/dist/run/summarize.js.map +1 -0
- package/dist/run/types.d.ts +46 -0
- package/dist/run/types.d.ts.map +1 -0
- package/dist/run/types.js +2 -0
- package/dist/run/types.js.map +1 -0
- package/dist/server.d.ts +23 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +25 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/catalog.d.ts +18 -0
- package/dist/tools/catalog.d.ts.map +1 -0
- package/dist/tools/catalog.js +66 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/collections.d.ts +4 -0
- package/dist/tools/collections.d.ts.map +1 -0
- package/dist/tools/collections.js +201 -0
- package/dist/tools/collections.js.map +1 -0
- package/dist/tools/diagrams.d.ts +4 -0
- package/dist/tools/diagrams.d.ts.map +1 -0
- package/dist/tools/diagrams.js +226 -0
- package/dist/tools/diagrams.js.map +1 -0
- package/dist/tools/environments.d.ts +4 -0
- package/dist/tools/environments.d.ts.map +1 -0
- package/dist/tools/environments.js +150 -0
- package/dist/tools/environments.js.map +1 -0
- package/dist/tools/import.d.ts +6 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +144 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +26 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/lookups.d.ts +33 -0
- package/dist/tools/lookups.d.ts.map +1 -0
- package/dist/tools/lookups.js +132 -0
- package/dist/tools/lookups.js.map +1 -0
- package/dist/tools/meta.d.ts +4 -0
- package/dist/tools/meta.d.ts.map +1 -0
- package/dist/tools/meta.js +78 -0
- package/dist/tools/meta.js.map +1 -0
- package/dist/tools/requests.d.ts +4 -0
- package/dist/tools/requests.d.ts.map +1 -0
- package/dist/tools/requests.js +247 -0
- package/dist/tools/requests.js.map +1 -0
- package/dist/tools/run.d.ts +4 -0
- package/dist/tools/run.d.ts.map +1 -0
- package/dist/tools/run.js +167 -0
- package/dist/tools/run.js.map +1 -0
- package/dist/tools/scenarios.d.ts +4 -0
- package/dist/tools/scenarios.d.ts.map +1 -0
- package/dist/tools/scenarios.js +242 -0
- package/dist/tools/scenarios.js.map +1 -0
- package/dist/tools/shared.d.ts +20 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +74 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/tools/workspaces.d.ts +4 -0
- package/dist/tools/workspaces.d.ts.map +1 -0
- package/dist/tools/workspaces.js +80 -0
- package/dist/tools/workspaces.js.map +1 -0
- package/dist-cjs/client/api.js +183 -0
- package/dist-cjs/client/errors.js +104 -0
- package/dist-cjs/client/http.js +124 -0
- package/dist-cjs/client/types.js +5 -0
- package/dist-cjs/config.js +73 -0
- package/dist-cjs/context.js +94 -0
- package/dist-cjs/domain/diagram/build.js +164 -0
- package/dist-cjs/domain/diagram/layout.js +98 -0
- package/dist-cjs/domain/diagram/patch.js +179 -0
- package/dist-cjs/domain/diagram/summarize.js +52 -0
- package/dist-cjs/domain/importDetect.js +40 -0
- package/dist-cjs/domain/requestShape.js +260 -0
- package/dist-cjs/domain/resolve.js +63 -0
- package/dist-cjs/domain/scenario/build.js +140 -0
- package/dist-cjs/domain/scenario/summarize.js +144 -0
- package/dist-cjs/lib/cache.js +43 -0
- package/dist-cjs/lib/ids.js +24 -0
- package/dist-cjs/lib/log.js +28 -0
- package/dist-cjs/lib/mask.js +72 -0
- package/dist-cjs/lib/pagination.js +48 -0
- package/dist-cjs/lib/truncate.js +52 -0
- package/dist-cjs/main.js +31 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/prompts/index.js +75 -0
- package/dist-cjs/resources/docs/diagramSchema.js +67 -0
- package/dist-cjs/resources/docs/overview.js +48 -0
- package/dist-cjs/resources/docs/requestSchema.js +72 -0
- package/dist-cjs/resources/generated/aiPacks.js +13 -0
- package/dist-cjs/resources/index.js +117 -0
- package/dist-cjs/run/executeCollection.js +93 -0
- package/dist-cjs/run/loadBundle.js +246 -0
- package/dist-cjs/run/resolveTemplate.js +15 -0
- package/dist-cjs/run/summarize.js +73 -0
- package/dist-cjs/run/types.js +2 -0
- package/dist-cjs/server.js +28 -0
- package/dist-cjs/tools/catalog.js +69 -0
- package/dist-cjs/tools/collections.js +204 -0
- package/dist-cjs/tools/diagrams.js +229 -0
- package/dist-cjs/tools/environments.js +153 -0
- package/dist-cjs/tools/import.js +147 -0
- package/dist-cjs/tools/index.js +31 -0
- package/dist-cjs/tools/lookups.js +149 -0
- package/dist-cjs/tools/meta.js +81 -0
- package/dist-cjs/tools/requests.js +250 -0
- package/dist-cjs/tools/run.js +203 -0
- package/dist-cjs/tools/scenarios.js +245 -0
- package/dist-cjs/tools/shared.js +81 -0
- package/dist-cjs/tools/workspaces.js +83 -0
- package/package.json +80 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// The tool ↔ scope catalog: what a token needs for each tool. Used by
|
|
2
|
+
// `whoami` to tell the model up front which tools will work with the current
|
|
3
|
+
// token, by the README/in-app guide (kept in sync by hand), and by the
|
|
4
|
+
// backend host later to advertise the same list.
|
|
5
|
+
export const TOOL_CATALOG = [
|
|
6
|
+
{ name: "whoami", group: "meta", scopes: [] },
|
|
7
|
+
{ name: "list_workspaces", group: "workspaces", scopes: ["workspaces:read"] },
|
|
8
|
+
{ name: "list_workspace_members", group: "workspaces", scopes: ["workspaces:read"] },
|
|
9
|
+
{ name: "add_workspace_member", group: "workspaces", scopes: ["members:manage"] },
|
|
10
|
+
{ name: "remove_workspace_member", group: "workspaces", scopes: ["members:manage"], destructive: true },
|
|
11
|
+
{ name: "list_collections", group: "collections", scopes: ["collections:read"] },
|
|
12
|
+
{ name: "get_collection_tree", group: "collections", scopes: ["collections:read", "requests:read"] },
|
|
13
|
+
{ name: "export_collection", group: "collections", scopes: ["collections:read"] },
|
|
14
|
+
{ name: "create_collection", group: "collections", scopes: ["collections:write"] },
|
|
15
|
+
{ name: "update_collection", group: "collections", scopes: ["collections:write"] },
|
|
16
|
+
{ name: "create_folder", group: "collections", scopes: ["collections:write"] },
|
|
17
|
+
{ name: "update_folder", group: "collections", scopes: ["collections:write"] },
|
|
18
|
+
{ name: "delete_collection", group: "collections", scopes: ["collections:delete"], destructive: true },
|
|
19
|
+
{ name: "delete_folder", group: "collections", scopes: ["collections:delete"], destructive: true },
|
|
20
|
+
{ name: "search_requests", group: "requests", scopes: ["requests:read"] },
|
|
21
|
+
{ name: "get_request", group: "requests", scopes: ["requests:read"] },
|
|
22
|
+
{ name: "create_request", group: "requests", scopes: ["requests:write"] },
|
|
23
|
+
// Existing collection → POST /requests (requests:write); new collection → the
|
|
24
|
+
// atomic POST /import/json (import:write). Either makes the tool usable.
|
|
25
|
+
{ name: "create_requests_bulk", group: "requests", scopes: ["requests:write", "import:write"], anyOf: true },
|
|
26
|
+
{ name: "update_request", group: "requests", scopes: ["requests:write"] },
|
|
27
|
+
{ name: "move_requests", group: "requests", scopes: ["requests:write"] },
|
|
28
|
+
{ name: "delete_requests", group: "requests", scopes: ["requests:delete"], destructive: true },
|
|
29
|
+
{ name: "run_request", group: "run", scopes: ["requests:run"], localRun: true },
|
|
30
|
+
{ name: "run_collection", group: "run", scopes: ["requests:run"], localRun: true },
|
|
31
|
+
// Documents and new collections → import:write; cURL/.http into an existing
|
|
32
|
+
// collection → requests:write.
|
|
33
|
+
{ name: "import_content", group: "import", scopes: ["import:write", "requests:write"], anyOf: true },
|
|
34
|
+
{ name: "import_scenario", group: "import", scopes: ["import:write"] },
|
|
35
|
+
{ name: "list_environments", group: "environments", scopes: ["environments:read"] },
|
|
36
|
+
{ name: "get_environment", group: "environments", scopes: ["environments:read"] },
|
|
37
|
+
{ name: "create_environment", group: "environments", scopes: ["environments:write"] },
|
|
38
|
+
{ name: "set_environment_variables", group: "environments", scopes: ["environments:write"] },
|
|
39
|
+
{ name: "delete_environment", group: "environments", scopes: ["environments:delete"], destructive: true },
|
|
40
|
+
{ name: "list_scenarios", group: "scenarios", scopes: ["scenarios:read"] },
|
|
41
|
+
{ name: "get_scenario", group: "scenarios", scopes: ["scenarios:read"] },
|
|
42
|
+
{ name: "get_scenario_report", group: "scenarios", scopes: ["scenarios:read"] },
|
|
43
|
+
{ name: "create_scenario", group: "scenarios", scopes: ["scenarios:write"] },
|
|
44
|
+
{ name: "update_scenario", group: "scenarios", scopes: ["scenarios:write"] },
|
|
45
|
+
{ name: "delete_scenario", group: "scenarios", scopes: ["scenarios:delete"], destructive: true },
|
|
46
|
+
{ name: "run_scenario", group: "scenarios", scopes: ["scenarios:run"] },
|
|
47
|
+
{ name: "list_diagrams", group: "diagrams", scopes: ["diagrams:read"] },
|
|
48
|
+
{ name: "get_diagram", group: "diagrams", scopes: ["diagrams:read"] },
|
|
49
|
+
{ name: "create_diagram", group: "diagrams", scopes: ["diagrams:write"] },
|
|
50
|
+
{ name: "update_diagram", group: "diagrams", scopes: ["diagrams:write"] },
|
|
51
|
+
{ name: "patch_diagram", group: "diagrams", scopes: ["diagrams:write"] },
|
|
52
|
+
{ name: "delete_diagram", group: "diagrams", scopes: ["diagrams:delete"], destructive: true },
|
|
53
|
+
{ name: "share_diagram", group: "diagrams", scopes: ["diagrams:share"] },
|
|
54
|
+
];
|
|
55
|
+
export const toolAvailability = (tokenScopes, allowLocalRun) => {
|
|
56
|
+
const held = new Set(tokenScopes);
|
|
57
|
+
return TOOL_CATALOG.map((entry) => {
|
|
58
|
+
if (entry.localRun && !allowLocalRun) {
|
|
59
|
+
return { name: entry.name, available: false, missingScopes: [], reason: "local runs are disabled (CALLMAN_ALLOW_RUN=0)" };
|
|
60
|
+
}
|
|
61
|
+
const missing = entry.scopes.filter((scope) => !held.has(scope));
|
|
62
|
+
const available = entry.anyOf ? missing.length < entry.scopes.length : missing.length === 0;
|
|
63
|
+
return { name: entry.name, available, missingScopes: available ? [] : missing };
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/tools/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/tools/collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAUjD,eAAO,MAAM,uBAAuB,GAAI,QAAQ,SAAS,EAAE,KAAK,WAAW,KAAG,IAoO7E,CAAC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ToolInputError } from "../client/errors.js";
|
|
3
|
+
import { requestSummaryView } from "../domain/requestShape.js";
|
|
4
|
+
import { resolvedSummary } from "../domain/resolve.js";
|
|
5
|
+
import { sliceWithCursor } from "../lib/pagination.js";
|
|
6
|
+
import { byteLength, LIMITS } from "../lib/truncate.js";
|
|
7
|
+
import { loadCollections, loadTree, resolveCollection, resolveFolder, sameName } from "./lookups.js";
|
|
8
|
+
import { confirmArg, cursorArgs, DESTRUCTIVE, guarded, IDEMPOTENT_WRITE, ok, READ, refArg, requireConfirm, workspaceArg, WRITE } from "./shared.js";
|
|
9
|
+
const EXPORT_MAX_BYTES = 1024 * 1024;
|
|
10
|
+
export const registerCollectionTools = (server, ctx) => {
|
|
11
|
+
server.registerTool("list_collections", {
|
|
12
|
+
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.",
|
|
14
|
+
inputSchema: { workspace: workspaceArg, query: z.string().max(200).optional(), ...cursorArgs },
|
|
15
|
+
annotations: READ,
|
|
16
|
+
}, guarded(async ({ workspace, query, cursor, limit }) => {
|
|
17
|
+
const ws = await ctx.resolveWorkspace(workspace);
|
|
18
|
+
const all = await loadCollections(ctx, ws.id);
|
|
19
|
+
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);
|
|
22
|
+
return ok({
|
|
23
|
+
workspace: { id: ws.id, name: ws.name },
|
|
24
|
+
collections: page.items.map((collection) => ({
|
|
25
|
+
id: collection.id,
|
|
26
|
+
name: collection.name,
|
|
27
|
+
requestCount: collection.requestCount ?? null,
|
|
28
|
+
folderCount: collection.folderCount ?? null,
|
|
29
|
+
updatedAt: collection.updatedAt ?? null,
|
|
30
|
+
})),
|
|
31
|
+
total: page.total,
|
|
32
|
+
nextCursor: page.nextCursor,
|
|
33
|
+
});
|
|
34
|
+
}));
|
|
35
|
+
server.registerTool("get_collection_tree", {
|
|
36
|
+
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.",
|
|
38
|
+
inputSchema: { workspace: workspaceArg, collection: refArg("Collection") },
|
|
39
|
+
annotations: READ,
|
|
40
|
+
}, guarded(async ({ workspace, collection }) => {
|
|
41
|
+
const ws = await ctx.resolveWorkspace(workspace);
|
|
42
|
+
const resolved = await resolveCollection(ctx, ws.id, collection);
|
|
43
|
+
const tree = await loadTree(ctx, ws.id, resolved.item.id);
|
|
44
|
+
const truncated = tree.requests.length > LIMITS.TREE_ITEMS;
|
|
45
|
+
return ok({
|
|
46
|
+
collection: { id: resolved.item.id, name: resolved.item.name },
|
|
47
|
+
resolved: [resolvedSummary(collection, resolved)],
|
|
48
|
+
folders: tree.folders.map((folder) => ({ id: folder.id, name: folder.name, parentId: folder.parentId, path: folder.path })),
|
|
49
|
+
requests: tree.requests.slice(0, LIMITS.TREE_ITEMS).map(requestSummaryView),
|
|
50
|
+
...(truncated ? { truncated: true, totalRequests: tree.requests.length } : {}),
|
|
51
|
+
});
|
|
52
|
+
}));
|
|
53
|
+
server.registerTool("export_collection", {
|
|
54
|
+
title: "Export a collection",
|
|
55
|
+
description: "Export a collection as a document: `internal` (Callman's own format, re-importable, includes scripts/contracts) or `postman` (Postman v2.1). Auth secrets in the export are NOT masked — treat the result as sensitive.",
|
|
56
|
+
inputSchema: { workspace: workspaceArg, collection: refArg("Collection"), format: z.enum(["internal", "postman"]).default("internal") },
|
|
57
|
+
annotations: READ,
|
|
58
|
+
}, guarded(async ({ workspace, collection, format }) => {
|
|
59
|
+
const ws = await ctx.resolveWorkspace(workspace);
|
|
60
|
+
const resolved = await resolveCollection(ctx, ws.id, collection);
|
|
61
|
+
const document = await ctx.api.exportCollection(ws.id, resolved.item.id, format);
|
|
62
|
+
const bytes = byteLength(document);
|
|
63
|
+
if (bytes > EXPORT_MAX_BYTES) {
|
|
64
|
+
throw new ToolInputError("EXPORT_TOO_LARGE", `The export is ${bytes} bytes (limit ${EXPORT_MAX_BYTES}). Export it from the desktop app instead.`, { bytes });
|
|
65
|
+
}
|
|
66
|
+
return ok({ collection: { id: resolved.item.id, name: resolved.item.name }, format, bytes, document: document });
|
|
67
|
+
}));
|
|
68
|
+
server.registerTool("create_collection", {
|
|
69
|
+
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.",
|
|
71
|
+
inputSchema: {
|
|
72
|
+
workspace: workspaceArg,
|
|
73
|
+
name: z.string().min(1).max(LIMITS.NAME),
|
|
74
|
+
allowDuplicateName: z.boolean().optional(),
|
|
75
|
+
runnerSettings: z.object({ database: z.boolean().optional(), kafka: z.boolean().optional(), redis: z.boolean().optional() }).optional(),
|
|
76
|
+
},
|
|
77
|
+
annotations: WRITE,
|
|
78
|
+
}, guarded(async ({ workspace, name, allowDuplicateName, runnerSettings }) => {
|
|
79
|
+
const ws = await ctx.resolveWorkspace(workspace);
|
|
80
|
+
const existing = (await loadCollections(ctx, ws.id)).find((collection) => sameName(collection.name, name));
|
|
81
|
+
if (existing && !allowDuplicateName) {
|
|
82
|
+
throw new ToolInputError("COLLECTION_NAME_EXISTS", `A collection named "${existing.name}" already exists (id ${existing.id}). Reuse it, pick another name, or pass allowDuplicateName: true.`, {
|
|
83
|
+
existing: { id: existing.id, name: existing.name },
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
const created = await ctx.api.createCollection(ws.id, { name: name.trim(), ...(runnerSettings ? { runnerSettings: compactSettings(runnerSettings) } : {}) });
|
|
87
|
+
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." });
|
|
89
|
+
}));
|
|
90
|
+
server.registerTool("update_collection", {
|
|
91
|
+
title: "Rename a collection / change runner settings",
|
|
92
|
+
description: "Rename a collection or toggle its runner settings (database / kafka / redis steps during runs).",
|
|
93
|
+
inputSchema: {
|
|
94
|
+
workspace: workspaceArg,
|
|
95
|
+
collection: refArg("Collection"),
|
|
96
|
+
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(),
|
|
98
|
+
},
|
|
99
|
+
annotations: IDEMPOTENT_WRITE,
|
|
100
|
+
}, guarded(async ({ workspace, collection, name, runnerSettings }) => {
|
|
101
|
+
if (name === undefined && runnerSettings === undefined)
|
|
102
|
+
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);
|
|
105
|
+
const updated = await ctx.api.updateCollection(ws.id, resolved.item.id, {
|
|
106
|
+
...(name !== undefined ? { name: name.trim() } : {}),
|
|
107
|
+
...(runnerSettings ? { runnerSettings: compactSettings(runnerSettings) } : {}),
|
|
108
|
+
});
|
|
109
|
+
ctx.invalidate(`collections:${ws.id}`);
|
|
110
|
+
return ok({ collection: { id: updated.id, name: updated.name, runnerSettings: updated.runnerSettings ?? null }, resolved: [resolvedSummary(collection, resolved)] });
|
|
111
|
+
}));
|
|
112
|
+
server.registerTool("create_folder", {
|
|
113
|
+
title: "Create a folder",
|
|
114
|
+
description: "Create a folder in a collection, optionally inside a parent folder (id, name or path).",
|
|
115
|
+
inputSchema: {
|
|
116
|
+
workspace: workspaceArg,
|
|
117
|
+
collection: refArg("Collection"),
|
|
118
|
+
name: z.string().min(1).max(LIMITS.NAME),
|
|
119
|
+
parent: z.string().max(300).optional().describe("Parent folder id, name or path; omit for top level"),
|
|
120
|
+
},
|
|
121
|
+
annotations: WRITE,
|
|
122
|
+
}, guarded(async ({ workspace, collection, name, parent }) => {
|
|
123
|
+
const ws = await ctx.resolveWorkspace(workspace);
|
|
124
|
+
const resolved = await resolveCollection(ctx, ws.id, collection);
|
|
125
|
+
const parentFolder = await resolveFolder(ctx, ws.id, resolved.item.id, parent);
|
|
126
|
+
const tree = await loadTree(ctx, ws.id, resolved.item.id);
|
|
127
|
+
const sibling = tree.folders.find((folder) => folder.parentId === (parentFolder?.item.id ?? null) && sameName(folder.name, name));
|
|
128
|
+
if (sibling) {
|
|
129
|
+
return ok({ folder: { id: sibling.id, name: sibling.name, path: sibling.path }, existed: true, note: "A folder with that name already exists there — returned instead of creating a duplicate." });
|
|
130
|
+
}
|
|
131
|
+
const folder = await ctx.api.createFolder(ws.id, { name: name.trim(), collectionId: resolved.item.id, parentId: parentFolder?.item.id ?? null });
|
|
132
|
+
ctx.invalidate(`tree:${ws.id}:${resolved.item.id}`);
|
|
133
|
+
ctx.invalidate(`collections:${ws.id}`);
|
|
134
|
+
return ok({
|
|
135
|
+
folder: { id: folder.id, name: folder.name, parentId: folder.parentId, path: parentFolder ? `${parentFolder.item.path}/${folder.name}` : folder.name },
|
|
136
|
+
resolved: [resolvedSummary(collection, resolved), ...(parentFolder ? [resolvedSummary(parent, parentFolder)] : [])],
|
|
137
|
+
});
|
|
138
|
+
}));
|
|
139
|
+
server.registerTool("update_folder", {
|
|
140
|
+
title: "Rename or move a folder",
|
|
141
|
+
description: "Rename a folder and/or move it under another parent (pass parent: null for top level).",
|
|
142
|
+
inputSchema: {
|
|
143
|
+
workspace: workspaceArg,
|
|
144
|
+
collection: refArg("Collection"),
|
|
145
|
+
folder: refArg("Folder", "(or path)"),
|
|
146
|
+
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"),
|
|
148
|
+
},
|
|
149
|
+
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);
|
|
155
|
+
const target = await resolveFolder(ctx, ws.id, resolved.item.id, folder);
|
|
156
|
+
if (!target)
|
|
157
|
+
throw new ToolInputError("REF_REQUIRED", "folder is required.");
|
|
158
|
+
const parentFolder = parent ? await resolveFolder(ctx, ws.id, resolved.item.id, parent) : null;
|
|
159
|
+
if (parentFolder && parentFolder.item.id === target.item.id)
|
|
160
|
+
throw new ToolInputError("FOLDER_CYCLE", "A folder cannot be its own parent.");
|
|
161
|
+
const updated = await ctx.api.updateFolder(ws.id, target.item.id, {
|
|
162
|
+
...(name !== undefined ? { name: name.trim() } : {}),
|
|
163
|
+
...(parent !== undefined ? { parentId: parentFolder?.item.id ?? null } : {}),
|
|
164
|
+
});
|
|
165
|
+
ctx.invalidate(`tree:${ws.id}:${resolved.item.id}`);
|
|
166
|
+
return ok({ folder: { id: updated.id, name: updated.name, parentId: updated.parentId }, resolved: [resolvedSummary(collection, resolved), resolvedSummary(folder, target)] });
|
|
167
|
+
}));
|
|
168
|
+
server.registerTool("delete_collection", {
|
|
169
|
+
title: "Delete a collection",
|
|
170
|
+
description: "Delete a collection with all its folders and requests. Permanent — confirm with the user first.",
|
|
171
|
+
inputSchema: { workspace: workspaceArg, collection: refArg("Collection"), confirm: confirmArg },
|
|
172
|
+
annotations: DESTRUCTIVE,
|
|
173
|
+
}, guarded(async ({ workspace, collection, confirm }) => {
|
|
174
|
+
requireConfirm(confirm, "a collection");
|
|
175
|
+
const ws = await ctx.resolveWorkspace(workspace);
|
|
176
|
+
const resolved = await resolveCollection(ctx, ws.id, collection);
|
|
177
|
+
await ctx.api.deleteCollection(ws.id, resolved.item.id);
|
|
178
|
+
ctx.invalidate(`collections:${ws.id}`);
|
|
179
|
+
ctx.invalidate(`tree:${ws.id}:${resolved.item.id}`);
|
|
180
|
+
return ok({ deleted: { id: resolved.item.id, name: resolved.item.name }, resolved: [resolvedSummary(collection, resolved)] });
|
|
181
|
+
}));
|
|
182
|
+
server.registerTool("delete_folder", {
|
|
183
|
+
title: "Delete a folder",
|
|
184
|
+
description: "Delete a folder and everything inside it (subfolders and requests). Permanent — confirm with the user first.",
|
|
185
|
+
inputSchema: { workspace: workspaceArg, collection: refArg("Collection"), folder: refArg("Folder", "(or path)"), confirm: confirmArg },
|
|
186
|
+
annotations: DESTRUCTIVE,
|
|
187
|
+
}, guarded(async ({ workspace, collection, folder, confirm }) => {
|
|
188
|
+
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);
|
|
192
|
+
if (!target)
|
|
193
|
+
throw new ToolInputError("REF_REQUIRED", "folder is required.");
|
|
194
|
+
await ctx.api.deleteFolder(ws.id, target.item.id);
|
|
195
|
+
ctx.invalidate(`tree:${ws.id}:${resolved.item.id}`);
|
|
196
|
+
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)] });
|
|
198
|
+
}));
|
|
199
|
+
};
|
|
200
|
+
const compactSettings = (settings) => Object.fromEntries(Object.entries(settings).filter(([, value]) => typeof value === "boolean"));
|
|
201
|
+
//# sourceMappingURL=collections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/tools/collections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { safeParseDiagramDocument } from "callman-core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { ToolInputError } from "../client/errors.js";
|
|
4
|
+
import { buildDiagramDocument, diagramInputSchema } from "../domain/diagram/build.js";
|
|
5
|
+
import { layoutDocument, placeNewNodes } from "../domain/diagram/layout.js";
|
|
6
|
+
import { applyDiagramPatch, diagramPatchOpSchema } from "../domain/diagram/patch.js";
|
|
7
|
+
import { diagramFullView, diagramGraphView, diagramListView } from "../domain/diagram/summarize.js";
|
|
8
|
+
import { resolvedSummary } from "../domain/resolve.js";
|
|
9
|
+
import { normalizeName } from "../lib/ids.js";
|
|
10
|
+
import { sliceWithCursor } from "../lib/pagination.js";
|
|
11
|
+
import { loadDiagrams, resolveDiagram } from "./lookups.js";
|
|
12
|
+
import { confirmArg, cursorArgs, DESTRUCTIVE, dryRunArg, guarded, IDEMPOTENT_WRITE, ok, READ, refArg, requireConfirm, WRITE } from "./shared.js";
|
|
13
|
+
const directionArg = z.enum(["DOWN", "RIGHT", "UP", "LEFT"]).optional().describe("Layout flow direction (default DOWN)");
|
|
14
|
+
const loadDocument = (diagram) => {
|
|
15
|
+
const parsed = safeParseDiagramDocument(diagram.document);
|
|
16
|
+
if (!parsed.ok) {
|
|
17
|
+
throw new ToolInputError("DIAGRAM_DOCUMENT_INVALID", `The stored diagram "${diagram.name}" is not a valid document: ${parsed.errors.join("; ")}`, { errors: parsed.errors });
|
|
18
|
+
}
|
|
19
|
+
return parsed.document;
|
|
20
|
+
};
|
|
21
|
+
export const registerDiagramTools = (server, ctx) => {
|
|
22
|
+
server.registerTool("list_diagrams", {
|
|
23
|
+
title: "List diagrams",
|
|
24
|
+
description: "List your system-design diagrams and the ones shared with you (owner, node/edge counts, whether you can edit). Diagrams belong to users and are shared into workspaces — not workspace-scoped.",
|
|
25
|
+
inputSchema: { query: z.string().max(200).optional(), ...cursorArgs },
|
|
26
|
+
annotations: READ,
|
|
27
|
+
}, guarded(async ({ query, cursor, limit }) => {
|
|
28
|
+
const all = await loadDiagrams(ctx);
|
|
29
|
+
const needle = query?.trim().toLowerCase();
|
|
30
|
+
const filtered = needle ? all.filter((diagram) => diagram.name.toLowerCase().includes(needle)) : all;
|
|
31
|
+
const page = sliceWithCursor(filtered, cursor, limit);
|
|
32
|
+
return ok({ diagrams: page.items.map(diagramListView), total: page.total, nextCursor: page.nextCursor });
|
|
33
|
+
}));
|
|
34
|
+
server.registerTool("get_diagram", {
|
|
35
|
+
title: "Get a diagram",
|
|
36
|
+
description: "Read a diagram: `graph` (nodes with type/label/parent and edges with their meaning — enough to describe or edit it) or `full` (the complete DiagramDocument, up to 512 KB).",
|
|
37
|
+
inputSchema: { diagram: refArg("Diagram"), view: z.enum(["summary", "graph", "full"]).default("graph") },
|
|
38
|
+
annotations: READ,
|
|
39
|
+
}, guarded(async ({ diagram, view }) => {
|
|
40
|
+
const resolved = await resolveDiagram(ctx, diagram);
|
|
41
|
+
const doc = loadDocument(resolved.item);
|
|
42
|
+
const summary = diagramListView(resolved.item);
|
|
43
|
+
const body = view === "summary" ? summary : view === "graph" ? { ...summary, ...diagramGraphView(doc) } : { ...summary, ...diagramFullView(doc) };
|
|
44
|
+
return ok({ diagram: body, ...(resolved.annotation ? { resolved: [resolvedSummary(diagram, resolved)] } : {}) });
|
|
45
|
+
}));
|
|
46
|
+
server.registerTool("create_diagram", {
|
|
47
|
+
title: "Create a system-design diagram",
|
|
48
|
+
description: "Create a diagram from typed nodes and edges. Node `type` must come from callman://diagram/components (e.g. net.service, net.gateway, db.postgres, mq.kafka, aws.lambda, flow.process); unknown types are rejected with suggestions unless strictTypes: false. Group nodes with a container (`parent`). Edge `semantic`: sync (default), async, fallback, bus. Layout is automatic when nodes have no positions. Keep it readable: 8–25 nodes, short labels.",
|
|
49
|
+
inputSchema: {
|
|
50
|
+
name: z.string().min(1).max(200).describe("Diagram name (library entry)"),
|
|
51
|
+
...diagramInputSchema.shape,
|
|
52
|
+
autoLayout: z.boolean().optional().describe("Force layout even when positions were given"),
|
|
53
|
+
direction: directionArg,
|
|
54
|
+
strictTypes: z.boolean().optional(),
|
|
55
|
+
dryRun: dryRunArg,
|
|
56
|
+
},
|
|
57
|
+
annotations: WRITE,
|
|
58
|
+
}, guarded(async ({ name, autoLayout, direction, strictTypes, dryRun, ...input }) => {
|
|
59
|
+
const built = buildDiagramDocument(input, { strictTypes });
|
|
60
|
+
let document = built.document;
|
|
61
|
+
let layoutNote;
|
|
62
|
+
if (autoLayout || built.unpositionedNodeIds.length > 0) {
|
|
63
|
+
const laid = await layoutDocument(document, { direction });
|
|
64
|
+
document = laid.document;
|
|
65
|
+
layoutNote = laid.warning ?? `Laid out with ${laid.engine}.`;
|
|
66
|
+
}
|
|
67
|
+
if (dryRun) {
|
|
68
|
+
return ok({ dryRun: true, diagram: { name, ...diagramGraphView(document) }, warnings: built.warnings, ...(layoutNote ? { layout: layoutNote } : {}) });
|
|
69
|
+
}
|
|
70
|
+
const created = await ctx.api.createDiagram({ name: name.trim(), document });
|
|
71
|
+
ctx.invalidate("diagrams");
|
|
72
|
+
return ok({
|
|
73
|
+
diagram: { ...diagramListView(created), ...diagramGraphView(document) },
|
|
74
|
+
warnings: built.warnings,
|
|
75
|
+
...(layoutNote ? { layout: layoutNote } : {}),
|
|
76
|
+
note: "Saved. Open it in the desktop app (Diagrams → Refresh). Edit with patch_diagram; share with share_diagram.",
|
|
77
|
+
});
|
|
78
|
+
}));
|
|
79
|
+
server.registerTool("update_diagram", {
|
|
80
|
+
title: "Replace a diagram's content",
|
|
81
|
+
description: "Replace a diagram's whole document (nodes + edges) and/or rename it, keeping its identity and sharing. For small edits prefer patch_diagram.",
|
|
82
|
+
inputSchema: {
|
|
83
|
+
diagram: refArg("Diagram"),
|
|
84
|
+
name: z.string().min(1).max(200).optional(),
|
|
85
|
+
title: z.string().max(200).optional(),
|
|
86
|
+
nodes: diagramInputSchema.shape.nodes.optional(),
|
|
87
|
+
edges: diagramInputSchema.shape.edges.optional(),
|
|
88
|
+
canvas: diagramInputSchema.shape.canvas,
|
|
89
|
+
autoLayout: z.boolean().optional(),
|
|
90
|
+
direction: directionArg,
|
|
91
|
+
strictTypes: z.boolean().optional(),
|
|
92
|
+
},
|
|
93
|
+
annotations: IDEMPOTENT_WRITE,
|
|
94
|
+
}, guarded(async ({ diagram, name, title, nodes, edges, canvas, autoLayout, direction, strictTypes }) => {
|
|
95
|
+
if (name === undefined && nodes === undefined)
|
|
96
|
+
throw new ToolInputError("NOTHING_TO_UPDATE", "Pass name and/or nodes (+ edges).");
|
|
97
|
+
const resolved = await resolveDiagram(ctx, diagram);
|
|
98
|
+
if (!resolved.item.canEdit)
|
|
99
|
+
throw new ToolInputError("DIAGRAM_READ_ONLY", "You have read-only access to this diagram.");
|
|
100
|
+
const existing = loadDocument(resolved.item);
|
|
101
|
+
let document;
|
|
102
|
+
let layoutNote;
|
|
103
|
+
let warnings = [];
|
|
104
|
+
if (nodes) {
|
|
105
|
+
const built = buildDiagramDocument({ title: title ?? existing.meta.title, nodes, edges: edges ?? [], canvas: canvas ?? existing.canvas }, { strictTypes, existingId: existing.id, createdAt: existing.meta.createdAt });
|
|
106
|
+
document = built.document;
|
|
107
|
+
warnings = built.warnings;
|
|
108
|
+
if (autoLayout || built.unpositionedNodeIds.length > 0) {
|
|
109
|
+
const laid = await layoutDocument(document, { direction });
|
|
110
|
+
document = laid.document;
|
|
111
|
+
layoutNote = laid.warning ?? `Laid out with ${laid.engine}.`;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else if (title !== undefined) {
|
|
115
|
+
document = { ...existing, meta: { ...existing.meta, title, updatedAt: new Date().toISOString() } };
|
|
116
|
+
}
|
|
117
|
+
const updated = await ctx.api.updateDiagram(resolved.item.id, { ...(name !== undefined ? { name: name.trim() } : {}), ...(document ? { document } : {}) });
|
|
118
|
+
ctx.invalidate("diagrams");
|
|
119
|
+
return ok({ diagram: { ...diagramListView(updated), ...diagramGraphView(document ?? existing) }, warnings, ...(layoutNote ? { layout: layoutNote } : {}), resolved: [resolvedSummary(diagram, resolved)] });
|
|
120
|
+
}));
|
|
121
|
+
server.registerTool("patch_diagram", {
|
|
122
|
+
title: "Edit a diagram incrementally",
|
|
123
|
+
description: "Apply operations to a diagram without resending it: addNode, updateNode, removeNode (drops its edges), addEdge, updateEdge, removeEdge, setTitle. `relayout`: none | new (place only new nodes, default) | all (re-run automatic layout).",
|
|
124
|
+
inputSchema: {
|
|
125
|
+
diagram: refArg("Diagram"),
|
|
126
|
+
ops: z.array(diagramPatchOpSchema).min(1).max(200),
|
|
127
|
+
relayout: z.enum(["none", "new", "all"]).default("new"),
|
|
128
|
+
direction: directionArg,
|
|
129
|
+
strictTypes: z.boolean().optional(),
|
|
130
|
+
},
|
|
131
|
+
annotations: IDEMPOTENT_WRITE,
|
|
132
|
+
}, guarded(async ({ diagram, ops, relayout, direction, strictTypes }) => {
|
|
133
|
+
const resolved = await resolveDiagram(ctx, diagram);
|
|
134
|
+
if (!resolved.item.canEdit)
|
|
135
|
+
throw new ToolInputError("DIAGRAM_READ_ONLY", "You have read-only access to this diagram.");
|
|
136
|
+
const existing = loadDocument(resolved.item);
|
|
137
|
+
const patched = applyDiagramPatch(existing, ops, { strictTypes });
|
|
138
|
+
let document = patched.document;
|
|
139
|
+
let layoutNote;
|
|
140
|
+
if (relayout === "all") {
|
|
141
|
+
const laid = await layoutDocument(document, { direction });
|
|
142
|
+
document = laid.document;
|
|
143
|
+
layoutNote = laid.warning ?? `Laid out with ${laid.engine}.`;
|
|
144
|
+
}
|
|
145
|
+
else if (relayout === "new" && patched.addedNodeIds.length > 0) {
|
|
146
|
+
document = placeNewNodes(document, patched.addedNodeIds);
|
|
147
|
+
layoutNote = `Placed ${patched.addedNodeIds.length} new node(s) below the existing ones.`;
|
|
148
|
+
}
|
|
149
|
+
const updated = await ctx.api.updateDiagram(resolved.item.id, { document });
|
|
150
|
+
ctx.invalidate("diagrams");
|
|
151
|
+
return ok({
|
|
152
|
+
diagram: { ...diagramListView(updated), ...diagramGraphView(document) },
|
|
153
|
+
applied: ops.length,
|
|
154
|
+
added: patched.addedNodeIds,
|
|
155
|
+
removedNodes: patched.removedNodeIds,
|
|
156
|
+
removedEdges: patched.removedEdgeIds,
|
|
157
|
+
warnings: patched.warnings,
|
|
158
|
+
...(layoutNote ? { layout: layoutNote } : {}),
|
|
159
|
+
resolved: [resolvedSummary(diagram, resolved)],
|
|
160
|
+
});
|
|
161
|
+
}));
|
|
162
|
+
server.registerTool("delete_diagram", {
|
|
163
|
+
title: "Delete a diagram",
|
|
164
|
+
description: "Delete a diagram you own. Permanent — confirm with the user first.",
|
|
165
|
+
inputSchema: { diagram: refArg("Diagram"), confirm: confirmArg },
|
|
166
|
+
annotations: DESTRUCTIVE,
|
|
167
|
+
}, guarded(async ({ diagram, confirm }) => {
|
|
168
|
+
requireConfirm(confirm, "a diagram");
|
|
169
|
+
const resolved = await resolveDiagram(ctx, diagram);
|
|
170
|
+
await ctx.api.deleteDiagram(resolved.item.id);
|
|
171
|
+
ctx.invalidate("diagrams");
|
|
172
|
+
return ok({ deleted: { id: resolved.item.id, name: resolved.item.name }, resolved: [resolvedSummary(diagram, resolved)] });
|
|
173
|
+
}));
|
|
174
|
+
server.registerTool("share_diagram", {
|
|
175
|
+
title: "Share a diagram",
|
|
176
|
+
description: "Share a diagram into workspaces (every member can view it) and grant edit access to specific people (by email — they must be members of one of your workspaces). Additive by default; replace: true sets exactly the given lists (an empty list unshares).",
|
|
177
|
+
inputSchema: {
|
|
178
|
+
diagram: refArg("Diagram"),
|
|
179
|
+
workspaces: z.array(z.string().min(1).max(200)).max(200).optional().describe("Workspace names or ids to share into"),
|
|
180
|
+
editors: z.array(z.string().min(1).max(255)).max(500).optional().describe("Emails (or user ids) who may edit"),
|
|
181
|
+
replace: z.boolean().optional(),
|
|
182
|
+
},
|
|
183
|
+
annotations: IDEMPOTENT_WRITE,
|
|
184
|
+
}, guarded(async ({ diagram, workspaces, editors, replace }) => {
|
|
185
|
+
if (!workspaces && !editors)
|
|
186
|
+
throw new ToolInputError("NOTHING_TO_UPDATE", "Pass workspaces and/or editors.");
|
|
187
|
+
const resolved = await resolveDiagram(ctx, diagram);
|
|
188
|
+
const workspaceIds = new Set(replace ? [] : resolved.item.sharedWorkspaceIds ?? []);
|
|
189
|
+
const editorIds = new Set(replace ? [] : resolved.item.editorIds ?? []);
|
|
190
|
+
const resolvedNotes = [];
|
|
191
|
+
for (const ref of workspaces ?? []) {
|
|
192
|
+
const ws = await ctx.resolveWorkspace(ref);
|
|
193
|
+
workspaceIds.add(ws.id);
|
|
194
|
+
resolvedNotes.push({ input: ref, matched: ws.name, id: ws.id });
|
|
195
|
+
}
|
|
196
|
+
if (editors && editors.length > 0) {
|
|
197
|
+
// Look up emails across the user's workspaces (members are the only
|
|
198
|
+
// people a diagram can be shared with anyway).
|
|
199
|
+
const memberByEmail = new Map();
|
|
200
|
+
const memberIds = new Set();
|
|
201
|
+
for (const ws of await ctx.listWorkspaces()) {
|
|
202
|
+
try {
|
|
203
|
+
const { items } = await ctx.api.listMembers(ws.id);
|
|
204
|
+
for (const member of items) {
|
|
205
|
+
memberByEmail.set(normalizeName(member.email), member.userId);
|
|
206
|
+
memberIds.add(member.userId);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
// no access to the member list of that workspace — skip it
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
for (const ref of editors) {
|
|
214
|
+
const userId = memberByEmail.get(normalizeName(ref)) ?? (memberIds.has(ref) ? ref : null);
|
|
215
|
+
if (!userId)
|
|
216
|
+
throw new ToolInputError("EDITOR_NOT_FOUND", `No member with email or id "${ref}" in your workspaces.`);
|
|
217
|
+
editorIds.add(userId);
|
|
218
|
+
resolvedNotes.push({ input: ref, matched: ref, id: userId });
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
const updated = await ctx.api.shareDiagram(resolved.item.id, { workspaceIds: [...workspaceIds], editorIds: [...editorIds] });
|
|
222
|
+
ctx.invalidate("diagrams");
|
|
223
|
+
return ok({ diagram: diagramListView(updated), sharedWorkspaceIds: updated.sharedWorkspaceIds, editorIds: updated.editorIds, resolved: [resolvedSummary(diagram, resolved), ...resolvedNotes] });
|
|
224
|
+
}));
|
|
225
|
+
};
|
|
226
|
+
//# sourceMappingURL=diagrams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagrams.js","sourceRoot":"","sources":["../../src/tools/diagrams.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/tools/environments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAcjD,eAAO,MAAM,wBAAwB,GAAI,QAAQ,SAAS,EAAE,KAAK,WAAW,KAAG,IAwJ9E,CAAC"}
|