comfyui-mcp 0.3.2 → 0.4.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 (83) hide show
  1. package/.beads/README.md +81 -0
  2. package/.beads/config.yaml +54 -0
  3. package/.beads/metadata.json +7 -0
  4. package/AGENTS.md +84 -0
  5. package/CLAUDE.md +48 -0
  6. package/README.md +22 -0
  7. package/dist/comfyui/client.d.ts +17 -0
  8. package/dist/comfyui/client.d.ts.map +1 -1
  9. package/dist/comfyui/client.js +39 -0
  10. package/dist/comfyui/client.js.map +1 -1
  11. package/dist/comfyui/types.d.ts +52 -0
  12. package/dist/comfyui/types.d.ts.map +1 -1
  13. package/dist/config.d.ts +4 -0
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +7 -1
  16. package/dist/config.js.map +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/services/asset-registry.d.ts +64 -0
  20. package/dist/services/asset-registry.d.ts.map +1 -0
  21. package/dist/services/asset-registry.js +118 -0
  22. package/dist/services/asset-registry.js.map +1 -0
  23. package/dist/services/defaults-manager.d.ts +31 -0
  24. package/dist/services/defaults-manager.d.ts.map +1 -0
  25. package/dist/services/defaults-manager.js +128 -0
  26. package/dist/services/defaults-manager.js.map +1 -0
  27. package/dist/services/generate-image.d.ts +35 -0
  28. package/dist/services/generate-image.d.ts.map +1 -0
  29. package/dist/services/generate-image.js +63 -0
  30. package/dist/services/generate-image.js.map +1 -0
  31. package/dist/services/image-management.d.ts +16 -0
  32. package/dist/services/image-management.d.ts.map +1 -1
  33. package/dist/services/image-management.js +32 -0
  34. package/dist/services/image-management.js.map +1 -1
  35. package/dist/services/job-watcher.d.ts +5 -1
  36. package/dist/services/job-watcher.d.ts.map +1 -1
  37. package/dist/services/job-watcher.js +42 -3
  38. package/dist/services/job-watcher.js.map +1 -1
  39. package/dist/services/process-control.js +2 -2
  40. package/dist/services/process-control.js.map +1 -1
  41. package/dist/services/view-image.d.ts +17 -0
  42. package/dist/services/view-image.d.ts.map +1 -0
  43. package/dist/services/view-image.js +36 -0
  44. package/dist/services/view-image.js.map +1 -0
  45. package/dist/services/workflow-autoload.d.ts +41 -0
  46. package/dist/services/workflow-autoload.d.ts.map +1 -0
  47. package/dist/services/workflow-autoload.js +172 -0
  48. package/dist/services/workflow-autoload.js.map +1 -0
  49. package/dist/services/workflow-converter.d.ts +15 -0
  50. package/dist/services/workflow-converter.d.ts.map +1 -1
  51. package/dist/services/workflow-converter.js +333 -5
  52. package/dist/services/workflow-converter.js.map +1 -1
  53. package/dist/services/workflow-executor.d.ts.map +1 -1
  54. package/dist/services/workflow-executor.js +4 -2
  55. package/dist/services/workflow-executor.js.map +1 -1
  56. package/dist/tools/assets.d.ts +3 -0
  57. package/dist/tools/assets.d.ts.map +1 -0
  58. package/dist/tools/assets.js +128 -0
  59. package/dist/tools/assets.js.map +1 -0
  60. package/dist/tools/defaults.d.ts +3 -0
  61. package/dist/tools/defaults.d.ts.map +1 -0
  62. package/dist/tools/defaults.js +57 -0
  63. package/dist/tools/defaults.js.map +1 -0
  64. package/dist/tools/diagnostics.d.ts.map +1 -1
  65. package/dist/tools/diagnostics.js +14 -3
  66. package/dist/tools/diagnostics.js.map +1 -1
  67. package/dist/tools/generate-image.d.ts +3 -0
  68. package/dist/tools/generate-image.d.ts.map +1 -0
  69. package/dist/tools/generate-image.js +61 -0
  70. package/dist/tools/generate-image.js.map +1 -0
  71. package/dist/tools/image-management.d.ts.map +1 -1
  72. package/dist/tools/image-management.js +99 -11
  73. package/dist/tools/image-management.js.map +1 -1
  74. package/dist/tools/index.d.ts +1 -1
  75. package/dist/tools/index.d.ts.map +1 -1
  76. package/dist/tools/index.js +13 -1
  77. package/dist/tools/index.js.map +1 -1
  78. package/dist/tools/workflow-autoload.d.ts +9 -0
  79. package/dist/tools/workflow-autoload.d.ts.map +1 -0
  80. package/dist/tools/workflow-autoload.js +64 -0
  81. package/dist/tools/workflow-autoload.js.map +1 -0
  82. package/package.json +1 -1
  83. package/plugin/scripts/monitor-progress.mjs +9 -5
@@ -64,16 +64,344 @@ function getOrderedInputNames(def) {
64
64
  }
65
65
  return names;
66
66
  }
67
+ /**
68
+ * Expand component/subgraph nodes by flattening their inner graphs into the
69
+ * outer workflow. Component nodes have a UUID `type` that matches a definition
70
+ * in `workflow.definitions.subgraphs`. Each inner node gets a unique ID to
71
+ * avoid collisions with outer nodes or other component instances.
72
+ *
73
+ * Handles nested components (component inside component) iteratively up to a
74
+ * maximum depth of 10.
75
+ */
76
+ export function expandComponents(ui) {
77
+ const subgraphs = ui.definitions?.subgraphs;
78
+ if (!subgraphs || subgraphs.length === 0) {
79
+ return { expanded: ui, warnings: [] };
80
+ }
81
+ // Build subgraph lookup: UUID → definition
82
+ const sgMap = new Map();
83
+ for (const sg of subgraphs) {
84
+ sgMap.set(sg.id, sg);
85
+ }
86
+ // Deep-clone so we don't mutate the caller's data
87
+ let nodes = JSON.parse(JSON.stringify(ui.nodes));
88
+ let links = JSON.parse(JSON.stringify(ui.links));
89
+ const warnings = [];
90
+ // Find max IDs for safe remapping
91
+ let nextNodeId = 1;
92
+ let nextLinkId = 1;
93
+ for (const n of nodes)
94
+ nextNodeId = Math.max(nextNodeId, n.id + 1);
95
+ for (const l of links)
96
+ nextLinkId = Math.max(nextLinkId, l[0] + 1);
97
+ for (const sg of subgraphs) {
98
+ for (const n of sg.nodes)
99
+ nextNodeId = Math.max(nextNodeId, n.id + 1);
100
+ for (const l of sg.links)
101
+ nextLinkId = Math.max(nextLinkId, l.id + 1);
102
+ }
103
+ const MAX_DEPTH = 10;
104
+ for (let depth = 0; depth < MAX_DEPTH; depth++) {
105
+ const componentNodes = nodes.filter((n) => sgMap.has(n.type));
106
+ if (componentNodes.length === 0)
107
+ break;
108
+ for (const compNode of componentNodes) {
109
+ const sg = sgMap.get(compNode.type);
110
+ // Skip muted / bypassed component nodes
111
+ if (compNode.mode === 2 || compNode.mode === 4) {
112
+ warnings.push(`Component node ${compNode.id} ("${sg.name}") is muted/bypassed — skipping expansion.`);
113
+ // Remove it so the main converter doesn't warn about unknown type
114
+ nodes = nodes.filter((n) => n.id !== compNode.id);
115
+ continue;
116
+ }
117
+ const result = expandSingleComponent(compNode, sg, nodes, links, nextNodeId, nextLinkId);
118
+ nodes = result.nodes;
119
+ links = result.links;
120
+ nextNodeId = result.nextNodeId;
121
+ nextLinkId = result.nextLinkId;
122
+ warnings.push(...result.warnings);
123
+ }
124
+ }
125
+ const expanded = {
126
+ ...ui,
127
+ nodes,
128
+ links,
129
+ };
130
+ return { expanded, warnings };
131
+ }
132
+ /**
133
+ * Expand a single component node, returning the modified nodes & links arrays.
134
+ */
135
+ function expandSingleComponent(compNode, sg, outerNodes, outerLinks, nextNodeId, nextLinkId) {
136
+ const warnings = [];
137
+ const inputNodeId = sg.inputNode.id; // typically -10
138
+ const outputNodeId = sg.outputNode.id; // typically -20
139
+ // ── 1. Remap inner node IDs ──────────────────────────────────────────────
140
+ const nodeRemap = new Map(); // oldInner → newOuter
141
+ for (const inner of sg.nodes) {
142
+ nodeRemap.set(inner.id, nextNodeId++);
143
+ }
144
+ // ── 2. Remap inner link IDs ──────────────────────────────────────────────
145
+ const linkRemap = new Map();
146
+ for (const inner of sg.links) {
147
+ linkRemap.set(inner.id, nextLinkId++);
148
+ }
149
+ // ── 3. Build inner link lookup ───────────────────────────────────────────
150
+ const innerLinkById = new Map();
151
+ for (const l of sg.links)
152
+ innerLinkById.set(l.id, l);
153
+ // ── 4. Clone inner nodes with remapped IDs ──────────────────────────────
154
+ const newNodes = [];
155
+ for (const inner of sg.nodes) {
156
+ const cloned = JSON.parse(JSON.stringify(inner));
157
+ cloned.id = nodeRemap.get(inner.id);
158
+ // Remap link references in inputs
159
+ if (cloned.inputs) {
160
+ for (const inp of cloned.inputs) {
161
+ if (inp.link != null) {
162
+ inp.link = linkRemap.get(inp.link) ?? inp.link;
163
+ }
164
+ }
165
+ }
166
+ // Remap link references in outputs
167
+ if (cloned.outputs) {
168
+ for (const out of cloned.outputs) {
169
+ if (out.links) {
170
+ out.links = out.links.map((lid) => linkRemap.get(lid) ?? lid);
171
+ }
172
+ }
173
+ }
174
+ newNodes.push(cloned);
175
+ }
176
+ // ── 5. Convert inner links to outer array format ────────────────────────
177
+ // Skip links involving virtual input/output nodes — those get rewired.
178
+ const newLinks = [];
179
+ for (const il of sg.links) {
180
+ if (il.origin_id === inputNodeId || il.target_id === outputNodeId)
181
+ continue;
182
+ const newId = linkRemap.get(il.id);
183
+ const newSrc = nodeRemap.get(il.origin_id);
184
+ const newTgt = nodeRemap.get(il.target_id);
185
+ if (newSrc == null || newTgt == null) {
186
+ warnings.push(`Component "${sg.name}": inner link ${il.id} references unknown node — skipping.`);
187
+ continue;
188
+ }
189
+ newLinks.push([newId, newSrc, il.origin_slot, newTgt, il.target_slot, il.type]);
190
+ }
191
+ // ── 6. Rewire external inputs (outer → component → inner) ──────────────
192
+ // Build outer link map for quick lookup
193
+ const outerLinkMap = new Map();
194
+ for (const ol of outerLinks)
195
+ outerLinkMap.set(ol[0], ol);
196
+ const linksToRemove = new Set(); // outer link IDs to remove
197
+ const linksToAdd = [];
198
+ if (compNode.inputs) {
199
+ for (let slotIdx = 0; slotIdx < compNode.inputs.length; slotIdx++) {
200
+ const compInput = compNode.inputs[slotIdx];
201
+ if (compInput.link == null)
202
+ continue;
203
+ const outerLink = outerLinkMap.get(compInput.link);
204
+ if (!outerLink)
205
+ continue;
206
+ const srcNodeId = outerLink[1];
207
+ const srcSlot = outerLink[2];
208
+ // Find the matching subgraph input by name
209
+ const sgInput = sg.inputs.find((inp) => inp.name === compInput.name);
210
+ if (!sgInput) {
211
+ warnings.push(`Component "${sg.name}": could not match input "${compInput.name}" — skipping rewire.`);
212
+ continue;
213
+ }
214
+ // For each inner link from the virtual input node, create a new outer link
215
+ for (const innerLinkId of sgInput.linkIds) {
216
+ const il = innerLinkById.get(innerLinkId);
217
+ if (!il || il.origin_id !== inputNodeId)
218
+ continue;
219
+ const remappedTarget = nodeRemap.get(il.target_id);
220
+ if (remappedTarget == null)
221
+ continue;
222
+ const newId = nextLinkId++;
223
+ linksToAdd.push([newId, srcNodeId, srcSlot, remappedTarget, il.target_slot, il.type]);
224
+ // Update the cloned inner node's input to point to the new link
225
+ const targetNode = newNodes.find((n) => n.id === remappedTarget);
226
+ if (targetNode?.inputs) {
227
+ for (const inp of targetNode.inputs) {
228
+ if (inp.link === linkRemap.get(innerLinkId)) {
229
+ inp.link = newId;
230
+ }
231
+ }
232
+ }
233
+ }
234
+ linksToRemove.add(compInput.link);
235
+ }
236
+ }
237
+ // ── 7. Rewire external outputs (inner → component → outer) ─────────────
238
+ if (compNode.outputs) {
239
+ for (let slotIdx = 0; slotIdx < compNode.outputs.length; slotIdx++) {
240
+ const compOutput = compNode.outputs[slotIdx];
241
+ if (!compOutput.links || compOutput.links.length === 0)
242
+ continue;
243
+ // Find the matching subgraph output by name
244
+ const sgOutput = sg.outputs.find((out) => out.name === compOutput.name);
245
+ if (!sgOutput) {
246
+ warnings.push(`Component "${sg.name}": could not match output "${compOutput.name}" — skipping rewire.`);
247
+ continue;
248
+ }
249
+ // Find the inner node that produces this output
250
+ let innerSrcId = null;
251
+ let innerSrcSlot = 0;
252
+ for (const innerLinkId of sgOutput.linkIds) {
253
+ const il = innerLinkById.get(innerLinkId);
254
+ if (il && il.target_id === outputNodeId) {
255
+ innerSrcId = il.origin_id;
256
+ innerSrcSlot = il.origin_slot;
257
+ break;
258
+ }
259
+ }
260
+ if (innerSrcId == null)
261
+ continue;
262
+ const remappedSrc = nodeRemap.get(innerSrcId);
263
+ if (remappedSrc == null)
264
+ continue;
265
+ // Rewire each outer link that consumes this component output
266
+ for (const outerLinkId of compOutput.links) {
267
+ const outerLink = outerLinkMap.get(outerLinkId);
268
+ if (!outerLink)
269
+ continue;
270
+ const tgtNodeId = outerLink[3];
271
+ const tgtSlot = outerLink[4];
272
+ const linkType = outerLink[5];
273
+ const newId = nextLinkId++;
274
+ linksToAdd.push([newId, remappedSrc, innerSrcSlot, tgtNodeId, tgtSlot, linkType]);
275
+ // Update the outer target node's input to reference the new link
276
+ const tgtNode = outerNodes.find((n) => n.id === tgtNodeId);
277
+ if (tgtNode?.inputs) {
278
+ for (const inp of tgtNode.inputs) {
279
+ if (inp.link === outerLinkId) {
280
+ inp.link = newId;
281
+ }
282
+ }
283
+ }
284
+ linksToRemove.add(outerLinkId);
285
+ }
286
+ }
287
+ }
288
+ // ── 8. Apply proxy widget values ────────────────────────────────────────
289
+ const proxyWidgets = compNode.properties?.proxyWidgets ?? [];
290
+ const widgetValues = compNode.widgets_values ?? [];
291
+ for (let i = 0; i < proxyWidgets.length; i++) {
292
+ const [innerNodeIdStr, widgetName] = proxyWidgets[i];
293
+ const value = i < widgetValues.length ? widgetValues[i] : undefined;
294
+ if (value === undefined || value === null)
295
+ continue;
296
+ const innerNodeIdNum = Number(innerNodeIdStr);
297
+ const remapped = nodeRemap.get(innerNodeIdNum);
298
+ if (remapped == null)
299
+ continue;
300
+ const targetNode = newNodes.find((n) => n.id === remapped);
301
+ if (!targetNode)
302
+ continue;
303
+ // Find the widget position in widgets_values by counting widget-type inputs
304
+ const widgetIdx = findWidgetIndex(targetNode, widgetName);
305
+ if (widgetIdx != null) {
306
+ if (!targetNode.widgets_values)
307
+ targetNode.widgets_values = [];
308
+ targetNode.widgets_values[widgetIdx] = value;
309
+ }
310
+ }
311
+ // ── 9. Resolve PrimitiveNode-type nodes inside the subgraph ─────────────
312
+ // PrimitiveNode/PrimitiveInt/PrimitiveFloat/PrimitiveBoolean/PrimitiveStringMultiline
313
+ // produce widget values but get skipped by the main converter. Resolve them
314
+ // by pushing their value onto the target node's widgets_values.
315
+ const PRIMITIVE_TYPES = new Set([
316
+ "PrimitiveNode", "PrimitiveInt", "PrimitiveFloat",
317
+ "PrimitiveBoolean", "PrimitiveStringMultiline", "CustomCombo",
318
+ ]);
319
+ const primitiveNodeIds = new Set(newNodes.filter((n) => PRIMITIVE_TYPES.has(n.type)).map((n) => n.id));
320
+ if (primitiveNodeIds.size > 0) {
321
+ // For each new link FROM a primitive node, set the value on the target
322
+ for (const link of newLinks) {
323
+ const [, srcId, , tgtId, tgtSlot] = link;
324
+ if (!primitiveNodeIds.has(srcId))
325
+ continue;
326
+ const primNode = newNodes.find((n) => n.id === srcId);
327
+ const tgtNode = newNodes.find((n) => n.id === tgtId);
328
+ if (!primNode || !tgtNode)
329
+ continue;
330
+ const primValue = primNode.widgets_values && primNode.widgets_values.length > 0
331
+ ? primNode.widgets_values[0]
332
+ : undefined;
333
+ if (primValue === undefined)
334
+ continue;
335
+ // Find the target input at tgtSlot that has a widget
336
+ if (tgtNode.inputs) {
337
+ const tgtInput = tgtNode.inputs.find((inp) => inp.link === link[0] && inp.widget);
338
+ if (tgtInput) {
339
+ const idx = findWidgetIndex(tgtNode, tgtInput.widget.name);
340
+ if (idx != null) {
341
+ if (!tgtNode.widgets_values)
342
+ tgtNode.widgets_values = [];
343
+ tgtNode.widgets_values[idx] = primValue;
344
+ }
345
+ // Clear the link so the main converter treats this as a widget value
346
+ tgtInput.link = null;
347
+ }
348
+ }
349
+ }
350
+ }
351
+ // ── 10. Assemble result ─────────────────────────────────────────────────
352
+ const resultNodes = [
353
+ ...outerNodes.filter((n) => n.id !== compNode.id),
354
+ ...newNodes,
355
+ ];
356
+ const resultLinks = [
357
+ ...outerLinks.filter((l) => !linksToRemove.has(l[0])),
358
+ ...newLinks,
359
+ ...linksToAdd,
360
+ ];
361
+ return {
362
+ nodes: resultNodes,
363
+ links: resultLinks,
364
+ nextNodeId,
365
+ nextLinkId,
366
+ warnings,
367
+ };
368
+ }
369
+ /**
370
+ * Find the widgets_values index for a named widget on a UI node.
371
+ * Counts widget-type inputs (those with a `widget` property) in order.
372
+ */
373
+ function findWidgetIndex(node, widgetName) {
374
+ if (!node.inputs)
375
+ return null;
376
+ // Widget inputs on a UiNode are entries in `inputs[]` that have a `widget` property.
377
+ // However, not all widgets appear in `inputs[]` — some are only in `widgets_values`.
378
+ // We count only the widget-inputs that appear in the node's inputs array,
379
+ // matching by the `widget.name` field.
380
+ let idx = 0;
381
+ for (const inp of node.inputs) {
382
+ if (inp.widget) {
383
+ if (inp.widget.name === widgetName)
384
+ return idx;
385
+ idx++;
386
+ }
387
+ }
388
+ // Fallback: if widget is not in inputs[] (pure widget, no link slot),
389
+ // it may be at a fixed position. Search widgets_values if we can match by name.
390
+ // For now, return null — the widget is likely at its default value.
391
+ return null;
392
+ }
67
393
  /**
68
394
  * Convert a ComfyUI UI-format workflow to API format.
69
395
  * Requires objectInfo from /object_info to map widgets_values to named inputs.
70
396
  */
71
397
  export function convertUiToApi(ui, objectInfo) {
398
+ // Expand component/subgraph nodes before conversion
399
+ const { expanded, warnings: expandWarnings } = expandComponents(ui);
72
400
  const workflow = {};
73
- const warnings = [];
401
+ const warnings = [...expandWarnings];
74
402
  // Build link lookup: linkId → LinkInfo
75
403
  const linkMap = new Map();
76
- for (const link of ui.links) {
404
+ for (const link of expanded.links) {
77
405
  if (!Array.isArray(link) || link.length < 6)
78
406
  continue;
79
407
  const [linkId, sourceNodeId, sourceSlot, targetNodeId, targetSlot, typeName] = link;
@@ -86,7 +414,7 @@ export function convertUiToApi(ui, objectInfo) {
86
414
  });
87
415
  }
88
416
  // Build a set of node IDs for validating link targets
89
- const nodeIdSet = new Set(ui.nodes.map((n) => n.id));
417
+ const nodeIdSet = new Set(expanded.nodes.map((n) => n.id));
90
418
  // Node types that are purely visual/internal and have no API equivalent
91
419
  const SKIP_TYPES = new Set(["Reroute", "Note", "PrimitiveNode", "MarkdownNote"]);
92
420
  // Get/Set node types that need special handling (not in object_info)
@@ -94,7 +422,7 @@ export function convertUiToApi(ui, objectInfo) {
94
422
  "GetNode", "SetNode", "PRO_GetNode", "PRO_SetNode",
95
423
  "SetNode_GetNode", "SetNode_SetNode",
96
424
  ]);
97
- for (const node of ui.nodes) {
425
+ for (const node of expanded.nodes) {
98
426
  const nodeId = String(node.id);
99
427
  const classType = node.type;
100
428
  // Skip internal litegraph node types
@@ -190,7 +518,7 @@ export function convertUiToApi(ui, objectInfo) {
190
518
  }
191
519
  }
192
520
  const nodeCount = Object.keys(workflow).length;
193
- const skipped = ui.nodes.length - nodeCount;
521
+ const skipped = expanded.nodes.length - nodeCount;
194
522
  logger.info(`Converted UI workflow: ${nodeCount} nodes (${skipped} skipped)`);
195
523
  return { workflow, warnings };
196
524
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-converter.js","sourceRoot":"","sources":["../../src/services/workflow-converter.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAe5C;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAChF,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CACpB,SAAiB,EACjB,GAAmB;IAEnB,MAAM,IAAI,GACR,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,gFAAgF;IAChF,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,wBAAwB;IACxB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;QAC3B,KAAK;QACL,OAAO;QACP,QAAQ;QACR,SAAS;QACT,OAAO;KACR,CAAC,CAAC;IACH,OAAO,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAC9B,SAAiB,EACjB,GAAmB;IAEnB,MAAM,IAAI,GACR,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAQ,IAAI,CAAC,CAAC,CAA6B,CAAC,sBAAsB,KAAK,IAAI,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,GAAmB;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtE,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,iCAAiC;QACjC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAc,EACd,UAAsB;IAEtB,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,uCAAuC;IACvC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QACtD,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,GAC1E,IAAc,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;YAClB,YAAY;YACZ,UAAU;YACV,YAAY;YACZ,UAAU;YACV,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,sDAAsD;IACtD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAErD,wEAAwE;IACxE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;IAEjF,qEAAqE;IACrE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;QAC5B,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa;QAClD,iBAAiB,EAAE,iBAAiB;KACrC,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAE5B,qCAAqC;QACrC,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,SAAS;QAExC,wBAAwB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;QAEnD,sEAAsE;QACtE,0EAA0E;QAC1E,IAAI,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;YACpD,MAAM,MAAM,GAA4B,EAAE,CAAC;YAE3C,4CAA4C;YAC5C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;wBACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACzC,IAAI,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;4BACrD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAC5E,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,0CAA0C;YAC1C,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;YAED,QAAQ,CAAC,MAAM,CAAC,GAAG;gBACjB,UAAU,EAAE,SAAS;gBACrB,MAAM;gBACN,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE;aACrC,CAAC;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAW,CAAC;YACjF,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,QAAQ,CAAC,IAAI,CACX,QAAQ,MAAM,KAAK,SAAS,2EAA2E,CACxG,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAA4B,EAAE,CAAC;QAE3C,oEAAoE;QACpE,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC7B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,mFAAmF;QACnF,yFAAyF;QACzF,mEAAmE;QACnE,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;QAC/C,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,SAAS,IAAI,YAAY,CAAC,MAAM;gBAAE,MAAM;YAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;YACvC,SAAS,EAAE,CAAC;YAEZ,+EAA+E;YAC/E,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC1E,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACzC,IAAI,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;wBACrD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC5E,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,QAAQ,CAAC,MAAM,CAAC,GAAG;YACjB,UAAU,EAAE,SAAS;YACrB,MAAM;SACP,CAAC;QAEF,mCAAmC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;QAC9C,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,KAAK,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrD,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,IAA0B,CAAC;QACtD,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5C,MAAM,CAAC,IAAI,CACT,0BAA0B,SAAS,WAAW,OAAO,WAAW,CACjE,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"workflow-converter.js","sourceRoot":"","sources":["../../src/services/workflow-converter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../src/services/workflow-executor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAwBD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB1D;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,CAE1D"}
1
+ {"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../src/services/workflow-executor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAwBD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB1D;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,CAE1D"}
@@ -34,8 +34,10 @@ export async function enqueueWorkflow(workflowJson, options) {
34
34
  prompt_id: result.prompt_id,
35
35
  queue_remaining: result.queue_remaining,
36
36
  });
37
- // Start background watcher for completion detection
38
- JobWatcher.watch(result.prompt_id);
37
+ // Start background watcher for completion detection. Capture the workflow
38
+ // that was actually sent (post-seed-randomization) so the AssetRegistry can
39
+ // store an exact reproducible snapshot for `regenerate`.
40
+ JobWatcher.watch(result.prompt_id, workflow);
39
41
  return result;
40
42
  }
41
43
  export async function getSystemInfo() {
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-executor.js","sourceRoot":"","sources":["../../src/services/workflow-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,mBAAmB,EACpC,cAAc,IAAI,oBAAoB,GACvC,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C;;;;GAIG;AACH,SAAS,cAAc,CAAC,QAAsB;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAiB,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;gBACzC,IACE,GAAG,IAAI,IAAI,CAAC,MAAM;oBAClB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EACpC,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,YAA0B,EAC1B,OAAgC;IAEhC,MAAM,QAAQ,GAAG,OAAO,EAAE,mBAAmB;QAC3C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAEjC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAmC,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC,CAAC,CAAC;IAEH,oDAAoD;IACpD,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"workflow-executor.js","sourceRoot":"","sources":["../../src/services/workflow-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,mBAAmB,EACpC,cAAc,IAAI,oBAAoB,GACvC,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C;;;;GAIG;AACH,SAAS,cAAc,CAAC,QAAsB;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAiB,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;gBACzC,IACE,GAAG,IAAI,IAAI,CAAC,MAAM;oBAClB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EACpC,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,YAA0B,EAC1B,OAAgC;IAEhC,MAAM,QAAQ,GAAG,OAAO,EAAE,mBAAmB;QAC3C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAEjC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAmC,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,4EAA4E;IAC5E,yDAAyD;IACzD,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerAssetTools(server: McpServer): void;
3
+ //# sourceMappingURL=assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/tools/assets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwJ1D"}
@@ -0,0 +1,128 @@
1
+ import { z } from "zod";
2
+ import { AssetRegistry, applyOverrides } from "../services/asset-registry.js";
3
+ import { enqueueWorkflow } from "../services/workflow-executor.js";
4
+ import { viewAssetImage } from "../services/view-image.js";
5
+ import { errorToToolResult } from "../utils/errors.js";
6
+ function summarizeRecord(record) {
7
+ if (!record)
8
+ return null;
9
+ return {
10
+ asset_id: record.assetId,
11
+ prompt_id: record.promptId,
12
+ node_id: record.nodeId,
13
+ filename: record.filename,
14
+ subfolder: record.subfolder,
15
+ type: record.type,
16
+ url: record.url,
17
+ created_at: new Date(record.createdAt).toISOString(),
18
+ };
19
+ }
20
+ export function registerAssetTools(server) {
21
+ server.tool("view_image", "Fetch a registered asset's bytes and return them as an inline image so the agent can see the result. Use this after enqueue_workflow completes (asset_id is included in the completion notification) to inspect, critique, or compare generated images. Only supports image mime types (PNG/JPEG/WebP); audio/video assets must be saved to disk via get_image.", {
22
+ asset_id: z.string().describe("Asset id returned by list_assets or job completion"),
23
+ }, async ({ asset_id }) => {
24
+ try {
25
+ const result = await viewAssetImage(asset_id);
26
+ return {
27
+ content: result.content.map((block) => block.type === "image"
28
+ ? { type: "image", data: block.data, mimeType: block.mimeType }
29
+ : { type: "text", text: block.text }),
30
+ };
31
+ }
32
+ catch (err) {
33
+ return errorToToolResult(err);
34
+ }
35
+ });
36
+ server.tool("list_assets", "List recently generated assets from the in-memory registry, newest-first. Assets are registered automatically when a workflow completes successfully. The registry is ephemeral and clears on server restart; records expire after COMFYUI_ASSET_TTL_HOURS (default 24h).", {
37
+ limit: z
38
+ .number()
39
+ .int()
40
+ .positive()
41
+ .optional()
42
+ .describe("Max records to return (default: all)"),
43
+ since: z
44
+ .string()
45
+ .datetime()
46
+ .optional()
47
+ .describe("ISO timestamp — only return assets created at or after this time"),
48
+ }, async (args) => {
49
+ try {
50
+ const since = args.since ? Date.parse(args.since) : undefined;
51
+ const records = AssetRegistry.list({ limit: args.limit, since });
52
+ return {
53
+ content: [
54
+ {
55
+ type: "text",
56
+ text: JSON.stringify({ count: records.length, assets: records.map(summarizeRecord) }, null, 2),
57
+ },
58
+ ],
59
+ };
60
+ }
61
+ catch (err) {
62
+ return errorToToolResult(err);
63
+ }
64
+ });
65
+ server.tool("get_asset_metadata", "Get full provenance for a registered asset including the workflow snapshot that produced it. Use this to inspect the parameters that generated an image before calling regenerate with overrides.", {
66
+ asset_id: z.string().describe("Asset id returned by list_assets or job completion"),
67
+ }, async ({ asset_id }) => {
68
+ try {
69
+ const record = AssetRegistry.get(asset_id);
70
+ if (!record) {
71
+ return errorToToolResult(new Error(`No asset found for id "${asset_id}". It may have expired or never been registered.`));
72
+ }
73
+ return {
74
+ content: [
75
+ {
76
+ type: "text",
77
+ text: JSON.stringify({
78
+ ...summarizeRecord(record),
79
+ workflow: record.workflow,
80
+ }, null, 2),
81
+ },
82
+ ],
83
+ };
84
+ }
85
+ catch (err) {
86
+ return errorToToolResult(err);
87
+ }
88
+ });
89
+ server.tool("regenerate", "Re-enqueue the workflow that produced an existing asset, optionally applying parameter overrides. Overrides are applied to any node input matching the key name (e.g. cfg, steps, sampler_name, scheduler, seed, denoise, text). Seeds are re-randomized by default so each regenerate yields a fresh image unless seed is explicitly passed in overrides.", {
90
+ asset_id: z.string().describe("Asset id of the source generation"),
91
+ overrides: z
92
+ .record(z.string(), z.any())
93
+ .optional()
94
+ .describe("Map of input-name → new value applied to every node that already has that input. " +
95
+ "Common keys: cfg, steps, sampler_name, scheduler, seed, denoise, text."),
96
+ disable_random_seed: z
97
+ .boolean()
98
+ .optional()
99
+ .describe("If true, do not randomize seed fields. Combine with `overrides.seed` to reproduce the exact original image."),
100
+ }, async ({ asset_id, overrides, disable_random_seed }) => {
101
+ try {
102
+ const record = AssetRegistry.get(asset_id);
103
+ if (!record) {
104
+ return errorToToolResult(new Error(`No asset found for id "${asset_id}". It may have expired or never been registered.`));
105
+ }
106
+ const next = applyOverrides(record.workflow, overrides);
107
+ const result = await enqueueWorkflow(next, { disable_random_seed });
108
+ return {
109
+ content: [
110
+ {
111
+ type: "text",
112
+ text: JSON.stringify({
113
+ status: "enqueued",
114
+ prompt_id: result.prompt_id,
115
+ queue_remaining: result.queue_remaining,
116
+ source_asset_id: asset_id,
117
+ overrides_applied: overrides ?? {},
118
+ }, null, 2),
119
+ },
120
+ ],
121
+ };
122
+ }
123
+ catch (err) {
124
+ return errorToToolResult(err);
125
+ }
126
+ });
127
+ }
128
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/tools/assets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerDefaultsTools(server: McpServer): void;
3
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/tools/defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqE7D"}