n8n-nodes-comfyui-all 2.2.23 → 2.2.24

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/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  import { ComfyUi } from './nodes/ComfyUi/ComfyUi.node';
2
- export declare const nodeClasses: (typeof ComfyUi)[];
2
+ import { ComfyUiTool } from './nodes/ComfyUiTool/ComfyUiTool.node';
3
+ export declare const nodeClasses: (typeof ComfyUi | typeof ComfyUiTool)[];
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEvD,eAAO,MAAM,WAAW,oBAEvB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,eAAO,MAAM,WAAW,yCAGvB,CAAC"}
package/dist/index.js CHANGED
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.nodeClasses = void 0;
4
4
  const ComfyUi_node_1 = require("./nodes/ComfyUi/ComfyUi.node");
5
+ const ComfyUiTool_node_1 = require("./nodes/ComfyUiTool/ComfyUiTool.node");
5
6
  exports.nodeClasses = [
6
7
  ComfyUi_node_1.ComfyUi,
8
+ ComfyUiTool_node_1.ComfyUiTool,
7
9
  ];
8
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,+DAAuD;AAE1C,QAAA,WAAW,GAAG;IACzB,sBAAO;CACR,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,+DAAuD;AACvD,2EAAmE;AAEtD,QAAA,WAAW,GAAG;IACzB,sBAAO;IACP,8BAAW;CACZ,CAAC"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * ComfyUI Tool - AI Agent-friendly image generation node
3
+ *
4
+ * This node is designed to be used as an AI Agent tool with minimal configuration.
5
+ * It accepts a simple text query and automatically generates images using ComfyUI.
6
+ * Supports both Text-to-Image and Image-to-Image workflows.
7
+ */
8
+ import { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
9
+ export declare class ComfyUiTool {
10
+ /**
11
+ * Node description for n8n
12
+ */
13
+ description: {
14
+ displayName: string;
15
+ name: string;
16
+ icon: string;
17
+ iconColor: string;
18
+ group: string[];
19
+ version: number[];
20
+ defaultVersion: number;
21
+ description: string;
22
+ defaults: {
23
+ name: string;
24
+ };
25
+ usableAsTool: boolean;
26
+ inputs: string[];
27
+ outputs: string[];
28
+ subtitle: string;
29
+ notes: string[];
30
+ inputSample: {
31
+ query: string;
32
+ };
33
+ outputSample: {
34
+ json: {
35
+ success: boolean;
36
+ imageCount: number;
37
+ imageUrls: string[];
38
+ prompt: string;
39
+ mode: string;
40
+ parameters: {
41
+ width: number;
42
+ height: number;
43
+ steps: number;
44
+ cfg: number;
45
+ seed: number;
46
+ };
47
+ };
48
+ binary: {
49
+ data: {
50
+ data: string;
51
+ mimeType: string;
52
+ fileName: string;
53
+ };
54
+ };
55
+ };
56
+ properties: ({
57
+ displayName: string;
58
+ name: string;
59
+ type: string;
60
+ required: boolean;
61
+ default: string;
62
+ description: string;
63
+ minValue?: undefined;
64
+ maxValue?: undefined;
65
+ placeholder?: undefined;
66
+ options?: undefined;
67
+ } | {
68
+ displayName: string;
69
+ name: string;
70
+ type: string;
71
+ default: number;
72
+ description: string;
73
+ minValue: number;
74
+ maxValue: number;
75
+ required?: undefined;
76
+ placeholder?: undefined;
77
+ options?: undefined;
78
+ } | {
79
+ displayName: string;
80
+ name: string;
81
+ type: string;
82
+ default: string;
83
+ description: string;
84
+ placeholder: string;
85
+ required?: undefined;
86
+ minValue?: undefined;
87
+ maxValue?: undefined;
88
+ options?: undefined;
89
+ } | {
90
+ displayName: string;
91
+ name: string;
92
+ type: string;
93
+ placeholder: string;
94
+ default: {};
95
+ options: ({
96
+ displayName: string;
97
+ name: string;
98
+ type: string;
99
+ typeOptions: {
100
+ rows: number;
101
+ };
102
+ default: string;
103
+ description: string;
104
+ minValue?: undefined;
105
+ maxValue?: undefined;
106
+ } | {
107
+ displayName: string;
108
+ name: string;
109
+ type: string;
110
+ default: number;
111
+ description: string;
112
+ minValue: number;
113
+ maxValue: number;
114
+ typeOptions?: undefined;
115
+ })[];
116
+ required?: undefined;
117
+ description?: undefined;
118
+ minValue?: undefined;
119
+ maxValue?: undefined;
120
+ })[];
121
+ };
122
+ /**
123
+ * Execute function - called when the node runs
124
+ */
125
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
126
+ }
127
+ //# sourceMappingURL=ComfyUiTool.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComfyUiTool.node.d.ts","sourceRoot":"","sources":["../../../nodes/ComfyUiTool/ComfyUiTool.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,cAAc,CAAC;AAgBtB,qBAAa,WAAW;IACtB;;OAEG;IACH,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2IT;IAEF;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAiLxE"}
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ /**
3
+ * ComfyUI Tool - AI Agent-friendly image generation node
4
+ *
5
+ * This node is designed to be used as an AI Agent tool with minimal configuration.
6
+ * It accepts a simple text query and automatically generates images using ComfyUI.
7
+ * Supports both Text-to-Image and Image-to-Image workflows.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ComfyUiTool = void 0;
11
+ const n8n_workflow_1 = require("n8n-workflow");
12
+ const ComfyUiClient_1 = require("../ComfyUiClient");
13
+ const validation_1 = require("../validation");
14
+ const logger_1 = require("../logger");
15
+ const agentToolHelpers_1 = require("../agentToolHelpers");
16
+ const workflowConfig_1 = require("../workflowConfig");
17
+ class ComfyUiTool {
18
+ constructor() {
19
+ /**
20
+ * Node description for n8n
21
+ */
22
+ this.description = {
23
+ displayName: 'ComfyUI Tool',
24
+ name: 'comfyUiTool',
25
+ icon: 'file:comfyui.svg',
26
+ iconColor: '#77C157',
27
+ group: ['transform'],
28
+ version: [1],
29
+ defaultVersion: 1,
30
+ description: 'AI-friendly image generation tool. Supports text-to-image and image-to-image.',
31
+ defaults: {
32
+ name: 'ComfyUI Tool',
33
+ },
34
+ usableAsTool: true,
35
+ inputs: ['main'],
36
+ outputs: ['main'],
37
+ subtitle: 'AI Image Generator',
38
+ notes: [
39
+ 'Optimized for AI Agent usage',
40
+ 'Automatically detects and handles both text-to-image and image-to-image',
41
+ 'For image editing: pass image binary + text description',
42
+ 'Supports size, steps, cfg, seed, and negative prompt parameters',
43
+ 'Examples: "A beautiful sunset, size:1024x768, steps:30"',
44
+ ],
45
+ inputSample: {
46
+ query: 'A beautiful landscape painting',
47
+ },
48
+ outputSample: {
49
+ json: {
50
+ success: true,
51
+ imageCount: 1,
52
+ imageUrls: ['http://127.0.0.1:8188/view?filename=ComfyUI_00001.png'],
53
+ prompt: 'A beautiful landscape painting',
54
+ mode: 'text-to-image',
55
+ parameters: {
56
+ width: 512,
57
+ height: 512,
58
+ steps: 20,
59
+ cfg: 8,
60
+ seed: 123456789,
61
+ },
62
+ },
63
+ binary: {
64
+ data: {
65
+ data: 'base64_encoded_image_data',
66
+ mimeType: 'image/png',
67
+ fileName: 'ComfyUI_00001.png',
68
+ },
69
+ },
70
+ },
71
+ properties: [
72
+ {
73
+ displayName: 'ComfyUI URL',
74
+ name: 'comfyUiUrl',
75
+ type: 'string',
76
+ required: true,
77
+ default: 'http://127.0.0.1:8188',
78
+ description: 'URL of ComfyUI server',
79
+ },
80
+ {
81
+ displayName: 'Timeout (Seconds)',
82
+ name: 'timeout',
83
+ type: 'number',
84
+ default: 120,
85
+ description: 'Maximum time to wait for image generation (in seconds). Default: 120 (2 minutes).',
86
+ minValue: 10,
87
+ maxValue: 600,
88
+ },
89
+ {
90
+ displayName: 'Output Binary Key',
91
+ name: 'outputBinaryKey',
92
+ type: 'string',
93
+ default: 'data',
94
+ description: 'Property name for the output binary data (e.g., "data", "image", "output")',
95
+ placeholder: 'data',
96
+ },
97
+ {
98
+ displayName: 'Default Negative Prompt',
99
+ name: 'defaultNegativePrompt',
100
+ type: 'string',
101
+ default: 'ugly, blurry, low quality, distorted',
102
+ description: 'Default negative prompt to use when not specified in query',
103
+ placeholder: 'ugly, blurry, low quality',
104
+ },
105
+ {
106
+ displayName: 'Advanced Options',
107
+ name: 'advancedOptions',
108
+ type: 'collection',
109
+ placeholder: 'Add Option',
110
+ default: {},
111
+ options: [
112
+ {
113
+ displayName: 'Custom Workflow JSON',
114
+ name: 'customWorkflow',
115
+ type: 'string',
116
+ typeOptions: {
117
+ rows: 20,
118
+ },
119
+ default: '',
120
+ description: 'Optional: Custom ComfyUI workflow JSON (API Format). If empty, uses default workflow. Only use this if you want to override the default template.',
121
+ },
122
+ {
123
+ displayName: 'Default CFG',
124
+ name: 'defaultCfg',
125
+ type: 'number',
126
+ default: 8,
127
+ description: 'Default CFG scale when not specified in query',
128
+ minValue: 1,
129
+ maxValue: 30,
130
+ },
131
+ {
132
+ displayName: 'Default Height',
133
+ name: 'defaultHeight',
134
+ type: 'number',
135
+ default: 512,
136
+ description: 'Default image height when not specified in query',
137
+ minValue: 64,
138
+ maxValue: 4096,
139
+ },
140
+ {
141
+ displayName: 'Default Steps',
142
+ name: 'defaultSteps',
143
+ type: 'number',
144
+ default: 20,
145
+ description: 'Default sampling steps when not specified in query',
146
+ minValue: 1,
147
+ maxValue: 150,
148
+ },
149
+ {
150
+ displayName: 'Default Width',
151
+ name: 'defaultWidth',
152
+ type: 'number',
153
+ default: 512,
154
+ description: 'Default image width when not specified in query',
155
+ minValue: 64,
156
+ maxValue: 4096,
157
+ },
158
+ ],
159
+ },
160
+ ],
161
+ };
162
+ }
163
+ /**
164
+ * Execute function - called when the node runs
165
+ */
166
+ async execute() {
167
+ const logger = (0, logger_1.createLogger)(this.logger);
168
+ // Get node parameters
169
+ const comfyUiUrl = this.getNodeParameter('comfyUiUrl', 0);
170
+ const timeout = this.getNodeParameter('timeout', 0);
171
+ const outputBinaryKey = this.getNodeParameter('outputBinaryKey', 0);
172
+ const defaultNegativePrompt = this.getNodeParameter('defaultNegativePrompt', 0);
173
+ const advancedOptions = this.getNodeParameter('advancedOptions', 0);
174
+ const { customWorkflow = '', defaultWidth = 512, defaultHeight = 512, defaultSteps = 20, defaultCfg = 8, } = advancedOptions || {};
175
+ // Validate URL
176
+ if (!(0, validation_1.validateUrl)(comfyUiUrl)) {
177
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Invalid ComfyUI URL. Must be a valid HTTP/HTTPS URL.');
178
+ }
179
+ // Validate output binary key
180
+ (0, validation_1.validateOutputBinaryKey)(outputBinaryKey);
181
+ // Get input data
182
+ const inputData = this.getInputData();
183
+ if (!inputData || inputData.length === 0) {
184
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No input data provided. Please provide a query text.');
185
+ }
186
+ // Check if input contains binary image data
187
+ const hasInputImage = (0, agentToolHelpers_1.hasBinaryData)(inputData);
188
+ let uploadedImageFilename = null;
189
+ // Get query from input
190
+ const firstItem = inputData[0];
191
+ const query = firstItem.json.query ||
192
+ firstItem.json.text ||
193
+ firstItem.json.prompt ||
194
+ '';
195
+ if (!query || query.trim().length === 0) {
196
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No query found in input. Please provide a "query", "text", or "prompt" field with a description of the image you want to generate.');
197
+ }
198
+ // Determine mode based on input
199
+ const mode = hasInputImage ? 'image-to-image' : 'text-to-image';
200
+ logger.info('Processing image generation request', { query, comfyUiUrl, timeout, mode });
201
+ // Parse the query to extract parameters
202
+ const params = (0, agentToolHelpers_1.parseInput)(query, {
203
+ negativePrompt: defaultNegativePrompt,
204
+ width: defaultWidth,
205
+ height: defaultHeight,
206
+ steps: defaultSteps,
207
+ cfg: defaultCfg,
208
+ });
209
+ logger.debug('Parsed parameters', {
210
+ prompt: params.prompt,
211
+ width: params.width,
212
+ height: params.height,
213
+ steps: params.steps,
214
+ cfg: params.cfg,
215
+ seed: params.seed,
216
+ });
217
+ // Get workflow template
218
+ let workflowTemplate;
219
+ if (customWorkflow && customWorkflow.trim().length > 0) {
220
+ workflowTemplate = (0, validation_1.safeJsonParse)(customWorkflow, 'Custom workflow JSON');
221
+ }
222
+ else {
223
+ workflowTemplate = (0, workflowConfig_1.getWorkflowTemplate)({ mode });
224
+ }
225
+ // Create ComfyUI client
226
+ const client = new ComfyUiClient_1.ComfyUIClient({
227
+ baseUrl: comfyUiUrl,
228
+ timeout: timeout * 1000,
229
+ helpers: this.helpers,
230
+ logger,
231
+ });
232
+ try {
233
+ logger.info('Starting ComfyUI workflow execution');
234
+ // If input contains image, upload it first
235
+ if (hasInputImage) {
236
+ const binaryKey = (0, agentToolHelpers_1.getFirstBinaryKey)(inputData);
237
+ if (!binaryKey) {
238
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Binary data found but no binary key detected.');
239
+ }
240
+ const binaryData = (0, agentToolHelpers_1.extractBinaryData)(inputData, binaryKey);
241
+ if (!binaryData) {
242
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to extract binary data from key "${binaryKey}".`);
243
+ }
244
+ logger.info('Uploading input image to ComfyUI', {
245
+ fileName: binaryData.fileName,
246
+ mimeType: binaryData.mimeType,
247
+ });
248
+ // Convert base64 to buffer
249
+ const buffer = Buffer.from(binaryData.data, 'base64');
250
+ // Upload image to ComfyUI
251
+ uploadedImageFilename = await client.uploadImage(buffer, binaryData.fileName || 'input_image.png');
252
+ logger.info('Successfully uploaded input image', { filename: uploadedImageFilename });
253
+ }
254
+ // Update workflow with parsed parameters
255
+ let workflow = (0, agentToolHelpers_1.updateWorkflow)(workflowTemplate, params);
256
+ // If we uploaded an image, update workflow with the image filename
257
+ if (uploadedImageFilename) {
258
+ workflow = (0, agentToolHelpers_1.updateWorkflowWithImage)(workflow, uploadedImageFilename);
259
+ }
260
+ // Execute workflow
261
+ const result = await client.executeWorkflow(workflow);
262
+ if (!result.success) {
263
+ logger.error('Workflow execution failed', result.error);
264
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to generate image: ${result.error}`);
265
+ }
266
+ // Process results
267
+ const { json, binary } = await client.processResults(result, outputBinaryKey);
268
+ // Add metadata to JSON output
269
+ const enhancedJson = {
270
+ ...json,
271
+ prompt: params.prompt,
272
+ mode: mode,
273
+ parameters: {
274
+ width: params.width,
275
+ height: params.height,
276
+ steps: params.steps,
277
+ cfg: params.cfg,
278
+ seed: params.seed,
279
+ negative_prompt: params.negative_prompt,
280
+ },
281
+ };
282
+ logger.info('Image generation completed successfully', {
283
+ imageCount: json.imageCount,
284
+ mode,
285
+ });
286
+ return [this.helpers.constructExecutionMetaData([{ json: enhancedJson, binary }], { itemData: { item: 0 } })];
287
+ }
288
+ catch (error) {
289
+ logger.error('Error during workflow execution', error);
290
+ throw error;
291
+ }
292
+ finally {
293
+ client.destroy();
294
+ logger.debug('Client destroyed');
295
+ }
296
+ }
297
+ }
298
+ exports.ComfyUiTool = ComfyUiTool;
299
+ //# sourceMappingURL=ComfyUiTool.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComfyUiTool.node.js","sourceRoot":"","sources":["../../../nodes/ComfyUiTool/ComfyUiTool.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * ComfyUI Tool - AI Agent-friendly image generation node
3
+ *
4
+ * This node is designed to be used as an AI Agent tool with minimal configuration.
5
+ * It accepts a simple text query and automatically generates images using ComfyUI.
6
+ */
7
+ import { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
8
+ export declare class ComfyUiTool {
9
+ /**
10
+ * Node description for n8n
11
+ */
12
+ description: {
13
+ displayName: string;
14
+ name: string;
15
+ icon: string;
16
+ iconColor: string;
17
+ group: string[];
18
+ version: number[];
19
+ defaultVersion: number;
20
+ description: string;
21
+ defaults: {
22
+ name: string;
23
+ };
24
+ usableAsTool: boolean;
25
+ inputs: string[];
26
+ outputs: string[];
27
+ subtitle: string;
28
+ notes: string[];
29
+ inputSample: {
30
+ query: string;
31
+ };
32
+ outputSample: {
33
+ json: {
34
+ success: boolean;
35
+ imageCount: number;
36
+ imageUrls: string[];
37
+ prompt: string;
38
+ parameters: {
39
+ width: number;
40
+ height: number;
41
+ steps: number;
42
+ cfg: number;
43
+ seed: number;
44
+ };
45
+ };
46
+ binary: {
47
+ data: {
48
+ data: string;
49
+ mimeType: string;
50
+ fileName: string;
51
+ };
52
+ };
53
+ };
54
+ properties: ({
55
+ displayName: string;
56
+ name: string;
57
+ type: string;
58
+ required: boolean;
59
+ default: string;
60
+ description: string;
61
+ minValue?: undefined;
62
+ maxValue?: undefined;
63
+ placeholder?: undefined;
64
+ options?: undefined;
65
+ } | {
66
+ displayName: string;
67
+ name: string;
68
+ type: string;
69
+ default: number;
70
+ description: string;
71
+ minValue: number;
72
+ maxValue: number;
73
+ required?: undefined;
74
+ placeholder?: undefined;
75
+ options?: undefined;
76
+ } | {
77
+ displayName: string;
78
+ name: string;
79
+ type: string;
80
+ default: string;
81
+ description: string;
82
+ placeholder: string;
83
+ required?: undefined;
84
+ minValue?: undefined;
85
+ maxValue?: undefined;
86
+ options?: undefined;
87
+ } | {
88
+ displayName: string;
89
+ name: string;
90
+ type: string;
91
+ placeholder: string;
92
+ default: {};
93
+ options: ({
94
+ displayName: string;
95
+ name: string;
96
+ type: string;
97
+ typeOptions: {
98
+ rows: number;
99
+ };
100
+ default: string;
101
+ description: string;
102
+ minValue?: undefined;
103
+ maxValue?: undefined;
104
+ } | {
105
+ displayName: string;
106
+ name: string;
107
+ type: string;
108
+ default: number;
109
+ description: string;
110
+ minValue: number;
111
+ maxValue: number;
112
+ typeOptions?: undefined;
113
+ })[];
114
+ required?: undefined;
115
+ description?: undefined;
116
+ minValue?: undefined;
117
+ maxValue?: undefined;
118
+ })[];
119
+ };
120
+ /**
121
+ * Execute function - called when the node runs
122
+ */
123
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
124
+ }
125
+ //# sourceMappingURL=ComfyUiTool.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComfyUiTool.node.d.ts","sourceRoot":"","sources":["../../nodes/ComfyUiTool.node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,cAAc,CAAC;AAStB,qBAAa,WAAW;IACtB;;OAEG;IACH,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyIT;IAEF;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAyIxE"}