comfyui-mcp 0.3.0 → 0.3.2
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/dist/comfyui/types.d.ts +47 -0
- package/dist/comfyui/types.d.ts.map +1 -1
- package/dist/services/hierarchical-mermaid.d.ts +3 -2
- package/dist/services/hierarchical-mermaid.d.ts.map +1 -1
- package/dist/services/hierarchical-mermaid.js +154 -1
- package/dist/services/hierarchical-mermaid.js.map +1 -1
- package/dist/services/workflow-converter.d.ts +16 -0
- package/dist/services/workflow-converter.d.ts.map +1 -0
- package/dist/services/workflow-converter.js +197 -0
- package/dist/services/workflow-converter.js.map +1 -0
- package/dist/services/workflow-sections.d.ts.map +1 -1
- package/dist/services/workflow-sections.js +41 -6
- package/dist/services/workflow-sections.js.map +1 -1
- package/dist/tools/workflow-library.d.ts.map +1 -1
- package/dist/tools/workflow-library.js +134 -9
- package/dist/tools/workflow-library.js.map +1 -1
- package/dist/tools/workflow-visualize.d.ts.map +1 -1
- package/dist/tools/workflow-visualize.js +29 -9
- package/dist/tools/workflow-visualize.js.map +1 -1
- package/package.json +1 -1
- package/.github/workflows/ci.yml +0 -27
- package/.github/workflows/release.yml +0 -34
- package/docs/design/generation-tracker.md +0 -457
package/dist/comfyui/types.d.ts
CHANGED
|
@@ -65,4 +65,51 @@ export interface JobProgress {
|
|
|
65
65
|
node?: string;
|
|
66
66
|
prompt_id?: string;
|
|
67
67
|
}
|
|
68
|
+
export interface UiNodeInput {
|
|
69
|
+
name: string;
|
|
70
|
+
type: string;
|
|
71
|
+
link: number | null;
|
|
72
|
+
widget?: {
|
|
73
|
+
name: string;
|
|
74
|
+
};
|
|
75
|
+
slot_index?: number;
|
|
76
|
+
}
|
|
77
|
+
export interface UiNodeOutput {
|
|
78
|
+
name: string;
|
|
79
|
+
type: string;
|
|
80
|
+
links: number[] | null;
|
|
81
|
+
slot_index?: number;
|
|
82
|
+
}
|
|
83
|
+
export interface UiNode {
|
|
84
|
+
id: number;
|
|
85
|
+
type: string;
|
|
86
|
+
pos: [number, number] | {
|
|
87
|
+
0: number;
|
|
88
|
+
1: number;
|
|
89
|
+
};
|
|
90
|
+
size?: [number, number] | {
|
|
91
|
+
0: number;
|
|
92
|
+
1: number;
|
|
93
|
+
};
|
|
94
|
+
flags?: Record<string, unknown>;
|
|
95
|
+
order?: number;
|
|
96
|
+
mode?: number;
|
|
97
|
+
inputs?: UiNodeInput[];
|
|
98
|
+
outputs?: UiNodeOutput[];
|
|
99
|
+
properties?: Record<string, unknown>;
|
|
100
|
+
widgets_values?: unknown[];
|
|
101
|
+
title?: string;
|
|
102
|
+
_meta?: {
|
|
103
|
+
title?: string;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export type UiLink = [number, number, number, number, number, string];
|
|
107
|
+
export interface UiWorkflow {
|
|
108
|
+
nodes: UiNode[];
|
|
109
|
+
links: UiLink[];
|
|
110
|
+
version?: number;
|
|
111
|
+
extra?: Record<string, unknown>;
|
|
112
|
+
config?: Record<string, unknown>;
|
|
113
|
+
groups?: unknown[];
|
|
114
|
+
}
|
|
68
115
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/comfyui/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;KACxC,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1E,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,aAAa,EAAE,SAAS,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,OAAO,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/comfyui/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { WorkflowJSON } from "../comfyui/types.js";
|
|
2
|
-
import type { SectionInfo } from "./workflow-sections.js";
|
|
1
|
+
import type { WorkflowJSON, ObjectInfo } from "../comfyui/types.js";
|
|
2
|
+
import type { SectionInfo, VirtualEdge } from "./workflow-sections.js";
|
|
3
3
|
interface HierarchicalOptions {
|
|
4
4
|
showValues?: boolean;
|
|
5
5
|
direction?: "LR" | "TB";
|
|
@@ -7,5 +7,6 @@ interface HierarchicalOptions {
|
|
|
7
7
|
export declare function generateOverview(workflow: WorkflowJSON, sections: Map<string, SectionInfo>, options?: HierarchicalOptions): string;
|
|
8
8
|
export declare function generateSectionDetail(workflow: WorkflowJSON, sections: Map<string, SectionInfo>, sectionName: string, options?: HierarchicalOptions): string;
|
|
9
9
|
export declare function listSections(workflow: WorkflowJSON, sections: Map<string, SectionInfo>): string;
|
|
10
|
+
export declare function generateSummary(workflow: WorkflowJSON, sections: Map<string, SectionInfo>, objectInfo: ObjectInfo, virtualEdges: VirtualEdge[], nodeToSection: Map<string, string>, getSetNodeIds: Set<string>): string;
|
|
10
11
|
export {};
|
|
11
12
|
//# sourceMappingURL=hierarchical-mermaid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchical-mermaid.d.ts","sourceRoot":"","sources":["../../src/services/hierarchical-mermaid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"hierarchical-mermaid.d.ts","sourceRoot":"","sources":["../../src/services/hierarchical-mermaid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAYvE,UAAU,mBAAmB;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAsBD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,OAAO,GAAE,mBAAwB,GAChC,MAAM,CA0DR;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,mBAAwB,GAChC,MAAM,CAkJR;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACjC,MAAM,CAkCR;AA0DD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,WAAW,EAAE,EAC3B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,MAAM,CA4HR"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buildNodeLabel, wrapNodeLabel, escapeForMermaid, extractConnections, guessOutputType, } from "./mermaid-converter.js";
|
|
1
|
+
import { buildNodeLabel, wrapNodeLabel, escapeForMermaid, extractConnections, guessOutputType, isConnection, DISPLAY_VALUES, } from "./mermaid-converter.js";
|
|
2
2
|
// Section shapes for the overview diagram
|
|
3
3
|
const SECTION_SHAPES = {
|
|
4
4
|
sampling: (id, label) => `${id}{{"${label}"}}`,
|
|
@@ -214,4 +214,157 @@ export function listSections(workflow, sections) {
|
|
|
214
214
|
}
|
|
215
215
|
return lines.join("\n");
|
|
216
216
|
}
|
|
217
|
+
// Key widget values to show in AI summary (superset of DISPLAY_VALUES)
|
|
218
|
+
const SUMMARY_VALUES = new Set([
|
|
219
|
+
...DISPLAY_VALUES,
|
|
220
|
+
"add_noise",
|
|
221
|
+
"start_at_step",
|
|
222
|
+
"end_at_step",
|
|
223
|
+
"return_with_leftover_noise",
|
|
224
|
+
"noise_seed",
|
|
225
|
+
"lora_01",
|
|
226
|
+
"strength_01",
|
|
227
|
+
"lora_02",
|
|
228
|
+
"strength_02",
|
|
229
|
+
"clip_name",
|
|
230
|
+
"unet_name",
|
|
231
|
+
"vae_name",
|
|
232
|
+
"type",
|
|
233
|
+
"weight_dtype",
|
|
234
|
+
"model_name",
|
|
235
|
+
"shift",
|
|
236
|
+
"length",
|
|
237
|
+
"batch_size",
|
|
238
|
+
"generation_mode",
|
|
239
|
+
"positive_prompt",
|
|
240
|
+
"negative_prompt",
|
|
241
|
+
"crop",
|
|
242
|
+
"num_frames",
|
|
243
|
+
]);
|
|
244
|
+
function formatNodeSummary(id, node) {
|
|
245
|
+
const title = node._meta?.title;
|
|
246
|
+
const classType = node.class_type;
|
|
247
|
+
const nameStr = title && title !== classType ? `${classType} "${title}"` : classType;
|
|
248
|
+
// Collect key settings
|
|
249
|
+
const settings = [];
|
|
250
|
+
for (const [key, value] of Object.entries(node.inputs)) {
|
|
251
|
+
if (isConnection(value))
|
|
252
|
+
continue;
|
|
253
|
+
if (!SUMMARY_VALUES.has(key))
|
|
254
|
+
continue;
|
|
255
|
+
let display;
|
|
256
|
+
if (typeof value === "string") {
|
|
257
|
+
// Truncate long strings
|
|
258
|
+
display = value.length > 50 ? value.slice(0, 47) + "..." : value;
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
display = String(value);
|
|
262
|
+
}
|
|
263
|
+
settings.push(`${key}=${display}`);
|
|
264
|
+
}
|
|
265
|
+
const settingsStr = settings.length > 0 ? ` — ${settings.join(", ")}` : "";
|
|
266
|
+
return ` ${id}: ${nameStr}${settingsStr}`;
|
|
267
|
+
}
|
|
268
|
+
export function generateSummary(workflow, sections, objectInfo, virtualEdges, nodeToSection, getSetNodeIds) {
|
|
269
|
+
const lines = [];
|
|
270
|
+
const totalNodes = Object.keys(workflow).length;
|
|
271
|
+
const getSetCount = getSetNodeIds.size;
|
|
272
|
+
lines.push(`# Workflow: ${totalNodes} nodes (${totalNodes - getSetCount} real + ${getSetCount} Get/Set), ${sections.size} sections`);
|
|
273
|
+
lines.push("");
|
|
274
|
+
// Sections with node details
|
|
275
|
+
for (const [, section] of sections) {
|
|
276
|
+
lines.push(`## ${section.label} (${section.nodeIds.size} nodes)`);
|
|
277
|
+
// Node list with IDs and key settings
|
|
278
|
+
for (const id of section.nodeIds) {
|
|
279
|
+
const node = workflow[id];
|
|
280
|
+
if (!node)
|
|
281
|
+
continue;
|
|
282
|
+
lines.push(formatNodeSummary(id, node));
|
|
283
|
+
}
|
|
284
|
+
// Cross-section data flow using real output types from object_info
|
|
285
|
+
const receives = [];
|
|
286
|
+
const sends = [];
|
|
287
|
+
for (const inEdge of section.inEdges) {
|
|
288
|
+
const types = [...inEdge.dataTypes].join(", ");
|
|
289
|
+
receives.push(`← ${inEdge.fromSection}: ${types}`);
|
|
290
|
+
}
|
|
291
|
+
for (const outEdge of section.outEdges) {
|
|
292
|
+
const types = [...outEdge.dataTypes].join(", ");
|
|
293
|
+
sends.push(`→ ${outEdge.toSection}: ${types}`);
|
|
294
|
+
}
|
|
295
|
+
if (receives.length > 0 || sends.length > 0) {
|
|
296
|
+
lines.push(" Data flow:");
|
|
297
|
+
for (const r of receives)
|
|
298
|
+
lines.push(` ${r}`);
|
|
299
|
+
for (const s of sends)
|
|
300
|
+
lines.push(` ${s}`);
|
|
301
|
+
}
|
|
302
|
+
lines.push("");
|
|
303
|
+
}
|
|
304
|
+
// Virtual wires (Get/Set)
|
|
305
|
+
if (virtualEdges.length > 0) {
|
|
306
|
+
lines.push("## Virtual Wires (Get/Set)");
|
|
307
|
+
// Group by key
|
|
308
|
+
const wiresByKey = new Map();
|
|
309
|
+
for (const ve of virtualEdges) {
|
|
310
|
+
if (!wiresByKey.has(ve.key)) {
|
|
311
|
+
wiresByKey.set(ve.key, { setterId: ve.sourceNodeId, getterIds: [] });
|
|
312
|
+
}
|
|
313
|
+
wiresByKey.get(ve.key).getterIds.push(ve.targetNodeId);
|
|
314
|
+
}
|
|
315
|
+
for (const [key, wire] of wiresByKey) {
|
|
316
|
+
// Find what feeds into the SetNode
|
|
317
|
+
const setNode = workflow[wire.setterId];
|
|
318
|
+
let feederInfo = "";
|
|
319
|
+
if (setNode) {
|
|
320
|
+
for (const [, value] of Object.entries(setNode.inputs)) {
|
|
321
|
+
if (isConnection(value)) {
|
|
322
|
+
const feederId = value[0];
|
|
323
|
+
const feederNode = workflow[feederId];
|
|
324
|
+
if (feederNode) {
|
|
325
|
+
const feederSection = nodeToSection.get(feederId) ?? "?";
|
|
326
|
+
feederInfo = ` fed by ${feederId}:${feederNode._meta?.title ?? feederNode.class_type} [${feederSection}]`;
|
|
327
|
+
}
|
|
328
|
+
break;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// Find what consumes from each GetNode
|
|
333
|
+
const consumers = [];
|
|
334
|
+
for (const getterId of wire.getterIds) {
|
|
335
|
+
for (const [nodeId, node] of Object.entries(workflow)) {
|
|
336
|
+
for (const [inputName, value] of Object.entries(node.inputs)) {
|
|
337
|
+
if (isConnection(value) && value[0] === getterId) {
|
|
338
|
+
const consumerSection = nodeToSection.get(nodeId) ?? "?";
|
|
339
|
+
consumers.push(`${nodeId}:${node._meta?.title ?? node.class_type}.${inputName} [${consumerSection}]`);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
lines.push(` "${key}": Set(${wire.setterId})${feederInfo} → Get(${wire.getterIds.join(", ")})`);
|
|
345
|
+
if (consumers.length > 0) {
|
|
346
|
+
for (const c of consumers) {
|
|
347
|
+
lines.push(` → ${c}`);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
lines.push("");
|
|
352
|
+
}
|
|
353
|
+
// Connection graph: list all direct node-to-node connections for reference
|
|
354
|
+
lines.push("## Connection Graph");
|
|
355
|
+
const allEdges = extractConnections(workflow);
|
|
356
|
+
for (const edge of allEdges) {
|
|
357
|
+
const sourceNode = workflow[edge.sourceId];
|
|
358
|
+
const targetNode = workflow[edge.targetId];
|
|
359
|
+
if (!sourceNode || !targetNode)
|
|
360
|
+
continue;
|
|
361
|
+
// Get real output type from object_info
|
|
362
|
+
const def = objectInfo[sourceNode.class_type];
|
|
363
|
+
const outputType = def?.output?.[edge.outputIndex] ??
|
|
364
|
+
guessOutputType(sourceNode.class_type, edge.outputIndex) ??
|
|
365
|
+
"?";
|
|
366
|
+
lines.push(` ${edge.sourceId}:${sourceNode.class_type}[${edge.outputIndex}] --${outputType}--> ${edge.targetId}:${targetNode.class_type}.${edge.inputName}`);
|
|
367
|
+
}
|
|
368
|
+
return lines.join("\n");
|
|
369
|
+
}
|
|
217
370
|
//# sourceMappingURL=hierarchical-mermaid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchical-mermaid.js","sourceRoot":"","sources":["../../src/services/hierarchical-mermaid.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hierarchical-mermaid.js","sourceRoot":"","sources":["../../src/services/hierarchical-mermaid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { WorkflowJSON, ObjectInfo, UiWorkflow } from "../comfyui/types.js";
|
|
2
|
+
export interface ConversionResult {
|
|
3
|
+
workflow: WorkflowJSON;
|
|
4
|
+
warnings: string[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Detect whether a parsed object is in ComfyUI UI format (nodes + links arrays)
|
|
8
|
+
* vs API format (string keys with class_type + inputs).
|
|
9
|
+
*/
|
|
10
|
+
export declare function isUiFormat(obj: unknown): obj is UiWorkflow;
|
|
11
|
+
/**
|
|
12
|
+
* Convert a ComfyUI UI-format workflow to API format.
|
|
13
|
+
* Requires objectInfo from /object_info to map widgets_values to named inputs.
|
|
14
|
+
*/
|
|
15
|
+
export declare function convertUiToApi(ui: UiWorkflow, objectInfo: ObjectInfo): ConversionResult;
|
|
16
|
+
//# sourceMappingURL=workflow-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-converter.d.ts","sourceRoot":"","sources":["../../src/services/workflow-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAEV,UAAU,EAGX,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAUD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAI1D;AA6DD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,UAAU,EACd,UAAU,EAAE,UAAU,GACrB,gBAAgB,CAkJlB"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { logger } from "../utils/logger.js";
|
|
2
|
+
/**
|
|
3
|
+
* Detect whether a parsed object is in ComfyUI UI format (nodes + links arrays)
|
|
4
|
+
* vs API format (string keys with class_type + inputs).
|
|
5
|
+
*/
|
|
6
|
+
export function isUiFormat(obj) {
|
|
7
|
+
if (typeof obj !== "object" || obj === null || Array.isArray(obj))
|
|
8
|
+
return false;
|
|
9
|
+
const record = obj;
|
|
10
|
+
return Array.isArray(record.nodes) && Array.isArray(record.links);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Check if an input spec represents a widget (value input) vs a link (connection input).
|
|
14
|
+
* Widget inputs have an array type spec like ["INT", {...}] or ["STRING", {...}].
|
|
15
|
+
* Link inputs have a plain string type like "MODEL" or "CLIP".
|
|
16
|
+
*/
|
|
17
|
+
function isWidgetInput(inputName, def) {
|
|
18
|
+
const spec = def.input.required?.[inputName] ?? def.input.optional?.[inputName];
|
|
19
|
+
if (!spec)
|
|
20
|
+
return false;
|
|
21
|
+
const typeSpec = spec[0];
|
|
22
|
+
// If the type is an array of choices like ["option1", "option2"], it's a widget
|
|
23
|
+
if (Array.isArray(typeSpec))
|
|
24
|
+
return true;
|
|
25
|
+
// Standard widget types
|
|
26
|
+
const WIDGET_TYPES = new Set([
|
|
27
|
+
"INT",
|
|
28
|
+
"FLOAT",
|
|
29
|
+
"STRING",
|
|
30
|
+
"BOOLEAN",
|
|
31
|
+
"COMBO",
|
|
32
|
+
]);
|
|
33
|
+
return WIDGET_TYPES.has(typeSpec);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if an input has control_after_generate in its spec config.
|
|
37
|
+
* These inputs (like seed, noise_seed) have a phantom "fixed"/"randomize" widget
|
|
38
|
+
* in the UI's widgets_values array that doesn't correspond to any named input.
|
|
39
|
+
*/
|
|
40
|
+
function hasControlAfterGenerate(inputName, def) {
|
|
41
|
+
const spec = def.input.required?.[inputName] ?? def.input.optional?.[inputName];
|
|
42
|
+
if (!spec || !spec[1])
|
|
43
|
+
return false;
|
|
44
|
+
return spec[1].control_after_generate === true;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get the ordered list of input names from a node definition.
|
|
48
|
+
* Uses input_order if available, otherwise falls back to object keys.
|
|
49
|
+
*/
|
|
50
|
+
function getOrderedInputNames(def) {
|
|
51
|
+
const names = [];
|
|
52
|
+
if (def.input_order) {
|
|
53
|
+
if (def.input_order.required)
|
|
54
|
+
names.push(...def.input_order.required);
|
|
55
|
+
if (def.input_order.optional)
|
|
56
|
+
names.push(...def.input_order.optional);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Fallback: use object key order
|
|
60
|
+
if (def.input.required)
|
|
61
|
+
names.push(...Object.keys(def.input.required));
|
|
62
|
+
if (def.input.optional)
|
|
63
|
+
names.push(...Object.keys(def.input.optional));
|
|
64
|
+
}
|
|
65
|
+
return names;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Convert a ComfyUI UI-format workflow to API format.
|
|
69
|
+
* Requires objectInfo from /object_info to map widgets_values to named inputs.
|
|
70
|
+
*/
|
|
71
|
+
export function convertUiToApi(ui, objectInfo) {
|
|
72
|
+
const workflow = {};
|
|
73
|
+
const warnings = [];
|
|
74
|
+
// Build link lookup: linkId → LinkInfo
|
|
75
|
+
const linkMap = new Map();
|
|
76
|
+
for (const link of ui.links) {
|
|
77
|
+
if (!Array.isArray(link) || link.length < 6)
|
|
78
|
+
continue;
|
|
79
|
+
const [linkId, sourceNodeId, sourceSlot, targetNodeId, targetSlot, typeName] = link;
|
|
80
|
+
linkMap.set(linkId, {
|
|
81
|
+
sourceNodeId,
|
|
82
|
+
sourceSlot,
|
|
83
|
+
targetNodeId,
|
|
84
|
+
targetSlot,
|
|
85
|
+
typeName,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
// Build a set of node IDs for validating link targets
|
|
89
|
+
const nodeIdSet = new Set(ui.nodes.map((n) => n.id));
|
|
90
|
+
// Node types that are purely visual/internal and have no API equivalent
|
|
91
|
+
const SKIP_TYPES = new Set(["Reroute", "Note", "PrimitiveNode", "MarkdownNote"]);
|
|
92
|
+
// Get/Set node types that need special handling (not in object_info)
|
|
93
|
+
const GET_SET_TYPES = new Set([
|
|
94
|
+
"GetNode", "SetNode", "PRO_GetNode", "PRO_SetNode",
|
|
95
|
+
"SetNode_GetNode", "SetNode_SetNode",
|
|
96
|
+
]);
|
|
97
|
+
for (const node of ui.nodes) {
|
|
98
|
+
const nodeId = String(node.id);
|
|
99
|
+
const classType = node.type;
|
|
100
|
+
// Skip internal litegraph node types
|
|
101
|
+
if (SKIP_TYPES.has(classType))
|
|
102
|
+
continue;
|
|
103
|
+
// Determine mode status
|
|
104
|
+
const isMuted = node.mode === 2 || node.mode === 4;
|
|
105
|
+
// Handle Get/Set nodes specially — they're not in object_info but are
|
|
106
|
+
// important for understanding data flow. Use the node's title as the key.
|
|
107
|
+
if (GET_SET_TYPES.has(classType)) {
|
|
108
|
+
const title = node.title ?? node._meta?.title ?? "";
|
|
109
|
+
const inputs = {};
|
|
110
|
+
// For SetNode, wire the incoming connection
|
|
111
|
+
if (node.inputs) {
|
|
112
|
+
for (const input of node.inputs) {
|
|
113
|
+
if (input.link != null) {
|
|
114
|
+
const linkInfo = linkMap.get(input.link);
|
|
115
|
+
if (linkInfo && nodeIdSet.has(linkInfo.sourceNodeId)) {
|
|
116
|
+
inputs[input.name] = [String(linkInfo.sourceNodeId), linkInfo.sourceSlot];
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Store the key used for Get/Set matching
|
|
122
|
+
if (node.widgets_values && node.widgets_values.length > 0) {
|
|
123
|
+
inputs.Constant = node.widgets_values[0];
|
|
124
|
+
}
|
|
125
|
+
workflow[nodeId] = {
|
|
126
|
+
class_type: classType,
|
|
127
|
+
inputs,
|
|
128
|
+
_meta: { title: title || undefined },
|
|
129
|
+
};
|
|
130
|
+
if (isMuted) {
|
|
131
|
+
workflow[nodeId]._meta = { ...workflow[nodeId]._meta, mode: "muted" };
|
|
132
|
+
}
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const def = objectInfo[classType];
|
|
136
|
+
if (!def) {
|
|
137
|
+
warnings.push(`Node ${nodeId} (${classType}): not found in object_info — custom node may not be installed. Skipping.`);
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
const inputs = {};
|
|
141
|
+
// Get ordered input names and figure out which are widgets vs links
|
|
142
|
+
const orderedNames = getOrderedInputNames(def);
|
|
143
|
+
const widgetNames = [];
|
|
144
|
+
for (const name of orderedNames) {
|
|
145
|
+
if (isWidgetInput(name, def)) {
|
|
146
|
+
widgetNames.push(name);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Map widgets_values to named widget inputs.
|
|
150
|
+
// Some INT inputs with "control_after_generate": true (like seed, noise_seed) have
|
|
151
|
+
// a phantom widget value in widgets_values ("fixed"/"randomize"/"increment"/"decrement")
|
|
152
|
+
// that doesn't correspond to any named input — we must skip those.
|
|
153
|
+
const widgetValues = node.widgets_values ?? [];
|
|
154
|
+
let widgetIdx = 0;
|
|
155
|
+
for (const name of widgetNames) {
|
|
156
|
+
if (widgetIdx >= widgetValues.length)
|
|
157
|
+
break;
|
|
158
|
+
inputs[name] = widgetValues[widgetIdx];
|
|
159
|
+
widgetIdx++;
|
|
160
|
+
// If this input has control_after_generate, skip the next widgets_values entry
|
|
161
|
+
if (hasControlAfterGenerate(name, def) && widgetIdx < widgetValues.length) {
|
|
162
|
+
widgetIdx++;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Map linked inputs from node's inputs array
|
|
166
|
+
if (node.inputs) {
|
|
167
|
+
for (const input of node.inputs) {
|
|
168
|
+
if (input.link != null) {
|
|
169
|
+
const linkInfo = linkMap.get(input.link);
|
|
170
|
+
if (linkInfo && nodeIdSet.has(linkInfo.sourceNodeId)) {
|
|
171
|
+
inputs[input.name] = [String(linkInfo.sourceNodeId), linkInfo.sourceSlot];
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Build the API node
|
|
177
|
+
workflow[nodeId] = {
|
|
178
|
+
class_type: classType,
|
|
179
|
+
inputs,
|
|
180
|
+
};
|
|
181
|
+
// Preserve title and mode metadata
|
|
182
|
+
const title = node.title ?? node._meta?.title;
|
|
183
|
+
const meta = {};
|
|
184
|
+
if (title && title !== classType)
|
|
185
|
+
meta.title = title;
|
|
186
|
+
if (isMuted)
|
|
187
|
+
meta.mode = "muted";
|
|
188
|
+
if (Object.keys(meta).length > 0) {
|
|
189
|
+
workflow[nodeId]._meta = meta;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const nodeCount = Object.keys(workflow).length;
|
|
193
|
+
const skipped = ui.nodes.length - nodeCount;
|
|
194
|
+
logger.info(`Converted UI workflow: ${nodeCount} nodes (${skipped} skipped)`);
|
|
195
|
+
return { workflow, warnings };
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=workflow-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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-sections.d.ts","sourceRoot":"","sources":["../../src/services/workflow-sections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGpE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"workflow-sections.d.ts","sourceRoot":"","sources":["../../src/services/workflow-sections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGpE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AA8BD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2B9D;AAeD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,EAAE,CAiCxE;AAuDD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,UAAU,GACrB,eAAe,CA+KjB"}
|
|
@@ -4,18 +4,52 @@ const CATEGORY_ALIASES = {
|
|
|
4
4
|
_for_testing: "utility",
|
|
5
5
|
api: "utility",
|
|
6
6
|
utils: "utility",
|
|
7
|
+
// Custom node pack categories
|
|
8
|
+
bootleg: "loading", // ComfyUI-GGUF (UNET/CLIP loaders)
|
|
9
|
+
gguf: "loading", // gguf pack (CLIP loaders)
|
|
10
|
+
rgthree: "loading", // rgthree (Lora Loader Stack, etc.)
|
|
11
|
+
seedvr2: "image", // SeedVR2 (video upscaler)
|
|
12
|
+
"video helper suite": "output", // VHS (Video Combine)
|
|
7
13
|
};
|
|
8
14
|
// Meta-categories where the second level is more meaningful
|
|
9
15
|
const META_CATEGORIES = new Set(["advanced"]);
|
|
16
|
+
// Known core pipeline section names
|
|
17
|
+
const KNOWN_SECTIONS = new Set([
|
|
18
|
+
"loading", "conditioning", "sampling", "latent",
|
|
19
|
+
"image", "output", "mask", "utility",
|
|
20
|
+
]);
|
|
21
|
+
// Strip emoji and special characters from a category string
|
|
22
|
+
function cleanCategory(category) {
|
|
23
|
+
return category.replace(/[^\p{L}\p{N}\s/\-_]/gu, "").trim();
|
|
24
|
+
}
|
|
10
25
|
// Normalize a ComfyUI category string to a top-level section name
|
|
11
26
|
export function normalizeCategoryName(category) {
|
|
12
|
-
const
|
|
27
|
+
const cleaned = cleanCategory(category);
|
|
28
|
+
const parts = cleaned.split("/").map((p) => p.toLowerCase().trim());
|
|
13
29
|
// For meta-categories like "advanced/loaders", use the second level
|
|
14
30
|
let key = parts[0];
|
|
15
31
|
if (META_CATEGORIES.has(key) && parts.length > 1) {
|
|
16
32
|
key = parts[1];
|
|
17
33
|
}
|
|
18
|
-
|
|
34
|
+
// Check direct alias
|
|
35
|
+
const aliased = CATEGORY_ALIASES[key];
|
|
36
|
+
if (aliased)
|
|
37
|
+
return aliased;
|
|
38
|
+
// If key is already a known section, use it
|
|
39
|
+
if (KNOWN_SECTIONS.has(key))
|
|
40
|
+
return key;
|
|
41
|
+
// Check if any sub-part of the category path is a known section or has an alias
|
|
42
|
+
// e.g., "KJNodes/image" → sub-part "image" is known
|
|
43
|
+
// e.g., "GetSetNode_Pro/loaders" → sub-part "loaders" aliases to "loading"
|
|
44
|
+
for (let i = 1; i < parts.length; i++) {
|
|
45
|
+
const part = parts[i];
|
|
46
|
+
if (CATEGORY_ALIASES[part])
|
|
47
|
+
return CATEGORY_ALIASES[part];
|
|
48
|
+
if (KNOWN_SECTIONS.has(part))
|
|
49
|
+
return part;
|
|
50
|
+
}
|
|
51
|
+
// Fall back to the cleaned key
|
|
52
|
+
return key;
|
|
19
53
|
}
|
|
20
54
|
// Get/Set node class types we recognize
|
|
21
55
|
const GET_NODE_TYPES = new Set(["GetNode", "PRO_GetNode", "SetNode_GetNode"]);
|
|
@@ -32,15 +66,16 @@ export function resolveGetSetPairs(workflow) {
|
|
|
32
66
|
const getters = new Map(); // key -> node IDs
|
|
33
67
|
for (const [id, node] of Object.entries(workflow)) {
|
|
34
68
|
if (isSetNode(node.class_type)) {
|
|
35
|
-
|
|
36
|
-
|
|
69
|
+
// Prefer Constant (the actual wire key) over title (which may have "Set_" prefix)
|
|
70
|
+
const key = node.inputs.Constant ??
|
|
71
|
+
node._meta?.title ??
|
|
37
72
|
"";
|
|
38
73
|
if (key)
|
|
39
74
|
setters.set(key, id);
|
|
40
75
|
}
|
|
41
76
|
else if (isGetNode(node.class_type)) {
|
|
42
|
-
const key = node.
|
|
43
|
-
node.
|
|
77
|
+
const key = node.inputs.Constant ??
|
|
78
|
+
node._meta?.title ??
|
|
44
79
|
"";
|
|
45
80
|
if (key) {
|
|
46
81
|
if (!getters.has(key))
|