callman-mcp 0.2.0 → 0.3.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/README.md +2 -2
- package/dist/client/api.d.ts +1 -0
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +2 -0
- package/dist/client/api.js.map +1 -1
- package/dist/domain/diagram/build.d.ts +112 -63
- package/dist/domain/diagram/build.d.ts.map +1 -1
- package/dist/domain/diagram/build.js +49 -165
- package/dist/domain/diagram/build.js.map +1 -1
- package/dist/domain/diagram/layout.d.ts +3 -4
- package/dist/domain/diagram/layout.d.ts.map +1 -1
- package/dist/domain/diagram/layout.js +12 -45
- package/dist/domain/diagram/layout.js.map +1 -1
- package/dist/domain/diagram/patch.d.ts +298 -80
- package/dist/domain/diagram/patch.d.ts.map +1 -1
- package/dist/domain/diagram/patch.js +60 -273
- package/dist/domain/diagram/patch.js.map +1 -1
- package/dist/domain/diagram/style.d.ts +4 -12
- package/dist/domain/diagram/style.d.ts.map +1 -1
- package/dist/domain/diagram/style.js +8 -84
- package/dist/domain/diagram/style.js.map +1 -1
- package/dist/domain/diagram/summarize.d.ts +25 -24
- package/dist/domain/diagram/summarize.d.ts.map +1 -1
- package/dist/domain/diagram/summarize.js +20 -35
- package/dist/domain/diagram/summarize.js.map +1 -1
- package/dist/domain/requestIntegrations.d.ts +20 -20
- package/dist/domain/requestShape.d.ts +32 -32
- package/dist/resources/docs/diagramSchema.d.ts +1 -1
- package/dist/resources/docs/diagramSchema.d.ts.map +1 -1
- package/dist/resources/docs/diagramSchema.js +55 -10
- package/dist/resources/docs/diagramSchema.js.map +1 -1
- package/dist/resources/generated/aiPacks.d.ts +1 -1
- package/dist/resources/generated/aiPacks.js +2 -2
- package/dist/tools/diagrams.d.ts.map +1 -1
- package/dist/tools/diagrams.js +244 -42
- package/dist/tools/diagrams.js.map +1 -1
- package/dist-cjs/client/api.js +2 -0
- package/dist-cjs/domain/diagram/build.js +53 -169
- package/dist-cjs/domain/diagram/layout.js +11 -44
- package/dist-cjs/domain/diagram/patch.js +57 -270
- package/dist-cjs/domain/diagram/style.js +11 -88
- package/dist-cjs/domain/diagram/summarize.js +22 -35
- package/dist-cjs/resources/docs/diagramSchema.js +55 -10
- package/dist-cjs/resources/generated/aiPacks.js +2 -2
- package/dist-cjs/tools/diagrams.js +240 -38
- package/package.json +2 -2
package/dist/tools/diagrams.js
CHANGED
|
@@ -1,23 +1,126 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { applyDiagramOps, BPMN_GRAMMAR_VERSION, bpmnXmlFromDocument, createEmptyDocument, isMermaidFlowchart, looksLikeBpmn, looksLikeMermaid, MERMAID_GRAMMAR_VERSION, normalizeDocument, parseBpmn, parseMermaid, placeBpmnNodesOps, } from "callman-core";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { ToolInputError } from "../client/errors.js";
|
|
4
|
-
import { buildDiagramDocument, diagramInputSchema } from "../domain/diagram/build.js";
|
|
3
|
+
import { CallmanApiError, ToolInputError } from "../client/errors.js";
|
|
4
|
+
import { buildDiagramDocument, diagramInputSchema, toToolError } from "../domain/diagram/build.js";
|
|
5
5
|
import { layoutDocument, placeNewNodes } from "../domain/diagram/layout.js";
|
|
6
6
|
import { applyDiagramPatch, diagramPatchOpSchema } from "../domain/diagram/patch.js";
|
|
7
|
-
import { diagramFullView, diagramGraphView, diagramListView } from "../domain/diagram/summarize.js";
|
|
7
|
+
import { diagramFullView, diagramGraphView, diagramListView, diagramMermaidView, diagramSourceView } from "../domain/diagram/summarize.js";
|
|
8
8
|
import { resolvedSummary } from "../domain/resolve.js";
|
|
9
9
|
import { normalizeName } from "../lib/ids.js";
|
|
10
10
|
import { sliceWithCursor } from "../lib/pagination.js";
|
|
11
11
|
import { loadDiagrams, resolveDiagram } from "./lookups.js";
|
|
12
12
|
import { confirmArg, cursorArgs, DESTRUCTIVE, dryRunArg, guarded, IDEMPOTENT_WRITE, ok, READ, refArg, requireConfirm, WRITE } from "./shared.js";
|
|
13
13
|
const directionArg = z.enum(["DOWN", "RIGHT", "UP", "LEFT"]).optional().describe("Layout flow direction (default DOWN)");
|
|
14
|
+
const sourceArg = z
|
|
15
|
+
.object({
|
|
16
|
+
format: z.enum(["mermaid", "bpmn"]).describe('"mermaid": Mermaid text; "bpmn": a BPMN 2.0 XML file'),
|
|
17
|
+
text: z
|
|
18
|
+
.string()
|
|
19
|
+
.min(1)
|
|
20
|
+
.max(2_000_000)
|
|
21
|
+
.describe("Mermaid: a flowchart/graph becomes nodes and edges (laid out automatically) and stays attached as the diagram's source; any other Mermaid type is stored as source only. BPMN: the XML is the diagram (its shapes, flows, pools and lanes are derived from it with their positions)"),
|
|
22
|
+
})
|
|
23
|
+
.strict()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe("Create the diagram from Mermaid text or BPMN 2.0 XML instead of nodes/edges");
|
|
26
|
+
// A BPMN diagram keeps its truth in BPMN 2.0 XML: the model is derived from it.
|
|
27
|
+
const bpmnSource = (text) => ({ format: "bpmn", text, diagramType: "bpmn", grammar: BPMN_GRAMMAR_VERSION });
|
|
28
|
+
// Typed bpmn.* nodes → a BPMN diagram: the model becomes XML, the XML becomes
|
|
29
|
+
// the diagram's source, and the shapes are derived back from it.
|
|
30
|
+
const bpmnDocumentFromModel = (model, unpositionedNodeIds, base) => {
|
|
31
|
+
const placed = unpositionedNodeIds.length > 0 ? applyDiagramOps(model, placeBpmnNodesOps(model, unpositionedNodeIds)).doc : model;
|
|
32
|
+
const xml = bpmnXmlFromDocument({ ...placed, source: undefined });
|
|
33
|
+
const document = applyDiagramOps({ ...base, nodes: [], edges: [], source: undefined }, [{ op: "setSource", source: bpmnSource(xml), resync: true }], { now: now() }).doc;
|
|
34
|
+
return { document, layoutNote: unpositionedNodeIds.length > 0 ? `Written as BPMN 2.0 XML; ${unpositionedNodeIds.length} node(s) placed left to right after their predecessors.` : "Written as BPMN 2.0 XML with the positions given." };
|
|
35
|
+
};
|
|
36
|
+
// Every document entering a tool goes through the shared gate (legacy fields
|
|
37
|
+
// stripped, ids deduped, parents healed) — the same one the studio applies.
|
|
14
38
|
const loadDocument = (diagram) => {
|
|
15
|
-
const
|
|
39
|
+
const result = normalizeDocument(diagram.document);
|
|
40
|
+
if (!result.document.nodes && !result.document.edges) {
|
|
41
|
+
throw new ToolInputError("DIAGRAM_DOCUMENT_INVALID", `The stored diagram "${diagram.name}" is not a valid document.`);
|
|
42
|
+
}
|
|
43
|
+
return result.document;
|
|
44
|
+
};
|
|
45
|
+
const now = () => new Date().toISOString();
|
|
46
|
+
// A source-backed diagram whose Mermaid type is not a flowchart has no model
|
|
47
|
+
// to edit: structural tools refuse it clearly instead of guessing. (BPMN
|
|
48
|
+
// diagrams are editable: their ops patch the XML.)
|
|
49
|
+
const assertEditableStructure = (doc) => {
|
|
50
|
+
if (doc.source && doc.source.format === "mermaid" && doc.source.diagramType !== "flowchart") {
|
|
51
|
+
throw new ToolInputError("DIAGRAM_SOURCE_UNSUPPORTED_TYPE", `This diagram is a Mermaid ${doc.source.diagramType} kept as source only; nodes and edges cannot be edited through ops. Update its source with update_diagram { source } or read it with get_diagram view:"source".`, { diagramType: doc.source.diagramType });
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
// Mermaid text → the document it describes: a flowchart is parsed into
|
|
55
|
+
// nodes/edges (positions come from layout); anything else is kept as
|
|
56
|
+
// source only (the desktop previews it, tools read it back).
|
|
57
|
+
const documentFromSource = async (title, text, existing, direction, format = "mermaid") => {
|
|
58
|
+
if (format === "bpmn") {
|
|
59
|
+
if (!looksLikeBpmn(text))
|
|
60
|
+
throw new ToolInputError("DIAGRAM_SOURCE_INVALID", "The text is not a BPMN 2.0 document (no <definitions> root).");
|
|
61
|
+
const parsed = parseBpmn(text);
|
|
62
|
+
if (!parsed.ok) {
|
|
63
|
+
throw new ToolInputError("DIAGRAM_SOURCE_INVALID", "The BPMN XML could not be read.", { diagnostics: parsed.structure.diagnostics.filter((entry) => entry.severity === "error").slice(0, 20) });
|
|
64
|
+
}
|
|
65
|
+
const base = existing ?? createEmptyDocument(title);
|
|
66
|
+
let document;
|
|
67
|
+
try {
|
|
68
|
+
document = applyDiagramOps(base, [{ op: "setSource", source: bpmnSource(text), resync: true }], { now: now() }).doc;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
return toToolError(error);
|
|
72
|
+
}
|
|
73
|
+
// Shapes the XML has no diagram interchange for are placed after their predecessors.
|
|
74
|
+
const unplaced = parsed.structure.nodes.filter((node) => !node.position).map((node) => node.id).filter((id) => document.nodes.some((node) => node.id === id));
|
|
75
|
+
if (unplaced.length > 0)
|
|
76
|
+
document = applyDiagramOps(document, placeBpmnNodesOps(document, unplaced), { now: now() }).doc;
|
|
77
|
+
const warnings = parsed.structure.diagnostics.filter((entry) => entry.severity !== "error").map((entry) => entry.message);
|
|
78
|
+
return { document, layoutNote: unplaced.length > 0 ? `Positions from the BPMN diagram interchange; ${unplaced.length} shape(s) without one were placed.` : "Positions from the BPMN diagram interchange.", warnings };
|
|
79
|
+
}
|
|
80
|
+
if (!looksLikeMermaid(text)) {
|
|
81
|
+
throw new ToolInputError("DIAGRAM_SOURCE_INVALID", "The text does not start with a Mermaid diagram header (flowchart, graph, sequenceDiagram, …).");
|
|
82
|
+
}
|
|
83
|
+
const base = existing ?? createEmptyDocument(title);
|
|
84
|
+
if (!isMermaidFlowchart(text)) {
|
|
85
|
+
const header = text.replace(/^---[\s\S]*?\n---\s*\n/, "").split("\n").map((line) => line.trim()).find((line) => line !== "" && !line.startsWith("%%")) ?? "";
|
|
86
|
+
const diagramType = header.split(/\s+/)[0] ?? "unknown";
|
|
87
|
+
const source = { format: "mermaid", text, diagramType, grammar: MERMAID_GRAMMAR_VERSION, valid: true };
|
|
88
|
+
const doc = applyDiagramOps(base, [{ op: "setSource", source, resync: false }], { now: now() }).doc;
|
|
89
|
+
return { document: doc, layoutNote: `Stored as Mermaid ${diagramType} source (no nodes to lay out).`, warnings: [] };
|
|
90
|
+
}
|
|
91
|
+
const parsed = parseMermaid(text);
|
|
16
92
|
if (!parsed.ok) {
|
|
17
|
-
throw new ToolInputError("
|
|
93
|
+
throw new ToolInputError("DIAGRAM_SOURCE_INVALID", "The Mermaid flowchart has syntax errors.", {
|
|
94
|
+
diagnostics: parsed.structure.diagnostics.filter((entry) => entry.severity === "error").slice(0, 20),
|
|
95
|
+
});
|
|
18
96
|
}
|
|
19
|
-
|
|
97
|
+
const source = { format: "mermaid", text, diagramType: "flowchart", grammar: MERMAID_GRAMMAR_VERSION };
|
|
98
|
+
let applied;
|
|
99
|
+
try {
|
|
100
|
+
applied = applyDiagramOps(base, [{ op: "setSource", source }], { now: now() });
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return toToolError(error);
|
|
104
|
+
}
|
|
105
|
+
const warnings = parsed.structure.diagnostics.filter((entry) => entry.severity !== "error").map((entry) => entry.message);
|
|
106
|
+
const newIds = applied.added.nodes;
|
|
107
|
+
let document = applied.doc;
|
|
108
|
+
let layoutNote;
|
|
109
|
+
if (newIds.length > 0) {
|
|
110
|
+
if (existing && existing.nodes.length > 0) {
|
|
111
|
+
document = placeNewNodes(document, newIds);
|
|
112
|
+
layoutNote = `Placed ${newIds.length} new node(s) below the existing ones.`;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const laid = await layoutDocument(document, { direction: direction ?? parsed.structure.direction });
|
|
116
|
+
document = laid.document;
|
|
117
|
+
layoutNote = laid.warning ?? `Laid out with ${laid.engine}.`;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return { document, layoutNote, warnings };
|
|
20
121
|
};
|
|
122
|
+
// Save with the revision we read; on a 409 the caller reloads and reapplies.
|
|
123
|
+
const isConflict = (error) => error instanceof CallmanApiError && error.status === 409;
|
|
21
124
|
export const registerDiagramTools = (server, ctx) => {
|
|
22
125
|
server.registerTool("list_diagrams", {
|
|
23
126
|
title: "List diagrams",
|
|
@@ -33,52 +136,88 @@ export const registerDiagramTools = (server, ctx) => {
|
|
|
33
136
|
}));
|
|
34
137
|
server.registerTool("get_diagram", {
|
|
35
138
|
title: "Get a diagram",
|
|
36
|
-
description: "Read a diagram: `summary` (counts, owner, sharing), `graph` (default — nodes with type/label/parent/style and edges with semantic/color, in the same shape the write tools accept: enough to describe, restyle or edit it) or `full` (the complete stored DiagramDocument with positions, sizes and routes, up to 512 KB).",
|
|
37
|
-
inputSchema: { diagram: refArg("Diagram"), view: z.enum(["summary", "graph", "full"]).default("graph") },
|
|
139
|
+
description: "Read a diagram: `summary` (counts, owner, sharing), `graph` (default — nodes with type/label/parent/style and edges with semantic/color/routing/sides, in the same shape the write tools accept: enough to describe, restyle or edit it), `mermaid` (the diagram rendered as Mermaid flowchart text), `source` (the Mermaid text or BPMN 2.0 XML a source-backed diagram keeps) or `full` (the complete stored DiagramDocument with positions, sizes and routes, up to 512 KB).",
|
|
140
|
+
inputSchema: { diagram: refArg("Diagram"), view: z.enum(["summary", "graph", "mermaid", "source", "full"]).default("graph") },
|
|
38
141
|
annotations: READ,
|
|
39
142
|
}, guarded(async ({ diagram, view }) => {
|
|
40
143
|
const resolved = await resolveDiagram(ctx, diagram);
|
|
41
144
|
const doc = loadDocument(resolved.item);
|
|
42
145
|
const summary = diagramListView(resolved.item);
|
|
43
|
-
const body = view === "summary"
|
|
146
|
+
const body = view === "summary"
|
|
147
|
+
? summary
|
|
148
|
+
: view === "graph"
|
|
149
|
+
? { ...summary, ...diagramGraphView(doc) }
|
|
150
|
+
: view === "mermaid"
|
|
151
|
+
? { ...summary, ...diagramMermaidView(doc) }
|
|
152
|
+
: view === "source"
|
|
153
|
+
? { ...summary, ...diagramSourceView(doc) }
|
|
154
|
+
: { ...summary, ...diagramFullView(doc) };
|
|
44
155
|
return ok({ diagram: body, ...(resolved.annotation ? { resolved: [resolvedSummary(diagram, resolved)] } : {}) });
|
|
45
156
|
}));
|
|
46
157
|
server.registerTool("create_diagram", {
|
|
47
158
|
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.api-gateway, db.postgres, mq.kafka, aws.lambda, flow.process); unknown types are rejected with suggestions unless strictTypes: false. Group nodes inside a container node — frame, pool.horizontal or pool.vertical — with `parent`. Style nodes with `style` (fill / stroke / textColor as CSS colors, strokeWidth, dashed, radius, bold, fontSize, opacity…) and edges with `semantic` (sync default, async, fallback, bus)
|
|
159
|
+
description: "Create a diagram from typed nodes and edges — or from Mermaid text / BPMN 2.0 XML (`source`). A BPMN process (`kind: \"bpmn\"`, or nodes typed bpmn.*) is stored as BPMN 2.0 XML the desktop opens in its BPMN editor. Node `type` must come from callman://diagram/components (e.g. net.service, net.api-gateway, db.postgres, mq.kafka, aws.lambda, flow.process); unknown types are rejected with suggestions unless strictTypes: false. Group nodes inside a container node — frame, pool.horizontal or pool.vertical — with `parent`. Style nodes with `style` (fill / stroke / textColor as CSS colors, strokeWidth, dashed, radius, bold, fontSize, opacity…) and edges with `semantic` (sync default, async, fallback, bus), an optional `color`, `routing` and fixed `sourceSide`/`targetSide`. Layout is automatic when nodes have no positions. Read callman://docs/diagram-schema for every field. Keep it readable: 8–25 nodes, short labels.",
|
|
49
160
|
inputSchema: {
|
|
50
161
|
name: z.string().min(1).max(200).describe("Diagram name (library entry)"),
|
|
51
|
-
|
|
162
|
+
title: diagramInputSchema.shape.title.optional().describe("Diagram title (defaults to the name)"),
|
|
163
|
+
nodes: diagramInputSchema.shape.nodes.optional(),
|
|
164
|
+
edges: diagramInputSchema.shape.edges.optional(),
|
|
165
|
+
canvas: diagramInputSchema.shape.canvas,
|
|
166
|
+
source: sourceArg,
|
|
167
|
+
kind: z.enum(["canvas", "bpmn"]).optional().describe('"bpmn": model a business process — nodes use bpmn.* types and the diagram is stored as BPMN 2.0 XML (default: canvas; inferred as bpmn when every node type starts with "bpmn.")'),
|
|
52
168
|
autoLayout: z.boolean().optional().describe("Force layout even when positions were given"),
|
|
53
169
|
direction: directionArg,
|
|
54
170
|
strictTypes: z.boolean().optional(),
|
|
55
171
|
dryRun: dryRunArg,
|
|
56
172
|
},
|
|
57
173
|
annotations: WRITE,
|
|
58
|
-
}, guarded(async ({ name, autoLayout, direction, strictTypes, dryRun
|
|
59
|
-
|
|
60
|
-
|
|
174
|
+
}, guarded(async ({ name, title, nodes, edges, canvas, source, kind, autoLayout, direction, strictTypes, dryRun }) => {
|
|
175
|
+
if (!nodes && !source)
|
|
176
|
+
throw new ToolInputError("NOTHING_TO_CREATE", "Pass nodes (+ edges) or source { format: \"mermaid\" | \"bpmn\", text }.");
|
|
177
|
+
if (nodes && source)
|
|
178
|
+
throw new ToolInputError("CONFLICTING_INPUT", "Pass either nodes or source, not both.");
|
|
179
|
+
let document;
|
|
61
180
|
let layoutNote;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
181
|
+
let warnings = [];
|
|
182
|
+
const bpmnKind = kind === "bpmn" || (kind === undefined && Boolean(nodes && nodes.length > 0 && nodes.every((node) => node.type.startsWith("bpmn."))));
|
|
183
|
+
if (source) {
|
|
184
|
+
const fromSource = await documentFromSource(title ?? name, source.text, null, direction, source.format);
|
|
185
|
+
document = canvas ? { ...fromSource.document, canvas: { ...fromSource.document.canvas, ...canvas } } : fromSource.document;
|
|
186
|
+
layoutNote = fromSource.layoutNote;
|
|
187
|
+
warnings = fromSource.warnings;
|
|
188
|
+
}
|
|
189
|
+
else if (bpmnKind) {
|
|
190
|
+
const built = buildDiagramDocument({ title: title ?? name, nodes: nodes ?? [], edges: edges ?? [], canvas }, { strictTypes, kind: "bpmn" });
|
|
191
|
+
const bpmn = bpmnDocumentFromModel(built.document, built.unpositionedNodeIds, createEmptyDocument(title ?? name));
|
|
192
|
+
document = bpmn.document;
|
|
193
|
+
layoutNote = bpmn.layoutNote;
|
|
194
|
+
warnings = built.warnings;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
const built = buildDiagramDocument({ title: title ?? name, nodes: nodes ?? [], edges: edges ?? [], canvas }, { strictTypes });
|
|
198
|
+
document = built.document;
|
|
199
|
+
warnings = built.warnings;
|
|
200
|
+
if (autoLayout || built.unpositionedNodeIds.length > 0) {
|
|
201
|
+
const laid = await layoutDocument(document, { direction });
|
|
202
|
+
document = laid.document;
|
|
203
|
+
layoutNote = laid.warning ?? `Laid out with ${laid.engine}.`;
|
|
204
|
+
}
|
|
66
205
|
}
|
|
67
206
|
if (dryRun) {
|
|
68
|
-
return ok({ dryRun: true, diagram: { name, ...diagramGraphView(document) }, warnings
|
|
207
|
+
return ok({ dryRun: true, diagram: { name, ...diagramGraphView(document) }, warnings, ...(layoutNote ? { layout: layoutNote } : {}) });
|
|
69
208
|
}
|
|
70
209
|
const created = await ctx.api.createDiagram({ name: name.trim(), document });
|
|
71
210
|
ctx.invalidate("diagrams");
|
|
72
211
|
return ok({
|
|
73
212
|
diagram: { ...diagramListView(created), ...diagramGraphView(document) },
|
|
74
|
-
warnings
|
|
213
|
+
warnings,
|
|
75
214
|
...(layoutNote ? { layout: layoutNote } : {}),
|
|
76
215
|
note: "Saved. Open it in the desktop app (Diagrams → Refresh). Edit with patch_diagram; share with share_diagram.",
|
|
77
216
|
});
|
|
78
217
|
}));
|
|
79
218
|
server.registerTool("update_diagram", {
|
|
80
219
|
title: "Replace a diagram's content",
|
|
81
|
-
description: "Replace a diagram's whole document (nodes + edges, same fields as create_diagram) and/or rename it, retitle it or change its canvas
|
|
220
|
+
description: "Replace a diagram's whole document (nodes + edges, same fields as create_diagram), replace or attach its Mermaid text or BPMN 2.0 XML `source`, and/or rename it, retitle it or change its canvas — keeping its identity and sharing. Passing nodes replaces ALL nodes and edges (omitted edges are removed). Passing `source` re-derives nodes and edges from the text (existing ones keep their place; new ones are placed). For small edits — including restyling — prefer patch_diagram.",
|
|
82
221
|
inputSchema: {
|
|
83
222
|
diagram: refArg("Diagram"),
|
|
84
223
|
name: z.string().min(1).max(200).optional(),
|
|
@@ -86,15 +225,18 @@ export const registerDiagramTools = (server, ctx) => {
|
|
|
86
225
|
nodes: diagramInputSchema.shape.nodes.optional(),
|
|
87
226
|
edges: diagramInputSchema.shape.edges.optional(),
|
|
88
227
|
canvas: diagramInputSchema.shape.canvas,
|
|
228
|
+
source: sourceArg,
|
|
89
229
|
autoLayout: z.boolean().optional(),
|
|
90
230
|
direction: directionArg,
|
|
91
231
|
strictTypes: z.boolean().optional(),
|
|
92
232
|
},
|
|
93
233
|
annotations: IDEMPOTENT_WRITE,
|
|
94
|
-
}, guarded(async ({ diagram, name, title, nodes, edges, canvas, autoLayout, direction, strictTypes }) => {
|
|
95
|
-
if (name === undefined && nodes === undefined && title === undefined && canvas === undefined) {
|
|
96
|
-
throw new ToolInputError("NOTHING_TO_UPDATE", "Pass name, title, canvas and/or nodes (+ edges).");
|
|
234
|
+
}, guarded(async ({ diagram, name, title, nodes, edges, canvas, source, autoLayout, direction, strictTypes }) => {
|
|
235
|
+
if (name === undefined && nodes === undefined && title === undefined && canvas === undefined && source === undefined) {
|
|
236
|
+
throw new ToolInputError("NOTHING_TO_UPDATE", "Pass name, title, canvas, source and/or nodes (+ edges).");
|
|
97
237
|
}
|
|
238
|
+
if (nodes && source)
|
|
239
|
+
throw new ToolInputError("CONFLICTING_INPUT", "Pass either nodes or source, not both.");
|
|
98
240
|
const resolved = await resolveDiagram(ctx, diagram);
|
|
99
241
|
if (!resolved.item.canEdit)
|
|
100
242
|
throw new ToolInputError("DIAGRAM_READ_ONLY", "You have read-only access to this diagram.");
|
|
@@ -102,33 +244,60 @@ export const registerDiagramTools = (server, ctx) => {
|
|
|
102
244
|
let document;
|
|
103
245
|
let layoutNote;
|
|
104
246
|
let warnings = [];
|
|
105
|
-
if (nodes) {
|
|
247
|
+
if (nodes && existing.source?.format === "bpmn") {
|
|
248
|
+
// A BPMN diagram stays BPMN: the new model is written as fresh XML.
|
|
249
|
+
const built = buildDiagramDocument({ title: title ?? existing.meta.title, nodes, edges: edges ?? [], canvas: canvas ?? existing.canvas }, { strictTypes, existingId: existing.id, createdAt: existing.meta.createdAt, kind: "bpmn" });
|
|
250
|
+
const bpmn = bpmnDocumentFromModel(built.document, built.unpositionedNodeIds, existing);
|
|
251
|
+
document = bpmn.document;
|
|
252
|
+
layoutNote = bpmn.layoutNote;
|
|
253
|
+
warnings = [...built.warnings, "The BPMN XML was rewritten from the input; anything in the file that is not a flow node, flow, pool or lane was dropped. Prefer patch_diagram for edits."];
|
|
254
|
+
}
|
|
255
|
+
else if (nodes) {
|
|
256
|
+
assertEditableStructure(existing);
|
|
106
257
|
const built = buildDiagramDocument({ title: title ?? existing.meta.title, nodes, edges: edges ?? [], canvas: canvas ?? existing.canvas }, { strictTypes, existingId: existing.id, createdAt: existing.meta.createdAt });
|
|
107
258
|
document = built.document;
|
|
108
259
|
warnings = built.warnings;
|
|
109
260
|
if (edges === undefined && existing.edges.length > 0) {
|
|
110
261
|
warnings.push(`edges was omitted, so the ${existing.edges.length} existing edge(s) were removed. Pass edges to keep connections, or use patch_diagram for partial edits.`);
|
|
111
262
|
}
|
|
263
|
+
if (existing.source)
|
|
264
|
+
warnings.push("The diagram's Mermaid source was detached: nodes and edges were replaced from the input.");
|
|
112
265
|
if (autoLayout || built.unpositionedNodeIds.length > 0) {
|
|
113
266
|
const laid = await layoutDocument(document, { direction });
|
|
114
267
|
document = laid.document;
|
|
115
268
|
layoutNote = laid.warning ?? `Laid out with ${laid.engine}.`;
|
|
116
269
|
}
|
|
117
270
|
}
|
|
271
|
+
else if (source) {
|
|
272
|
+
const fromSource = await documentFromSource(title ?? existing.meta.title, source.text, existing, direction, source.format);
|
|
273
|
+
document = fromSource.document;
|
|
274
|
+
layoutNote = fromSource.layoutNote;
|
|
275
|
+
warnings = fromSource.warnings;
|
|
276
|
+
if (title !== undefined || canvas !== undefined) {
|
|
277
|
+
document = {
|
|
278
|
+
...document,
|
|
279
|
+
...(canvas !== undefined ? { canvas: { ...document.canvas, ...canvas } } : {}),
|
|
280
|
+
meta: { ...document.meta, ...(title !== undefined ? { title } : {}) },
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
}
|
|
118
284
|
else if (title !== undefined || canvas !== undefined) {
|
|
119
285
|
document = {
|
|
120
286
|
...existing,
|
|
121
287
|
...(canvas !== undefined ? { canvas: { ...existing.canvas, ...canvas } } : {}),
|
|
122
|
-
meta: { ...existing.meta, ...(title !== undefined ? { title } : {}), updatedAt:
|
|
288
|
+
meta: { ...existing.meta, ...(title !== undefined ? { title } : {}), updatedAt: now() },
|
|
123
289
|
};
|
|
124
290
|
}
|
|
125
|
-
const updated = await ctx.api.updateDiagram(resolved.item.id, {
|
|
291
|
+
const updated = await ctx.api.updateDiagram(resolved.item.id, {
|
|
292
|
+
...(name !== undefined ? { name: name.trim() } : {}),
|
|
293
|
+
...(document ? { document, ...(typeof existing.meta.revision === "number" ? { baseRevision: existing.meta.revision } : {}) } : {}),
|
|
294
|
+
});
|
|
126
295
|
ctx.invalidate("diagrams");
|
|
127
296
|
return ok({ diagram: { ...diagramListView(updated), ...diagramGraphView(document ?? existing) }, warnings, ...(layoutNote ? { layout: layoutNote } : {}), resolved: [resolvedSummary(diagram, resolved)] });
|
|
128
297
|
}));
|
|
129
298
|
server.registerTool("patch_diagram", {
|
|
130
299
|
title: "Edit a diagram incrementally",
|
|
131
|
-
description: "Apply operations to a diagram without resending it: addNode, updateNode, removeNode (drops its edges), addEdge, updateEdge, removeEdge, setTitle. updateNode `changes` MERGE: style and data keys you pass change, a key set to null is removed. updateEdge can change semantic, color, label, arrows and ends. Moving a node
|
|
300
|
+
description: "Apply operations to a diagram without resending it: addNode, updateNode, removeNode (drops its edges, lifts its children out), addEdge, updateEdge, removeEdge, setTitle, moveNode, reparent, setEdgeRoute (routing, fixed sides, bends), reorder (stacking), setCanvas, group (wrap nodes in a container), ungroup, relayout (a hint: new | all). updateNode `changes` MERGE: style and data keys you pass change, a key set to null is removed. updateEdge can change semantic, color, label, arrows, sides and ends. Moving a node re-routes its edges. `relayout`: none | new (place only new nodes, default) | all (re-run automatic layout). Call get_diagram (view: graph) first to see node ids and current styles. Ops are documented in callman://docs/diagram-schema.",
|
|
132
301
|
inputSchema: {
|
|
133
302
|
diagram: refArg("Diagram"),
|
|
134
303
|
ops: z.array(diagramPatchOpSchema).min(1).max(200),
|
|
@@ -141,21 +310,53 @@ export const registerDiagramTools = (server, ctx) => {
|
|
|
141
310
|
const resolved = await resolveDiagram(ctx, diagram);
|
|
142
311
|
if (!resolved.item.canEdit)
|
|
143
312
|
throw new ToolInputError("DIAGRAM_READ_ONLY", "You have read-only access to this diagram.");
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const
|
|
150
|
-
document =
|
|
151
|
-
layoutNote
|
|
313
|
+
// Apply on the freshest copy; a 409 (someone saved meanwhile) reloads
|
|
314
|
+
// and reapplies once — ops describe intent, so they replay cleanly.
|
|
315
|
+
const attempt = async (record) => {
|
|
316
|
+
const existing = loadDocument(record);
|
|
317
|
+
assertEditableStructure(existing);
|
|
318
|
+
const patched = applyDiagramPatch(existing, ops, { strictTypes });
|
|
319
|
+
let document = patched.document;
|
|
320
|
+
let layoutNote;
|
|
321
|
+
const wantsAll = relayout === "all" || patched.relayout?.scope === "all";
|
|
322
|
+
const layoutDirection = direction ?? patched.relayout?.direction;
|
|
323
|
+
const bpmn = document.source?.format === "bpmn";
|
|
324
|
+
if (wantsAll) {
|
|
325
|
+
// A process reads left to right; the BPMN XML follows the moves.
|
|
326
|
+
const laid = await layoutDocument(document, { direction: layoutDirection ?? (bpmn ? "RIGHT" : undefined) });
|
|
327
|
+
document = laid.document;
|
|
328
|
+
layoutNote = laid.warning ?? `Laid out with ${laid.engine}.`;
|
|
329
|
+
}
|
|
330
|
+
else if (relayout === "new" && patched.addedNodeIds.length > 0) {
|
|
331
|
+
const ids = patched.addedNodeIds.filter((id) => document.nodes.some((node) => node.id === id));
|
|
332
|
+
if (bpmn) {
|
|
333
|
+
document = applyDiagramOps(document, placeBpmnNodesOps(document, ids), { now: now() }).doc;
|
|
334
|
+
layoutNote = `Placed ${ids.length} new node(s) after their predecessors.`;
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
document = placeNewNodes(document, ids);
|
|
338
|
+
layoutNote = `Placed ${ids.length} new node(s) below the existing ones.`;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
const updated = await ctx.api.updateDiagram(record.id, {
|
|
342
|
+
document,
|
|
343
|
+
...(typeof existing.meta.revision === "number" ? { baseRevision: existing.meta.revision } : {}),
|
|
344
|
+
});
|
|
345
|
+
return { updated, document, patched, layoutNote };
|
|
346
|
+
};
|
|
347
|
+
let outcome;
|
|
348
|
+
let retried = false;
|
|
349
|
+
try {
|
|
350
|
+
outcome = await attempt(resolved.item);
|
|
152
351
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
352
|
+
catch (error) {
|
|
353
|
+
if (!isConflict(error))
|
|
354
|
+
throw error;
|
|
355
|
+
retried = true;
|
|
356
|
+
outcome = await attempt(await ctx.api.getDiagram(resolved.item.id));
|
|
156
357
|
}
|
|
157
|
-
const updated = await ctx.api.updateDiagram(resolved.item.id, { document });
|
|
158
358
|
ctx.invalidate("diagrams");
|
|
359
|
+
const { updated, document, patched, layoutNote } = outcome;
|
|
159
360
|
return ok({
|
|
160
361
|
diagram: { ...diagramListView(updated), ...diagramGraphView(document) },
|
|
161
362
|
applied: ops.length,
|
|
@@ -163,7 +364,8 @@ export const registerDiagramTools = (server, ctx) => {
|
|
|
163
364
|
removedNodes: patched.removedNodeIds,
|
|
164
365
|
removedEdges: patched.removedEdgeIds,
|
|
165
366
|
...(patched.reroutedEdgeIds.length > 0 ? { reroutedEdges: patched.reroutedEdgeIds } : {}),
|
|
166
|
-
|
|
367
|
+
...(Object.keys(patched.idMap).length > 0 ? { idMap: patched.idMap } : {}),
|
|
368
|
+
warnings: [...patched.warnings, ...(retried ? ["The diagram had been saved by someone else meanwhile; your ops were re-applied on the newer version."] : [])],
|
|
167
369
|
...(layoutNote ? { layout: layoutNote } : {}),
|
|
168
370
|
resolved: [resolvedSummary(diagram, resolved)],
|
|
169
371
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagrams.js","sourceRoot":"","sources":["../../src/tools/diagrams.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diagrams.js","sourceRoot":"","sources":["../../src/tools/diagrams.ts"],"names":[],"mappings":"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"}
|
package/dist-cjs/client/api.js
CHANGED
|
@@ -228,6 +228,8 @@ class CallmanApi {
|
|
|
228
228
|
createDiagram(body) {
|
|
229
229
|
return this.http.request("POST", "/diagrams", { body });
|
|
230
230
|
}
|
|
231
|
+
// `baseRevision` (newer servers): the document.meta.revision last read; a
|
|
232
|
+
// stale one is refused with 409 DIAGRAM_REVISION_CONFLICT.
|
|
231
233
|
updateDiagram(id, body) {
|
|
232
234
|
return this.http.request("PUT", `/diagrams/${id}`, { body });
|
|
233
235
|
}
|