comfyui-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/.mcp.json +11 -0
  2. package/dist/comfyui/client.d.ts +16 -0
  3. package/dist/comfyui/client.d.ts.map +1 -0
  4. package/dist/comfyui/client.js +75 -0
  5. package/dist/comfyui/client.js.map +1 -0
  6. package/dist/comfyui/events.d.ts +9 -0
  7. package/dist/comfyui/events.d.ts.map +1 -0
  8. package/dist/comfyui/events.js +40 -0
  9. package/dist/comfyui/events.js.map +1 -0
  10. package/dist/comfyui/types.d.ts +66 -0
  11. package/dist/comfyui/types.d.ts.map +1 -0
  12. package/dist/comfyui/types.js +3 -0
  13. package/dist/comfyui/types.js.map +1 -0
  14. package/dist/config.d.ts +28 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +93 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +22 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/services/mermaid-converter.d.ts +8 -0
  23. package/dist/services/mermaid-converter.d.ts.map +1 -0
  24. package/dist/services/mermaid-converter.js +235 -0
  25. package/dist/services/mermaid-converter.js.map +1 -0
  26. package/dist/services/mermaid-parser.d.ts +31 -0
  27. package/dist/services/mermaid-parser.d.ts.map +1 -0
  28. package/dist/services/mermaid-parser.js +464 -0
  29. package/dist/services/mermaid-parser.js.map +1 -0
  30. package/dist/services/model-resolver.d.ts +25 -0
  31. package/dist/services/model-resolver.d.ts.map +1 -0
  32. package/dist/services/model-resolver.js +123 -0
  33. package/dist/services/model-resolver.js.map +1 -0
  34. package/dist/services/registry-client.d.ts +28 -0
  35. package/dist/services/registry-client.d.ts.map +1 -0
  36. package/dist/services/registry-client.js +32 -0
  37. package/dist/services/registry-client.js.map +1 -0
  38. package/dist/services/skill-generator.d.ts +33 -0
  39. package/dist/services/skill-generator.d.ts.map +1 -0
  40. package/dist/services/skill-generator.js +438 -0
  41. package/dist/services/skill-generator.js.map +1 -0
  42. package/dist/services/workflow-composer.d.ts +43 -0
  43. package/dist/services/workflow-composer.d.ts.map +1 -0
  44. package/dist/services/workflow-composer.js +333 -0
  45. package/dist/services/workflow-composer.js.map +1 -0
  46. package/dist/services/workflow-executor.d.ts +15 -0
  47. package/dist/services/workflow-executor.d.ts.map +1 -0
  48. package/dist/services/workflow-executor.js +63 -0
  49. package/dist/services/workflow-executor.js.map +1 -0
  50. package/dist/tools/index.d.ts +3 -0
  51. package/dist/tools/index.d.ts.map +1 -0
  52. package/dist/tools/index.js +15 -0
  53. package/dist/tools/index.js.map +1 -0
  54. package/dist/tools/model-management.d.ts +3 -0
  55. package/dist/tools/model-management.d.ts.map +1 -0
  56. package/dist/tools/model-management.js +97 -0
  57. package/dist/tools/model-management.js.map +1 -0
  58. package/dist/tools/registry-search.d.ts +3 -0
  59. package/dist/tools/registry-search.d.ts.map +1 -0
  60. package/dist/tools/registry-search.js +70 -0
  61. package/dist/tools/registry-search.js.map +1 -0
  62. package/dist/tools/skill-generator.d.ts +3 -0
  63. package/dist/tools/skill-generator.d.ts.map +1 -0
  64. package/dist/tools/skill-generator.js +42 -0
  65. package/dist/tools/skill-generator.js.map +1 -0
  66. package/dist/tools/workflow-compose.d.ts +3 -0
  67. package/dist/tools/workflow-compose.d.ts.map +1 -0
  68. package/dist/tools/workflow-compose.js +180 -0
  69. package/dist/tools/workflow-compose.js.map +1 -0
  70. package/dist/tools/workflow-execute.d.ts +3 -0
  71. package/dist/tools/workflow-execute.d.ts.map +1 -0
  72. package/dist/tools/workflow-execute.js +115 -0
  73. package/dist/tools/workflow-execute.js.map +1 -0
  74. package/dist/tools/workflow-visualize.d.ts +3 -0
  75. package/dist/tools/workflow-visualize.d.ts.map +1 -0
  76. package/dist/tools/workflow-visualize.js +111 -0
  77. package/dist/tools/workflow-visualize.js.map +1 -0
  78. package/dist/utils/errors.d.ts +24 -0
  79. package/dist/utils/errors.d.ts.map +1 -0
  80. package/dist/utils/errors.js +65 -0
  81. package/dist/utils/errors.js.map +1 -0
  82. package/dist/utils/image.d.ts +4 -0
  83. package/dist/utils/image.d.ts.map +1 -0
  84. package/dist/utils/image.js +10 -0
  85. package/dist/utils/image.js.map +1 -0
  86. package/dist/utils/logger.d.ts +7 -0
  87. package/dist/utils/logger.d.ts.map +1 -0
  88. package/dist/utils/logger.js +22 -0
  89. package/dist/utils/logger.js.map +1 -0
  90. package/package.json +34 -0
@@ -0,0 +1,235 @@
1
+ const CATEGORY_MATCHERS = [
2
+ { category: "output", test: (ct) => ct === "SaveImage" || ct === "PreviewImage" },
3
+ {
4
+ category: "loading",
5
+ test: (ct) => ct.startsWith("CheckpointLoader") ||
6
+ ct.startsWith("CLIPLoader") ||
7
+ ct.startsWith("VAELoader") ||
8
+ ct.startsWith("LoraLoader") ||
9
+ ct.startsWith("ControlNetLoader"),
10
+ },
11
+ {
12
+ category: "conditioning",
13
+ test: (ct) => ct === "CLIPTextEncode" ||
14
+ ct === "ConditioningCombine" ||
15
+ ct === "ConditioningSetArea" ||
16
+ ct === "ControlNetApply",
17
+ },
18
+ {
19
+ category: "sampling",
20
+ test: (ct) => ct.startsWith("KSampler") || ct === "SamplerCustom",
21
+ },
22
+ {
23
+ category: "image",
24
+ test: (ct) => ct === "VAEDecode" ||
25
+ ct === "VAEEncode" ||
26
+ ct === "LoadImage" ||
27
+ ct.startsWith("ImageScale") ||
28
+ ct.startsWith("ImageUpscale"),
29
+ },
30
+ ];
31
+ function categorizeNode(classType) {
32
+ for (const matcher of CATEGORY_MATCHERS) {
33
+ if (matcher.test(classType))
34
+ return matcher.category;
35
+ }
36
+ return "utility";
37
+ }
38
+ const CATEGORY_LABELS = {
39
+ loading: "Loading",
40
+ conditioning: "Conditioning",
41
+ sampling: "Sampling",
42
+ image: "Image",
43
+ output: "Output",
44
+ utility: "Utility",
45
+ };
46
+ // Mermaid shapes per category
47
+ function wrapNodeLabel(id, label, category) {
48
+ switch (category) {
49
+ case "sampling":
50
+ return `${id}{{"${label}"}}`;
51
+ case "conditioning":
52
+ return `${id}(["${label}"])`;
53
+ case "loading":
54
+ return `${id}["${label}"]`;
55
+ case "image":
56
+ return `${id}("${label}")`;
57
+ case "output":
58
+ return `${id}((("${label}")))`;
59
+ case "utility":
60
+ default:
61
+ return `${id}["${label}"]`;
62
+ }
63
+ }
64
+ // Color mapping for connection data types
65
+ const TYPE_COLORS = {
66
+ MODEL: "blue",
67
+ LATENT: "red",
68
+ CONDITIONING: "orange",
69
+ IMAGE: "green",
70
+ CLIP: "purple",
71
+ VAE: "teal",
72
+ };
73
+ function isConnection(value) {
74
+ return (Array.isArray(value) &&
75
+ value.length === 2 &&
76
+ typeof value[0] === "string" &&
77
+ typeof value[1] === "number");
78
+ }
79
+ // Values worth showing in node labels
80
+ const DISPLAY_VALUES = new Set([
81
+ "seed",
82
+ "steps",
83
+ "cfg",
84
+ "denoise",
85
+ "sampler_name",
86
+ "scheduler",
87
+ "width",
88
+ "height",
89
+ "ckpt_name",
90
+ "text",
91
+ "upscale_model",
92
+ "image",
93
+ ]);
94
+ function buildNodeLabel(node, showValues) {
95
+ const title = node._meta?.title ?? node.class_type;
96
+ if (!showValues)
97
+ return title;
98
+ const parts = [];
99
+ for (const [key, value] of Object.entries(node.inputs)) {
100
+ if (isConnection(value))
101
+ continue;
102
+ if (!DISPLAY_VALUES.has(key))
103
+ continue;
104
+ let display;
105
+ if (typeof value === "string") {
106
+ // Truncate long strings (prompts, filenames)
107
+ display = value.length > 30 ? value.slice(0, 27) + "..." : value;
108
+ }
109
+ else {
110
+ display = String(value);
111
+ }
112
+ parts.push(`${key}:${display}`);
113
+ }
114
+ if (parts.length === 0)
115
+ return title;
116
+ return `${title}\\n${parts.join(" ")}`;
117
+ }
118
+ function extractConnections(workflow) {
119
+ const edges = [];
120
+ for (const [targetId, node] of Object.entries(workflow)) {
121
+ for (const [inputName, value] of Object.entries(node.inputs)) {
122
+ if (isConnection(value)) {
123
+ edges.push({
124
+ sourceId: value[0],
125
+ outputIndex: value[1],
126
+ targetId,
127
+ inputName,
128
+ });
129
+ }
130
+ }
131
+ }
132
+ return edges;
133
+ }
134
+ function guessOutputType(classType, outputIndex) {
135
+ // Common patterns from ComfyUI node definitions
136
+ const outputMap = {
137
+ CheckpointLoaderSimple: ["MODEL", "CLIP", "VAE"],
138
+ "CheckpointLoader|simple": ["MODEL", "CLIP", "VAE"],
139
+ LoraLoader: ["MODEL", "CLIP"],
140
+ CLIPTextEncode: ["CONDITIONING"],
141
+ KSampler: ["LATENT"],
142
+ KSamplerAdvanced: ["LATENT"],
143
+ SamplerCustom: ["LATENT"],
144
+ VAEDecode: ["IMAGE"],
145
+ VAEEncode: ["LATENT"],
146
+ EmptyLatentImage: ["LATENT"],
147
+ LoadImage: ["IMAGE", "MASK"],
148
+ ImageUpscaleWithModel: ["IMAGE"],
149
+ ImageScale: ["IMAGE"],
150
+ SaveImage: [],
151
+ PreviewImage: [],
152
+ SetLatentNoiseMask: ["LATENT"],
153
+ UpscaleModelLoader: ["UPSCALE_MODEL"],
154
+ ConditioningCombine: ["CONDITIONING"],
155
+ ControlNetLoader: ["CONTROL_NET"],
156
+ ControlNetApply: ["CONDITIONING"],
157
+ CLIPLoader: ["CLIP"],
158
+ VAELoader: ["VAE"],
159
+ };
160
+ const outputs = outputMap[classType];
161
+ if (outputs && outputIndex < outputs.length) {
162
+ return outputs[outputIndex];
163
+ }
164
+ return "";
165
+ }
166
+ function escapeForMermaid(str) {
167
+ return str.replace(/"/g, "#quot;");
168
+ }
169
+ export function convertToMermaid(workflow, options = {}) {
170
+ const { showValues = true, direction = "LR" } = options;
171
+ const lines = [`flowchart ${direction}`];
172
+ // Group nodes by category
173
+ const groups = new Map();
174
+ for (const [id, node] of Object.entries(workflow)) {
175
+ const cat = categorizeNode(node.class_type);
176
+ if (!groups.has(cat))
177
+ groups.set(cat, []);
178
+ groups.get(cat).push({ id, node });
179
+ }
180
+ // Emit subgraphs in a stable order
181
+ const categoryOrder = [
182
+ "loading",
183
+ "conditioning",
184
+ "sampling",
185
+ "image",
186
+ "output",
187
+ "utility",
188
+ ];
189
+ for (const cat of categoryOrder) {
190
+ const nodes = groups.get(cat);
191
+ if (!nodes || nodes.length === 0)
192
+ continue;
193
+ lines.push(` subgraph ${CATEGORY_LABELS[cat]}`);
194
+ for (const { id, node } of nodes) {
195
+ const label = escapeForMermaid(buildNodeLabel(node, showValues));
196
+ lines.push(` ${wrapNodeLabel(id, label, cat)}`);
197
+ }
198
+ lines.push(" end");
199
+ }
200
+ // Emit edges
201
+ const edges = extractConnections(workflow);
202
+ for (const edge of edges) {
203
+ const sourceNode = workflow[edge.sourceId];
204
+ const dataType = sourceNode
205
+ ? guessOutputType(sourceNode.class_type, edge.outputIndex)
206
+ : "";
207
+ const color = dataType ? TYPE_COLORS[dataType] : undefined;
208
+ const labelPart = dataType ? `|${dataType}|` : "";
209
+ if (color) {
210
+ lines.push(` ${edge.sourceId} -->${labelPart} ${edge.targetId}`);
211
+ }
212
+ else {
213
+ lines.push(` ${edge.sourceId} --> ${edge.targetId}`);
214
+ }
215
+ }
216
+ // Add style classes for colored edges
217
+ const usedTypes = new Set(edges
218
+ .map((e) => {
219
+ const src = workflow[e.sourceId];
220
+ return src ? guessOutputType(src.class_type, e.outputIndex) : "";
221
+ })
222
+ .filter(Boolean));
223
+ if (usedTypes.size > 0) {
224
+ lines.push("");
225
+ for (const t of usedTypes) {
226
+ const color = TYPE_COLORS[t];
227
+ if (color) {
228
+ lines.push(` linkStyle default stroke:${color}`);
229
+ break; // mermaid linkStyle default applies to all; skip individual for simplicity
230
+ }
231
+ }
232
+ }
233
+ return lines.join("\n");
234
+ }
235
+ //# sourceMappingURL=mermaid-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-converter.js","sourceRoot":"","sources":["../../src/services/mermaid-converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { WorkflowJSON, ObjectInfo } from "../comfyui/types.js";
2
+ interface ParsedNode {
3
+ id: string;
4
+ label: string;
5
+ values: Record<string, string>;
6
+ }
7
+ interface ParsedEdge {
8
+ sourceId: string;
9
+ targetId: string;
10
+ dataType: string | undefined;
11
+ }
12
+ interface ParsedMermaid {
13
+ nodes: Map<string, ParsedNode>;
14
+ edges: ParsedEdge[];
15
+ direction: "LR" | "TB";
16
+ }
17
+ export interface MermaidToWorkflowResult {
18
+ workflow: WorkflowJSON;
19
+ warnings: string[];
20
+ }
21
+ /**
22
+ * Parse a mermaid flowchart string into structured nodes and edges.
23
+ */
24
+ export declare function parseMermaid(mermaidText: string): ParsedMermaid;
25
+ /**
26
+ * Resolve a parsed mermaid graph into a valid ComfyUI workflow JSON
27
+ * using node definitions from /object_info.
28
+ */
29
+ export declare function resolveWorkflow(parsed: ParsedMermaid, objectInfo: ObjectInfo): MermaidToWorkflowResult;
30
+ export {};
31
+ //# sourceMappingURL=mermaid-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-parser.d.ts","sourceRoot":"","sources":["../../src/services/mermaid-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,UAAU,EAGX,MAAM,qBAAqB,CAAC;AAK7B,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAGD,UAAU,UAAU;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAGD,UAAU,aAAa;IACrB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAGD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CA0D/D;AAwED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,UAAU,GACrB,uBAAuB,CAoJzB"}