n8n-nodes-comfyui-all 2.2.23 → 2.3.1

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 (32) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/nodes/ComfyUi/ComfyUi.node.d.ts +63 -30
  6. package/dist/nodes/ComfyUi/ComfyUi.node.d.ts.map +1 -1
  7. package/dist/nodes/ComfyUi/ComfyUi.node.js +142 -55
  8. package/dist/nodes/ComfyUi/ComfyUi.node.js.map +1 -1
  9. package/dist/nodes/ComfyUiTool/ComfyUiTool.node.d.ts +157 -0
  10. package/dist/nodes/ComfyUiTool/ComfyUiTool.node.d.ts.map +1 -0
  11. package/dist/nodes/ComfyUiTool/ComfyUiTool.node.js +435 -0
  12. package/dist/nodes/ComfyUiTool/ComfyUiTool.node.js.map +1 -0
  13. package/dist/nodes/ComfyUiTool.node.d.ts +125 -0
  14. package/dist/nodes/ComfyUiTool.node.d.ts.map +1 -0
  15. package/dist/nodes/ComfyUiTool.node.js +265 -0
  16. package/dist/nodes/ComfyUiTool.node.js.map +1 -0
  17. package/dist/nodes/agentToolHelpers.d.ts +93 -0
  18. package/dist/nodes/agentToolHelpers.d.ts.map +1 -0
  19. package/dist/nodes/agentToolHelpers.js +337 -0
  20. package/dist/nodes/agentToolHelpers.js.map +1 -0
  21. package/dist/nodes/parameterProcessor.d.ts.map +1 -1
  22. package/dist/nodes/parameterProcessor.js +19 -9
  23. package/dist/nodes/parameterProcessor.js.map +1 -1
  24. package/dist/nodes/validation.d.ts +10 -0
  25. package/dist/nodes/validation.d.ts.map +1 -1
  26. package/dist/nodes/validation.js +81 -0
  27. package/dist/nodes/validation.js.map +1 -1
  28. package/dist/nodes/workflowConfig.d.ts +8 -1
  29. package/dist/nodes/workflowConfig.d.ts.map +1 -1
  30. package/dist/nodes/workflowConfig.js +75 -1
  31. package/dist/nodes/workflowConfig.js.map +1 -1
  32. package/package.json +1 -1
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"}
@@ -50,6 +50,7 @@ export declare class ComfyUi {
50
50
  typeOptions?: undefined;
51
51
  placeholder?: undefined;
52
52
  hint?: undefined;
53
+ validate?: undefined;
53
54
  minValue?: undefined;
54
55
  maxValue?: undefined;
55
56
  options?: undefined;
@@ -67,6 +68,7 @@ export declare class ComfyUi {
67
68
  description: string;
68
69
  placeholder: string;
69
70
  hint: string;
71
+ validate: (parameterValue: string) => Promise<string | undefined>;
70
72
  minValue?: undefined;
71
73
  maxValue?: undefined;
72
74
  options?: undefined;
@@ -82,6 +84,7 @@ export declare class ComfyUi {
82
84
  typeOptions?: undefined;
83
85
  placeholder?: undefined;
84
86
  hint?: undefined;
87
+ validate?: undefined;
85
88
  options?: undefined;
86
89
  } | {
87
90
  displayName: string;
@@ -93,6 +96,7 @@ export declare class ComfyUi {
93
96
  required?: undefined;
94
97
  typeOptions?: undefined;
95
98
  hint?: undefined;
99
+ validate?: undefined;
96
100
  minValue?: undefined;
97
101
  maxValue?: undefined;
98
102
  options?: undefined;
@@ -116,11 +120,14 @@ export declare class ComfyUi {
116
120
  type: string;
117
121
  default: string;
118
122
  description: string;
119
- placeholder: string;
120
123
  required: boolean;
124
+ typeOptions: {
125
+ loadOptionsMethod: string;
126
+ rows?: undefined;
127
+ };
128
+ placeholder: string;
121
129
  options?: undefined;
122
130
  displayOptions?: undefined;
123
- typeOptions?: undefined;
124
131
  hint?: undefined;
125
132
  } | {
126
133
  displayName: string;
@@ -133,10 +140,10 @@ export declare class ComfyUi {
133
140
  value: string;
134
141
  description: string;
135
142
  }[];
136
- placeholder?: undefined;
137
143
  required?: undefined;
138
- displayOptions?: undefined;
139
144
  typeOptions?: undefined;
145
+ placeholder?: undefined;
146
+ displayOptions?: undefined;
140
147
  hint?: undefined;
141
148
  } | {
142
149
  displayName: string;
@@ -145,16 +152,30 @@ export declare class ComfyUi {
145
152
  default: string;
146
153
  description: string;
147
154
  placeholder: string;
155
+ required: boolean;
156
+ typeOptions: {
157
+ loadOptionsMethod: string;
158
+ rows?: undefined;
159
+ };
148
160
  displayOptions: {
149
161
  show: {
150
162
  parameterMode: string[];
151
- type?: undefined;
152
163
  imageSource?: undefined;
153
164
  };
154
165
  };
155
- required?: undefined;
156
166
  options?: undefined;
167
+ hint?: undefined;
168
+ } | {
169
+ displayName: string;
170
+ name: string;
171
+ type: string;
172
+ default: string;
173
+ description?: undefined;
174
+ required?: undefined;
157
175
  typeOptions?: undefined;
176
+ placeholder?: undefined;
177
+ options?: undefined;
178
+ displayOptions?: undefined;
158
179
  hint?: undefined;
159
180
  } | {
160
181
  displayName: string;
@@ -162,6 +183,7 @@ export declare class ComfyUi {
162
183
  type: string;
163
184
  typeOptions: {
164
185
  rows: number;
186
+ loadOptionsMethod?: undefined;
165
187
  };
166
188
  default: string;
167
189
  description: string;
@@ -169,7 +191,6 @@ export declare class ComfyUi {
169
191
  displayOptions: {
170
192
  show: {
171
193
  parameterMode: string[];
172
- type?: undefined;
173
194
  imageSource?: undefined;
174
195
  };
175
196
  };
@@ -190,13 +211,12 @@ export declare class ComfyUi {
190
211
  displayOptions: {
191
212
  show: {
192
213
  parameterMode: string[];
193
- type?: undefined;
194
214
  imageSource?: undefined;
195
215
  };
196
216
  };
197
- placeholder?: undefined;
198
217
  required?: undefined;
199
218
  typeOptions?: undefined;
219
+ placeholder?: undefined;
200
220
  hint?: undefined;
201
221
  } | {
202
222
  displayName: string;
@@ -204,22 +224,17 @@ export declare class ComfyUi {
204
224
  type: string;
205
225
  default: string;
206
226
  description: string;
207
- options: {
208
- name: string;
209
- value: string;
210
- description: string;
211
- }[];
227
+ placeholder: string;
212
228
  displayOptions: {
213
229
  show: {
214
230
  parameterMode: string[];
215
- type: string[];
216
- imageSource?: undefined;
231
+ imageSource: string[];
217
232
  };
218
233
  };
219
- placeholder?: undefined;
234
+ hint: string;
220
235
  required?: undefined;
221
236
  typeOptions?: undefined;
222
- hint?: undefined;
237
+ options?: undefined;
223
238
  } | {
224
239
  displayName: string;
225
240
  name: string;
@@ -230,55 +245,57 @@ export declare class ComfyUi {
230
245
  displayOptions: {
231
246
  show: {
232
247
  parameterMode: string[];
233
- type: string[];
234
- imageSource: string[];
248
+ imageSource?: undefined;
235
249
  };
236
250
  };
237
251
  hint: string;
238
252
  required?: undefined;
239
- options?: undefined;
240
253
  typeOptions?: undefined;
254
+ options?: undefined;
241
255
  } | {
242
256
  displayName: string;
243
257
  name: string;
244
258
  type: string;
245
- default: string;
259
+ default: number;
246
260
  description: string;
247
261
  placeholder: string;
248
262
  displayOptions: {
249
263
  show: {
250
264
  parameterMode: string[];
251
- type: string[];
252
265
  imageSource?: undefined;
253
266
  };
254
267
  };
268
+ hint: string;
255
269
  required?: undefined;
256
- options?: undefined;
257
270
  typeOptions?: undefined;
258
- hint?: undefined;
271
+ options?: undefined;
259
272
  } | {
260
273
  displayName: string;
261
274
  name: string;
262
275
  type: string;
263
- default: number;
276
+ default: string;
264
277
  description: string;
265
- placeholder: string;
278
+ options: {
279
+ name: string;
280
+ value: string;
281
+ description: string;
282
+ }[];
266
283
  displayOptions: {
267
284
  show: {
268
285
  parameterMode: string[];
269
- type: string[];
270
286
  imageSource?: undefined;
271
287
  };
272
288
  };
289
+ hint: string;
273
290
  required?: undefined;
274
- options?: undefined;
275
291
  typeOptions?: undefined;
276
- hint?: undefined;
292
+ placeholder?: undefined;
277
293
  })[];
278
294
  }[];
279
295
  required?: undefined;
280
296
  placeholder?: undefined;
281
297
  hint?: undefined;
298
+ validate?: undefined;
282
299
  minValue?: undefined;
283
300
  maxValue?: undefined;
284
301
  })[];
@@ -289,5 +306,21 @@ export declare class ComfyUi {
289
306
  * @throws {NodeOperationError} If URL validation, workflow validation, or execution fails
290
307
  */
291
308
  execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
309
+ /**
310
+ * Load all nodes from workflow JSON for Node ID dropdown
311
+ */
312
+ getWorkflowNodes(this: IExecuteFunctions): Promise<{
313
+ name: string;
314
+ value: string;
315
+ description?: string;
316
+ }[]>;
317
+ /**
318
+ * Load parameters for a specific node for Parameter Name dropdown
319
+ */
320
+ getNodeParameters(this: IExecuteFunctions): Promise<{
321
+ name: string;
322
+ value: string;
323
+ description?: string;
324
+ }[]>;
292
325
  }
293
326
  //# sourceMappingURL=ComfyUi.node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComfyUi.node.d.ts","sourceRoot":"","sources":["../../../nodes/ComfyUi/ComfyUi.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,cAAc,CAAC;AAQtB,qBAAa,OAAO;IAClB;;;OAGG;IACH,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4ST;IAEF;;;;OAIG;IACG,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAgFxE"}
1
+ {"version":3,"file":"ComfyUi.node.d.ts","sourceRoot":"","sources":["../../../nodes/ComfyUi/ComfyUi.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,cAAc,CAAC;AAQtB,qBAAa,OAAO;IAClB;;;OAGG;IACH,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA6D4B,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+O3C;IAEF;;;;OAIG;IACG,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAiFvE;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAmCjH;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAiEnH"}
@@ -73,6 +73,25 @@ class ComfyUi {
73
73
  description: 'Paste your ComfyUI workflow JSON (API Format). In ComfyUI: 1. Design your workflow 2. Click "Save (API Format)" to export 3. Copy generated JSON 4. Paste it here. Tip: Configure all parameters directly in JSON (prompts, resolution, sampling parameters, frames, etc.).',
74
74
  placeholder: 'Paste your ComfyUI workflow JSON...\n\n{\n "3": {\n "inputs": {\n "seed": 123456789,\n "steps": 20,\n ...\n },\n "class_type": "KSampler"\n }\n}',
75
75
  hint: 'Copy API Format workflow from ComfyUI and paste it here. You can edit all parameters directly in JSON.',
76
+ validate: async (parameterValue) => {
77
+ if (!parameterValue || parameterValue.trim().length === 0) {
78
+ // eslint-disable-next-line n8n-nodes-base/node-execute-block-wrong-error-thrown
79
+ throw new Error('Workflow JSON is required');
80
+ }
81
+ const validation = (0, validation_1.validateComfyUIWorkflowEnhanced)(parameterValue);
82
+ if (!validation.valid) {
83
+ // eslint-disable-next-line n8n-nodes-base/node-execute-block-wrong-error-thrown
84
+ throw new Error(validation.error || 'Invalid workflow format');
85
+ }
86
+ if (validation.warnings && validation.warnings.length > 0) {
87
+ const warningMessage = 'Workflow validation warnings:\n' +
88
+ validation.warnings.map((w, i) => `${i + 1}. ${w}`).join('\n') +
89
+ '\n\nSuggestions:\n' +
90
+ (validation.suggestions?.map((s, i) => `${i + 1}. ${s}`).join('\n') || '');
91
+ return warningMessage;
92
+ }
93
+ return undefined;
94
+ },
76
95
  },
77
96
  {
78
97
  displayName: 'Timeout (Seconds)',
@@ -107,13 +126,16 @@ class ComfyUi {
107
126
  name: 'nodeParameter',
108
127
  values: [
109
128
  {
110
- displayName: 'Node ID',
129
+ displayName: 'Node Name or ID',
111
130
  name: 'nodeId',
112
- type: 'string',
131
+ type: 'options',
113
132
  default: '',
114
- description: 'The node ID in your workflow (e.g., \'13\', \'3\', \'6\')',
115
- placeholder: '13',
133
+ description: 'Select a node from your workflow. Nodes are loaded from the Workflow JSON. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
116
134
  required: true,
135
+ typeOptions: {
136
+ loadOptionsMethod: 'getWorkflowNodes',
137
+ },
138
+ placeholder: 'Select a node...',
117
139
  },
118
140
  {
119
141
  displayName: 'Parameter Mode',
@@ -135,18 +157,28 @@ class ComfyUi {
135
157
  ]
136
158
  },
137
159
  {
138
- displayName: 'Parameter Name',
160
+ displayName: 'Parameter Name or ID',
139
161
  name: 'paramName',
140
- type: 'string',
162
+ type: 'options',
141
163
  default: '',
142
- description: 'The parameter name to override (e.g., \'text\', \'seed\', \'steps\', \'width\'). Use this for single parameter mode.',
143
- placeholder: 'width',
164
+ description: 'Select a parameter from the chosen node. Type is auto-detected and shown in the option name. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
165
+ placeholder: 'Select a parameter...',
166
+ required: true,
167
+ typeOptions: {
168
+ loadOptionsMethod: 'getNodeParameters',
169
+ },
144
170
  displayOptions: {
145
171
  show: {
146
172
  parameterMode: ['single'],
147
173
  },
148
174
  },
149
175
  },
176
+ {
177
+ displayName: 'Type',
178
+ name: 'type',
179
+ type: 'hidden',
180
+ default: 'text',
181
+ },
150
182
  {
151
183
  displayName: 'Parameters JSON',
152
184
  name: 'parametersJson',
@@ -163,40 +195,6 @@ class ComfyUi {
163
195
  },
164
196
  },
165
197
  },
166
- {
167
- displayName: 'Type',
168
- name: 'type',
169
- type: 'options',
170
- default: 'text',
171
- description: 'Data type of parameter (for single parameter mode)',
172
- options: [
173
- {
174
- name: 'Text',
175
- value: 'text',
176
- description: 'String/text value',
177
- },
178
- {
179
- name: 'Number',
180
- value: 'number',
181
- description: 'Numeric value',
182
- },
183
- {
184
- name: 'Boolean',
185
- value: 'boolean',
186
- description: 'True/False',
187
- },
188
- {
189
- name: 'Image',
190
- value: 'image',
191
- description: 'Image file (from binary data or URL)',
192
- },
193
- ],
194
- displayOptions: {
195
- show: {
196
- parameterMode: ['single'],
197
- },
198
- },
199
- },
200
198
  {
201
199
  displayName: 'Image Input Type',
202
200
  name: 'imageSource',
@@ -218,7 +216,6 @@ class ComfyUi {
218
216
  displayOptions: {
219
217
  show: {
220
218
  parameterMode: ['single'],
221
- type: ['image'],
222
219
  },
223
220
  },
224
221
  },
@@ -232,28 +229,27 @@ class ComfyUi {
232
229
  displayOptions: {
233
230
  show: {
234
231
  parameterMode: ['single'],
235
- type: ['image'],
236
232
  imageSource: ['url'],
237
233
  },
238
234
  },
239
- hint: 'Enter the URL of the image to use',
235
+ hint: 'For Image type parameters with URL input',
240
236
  },
241
237
  {
242
- displayName: 'Value',
238
+ displayName: 'Value (Text)',
243
239
  name: 'value',
244
240
  type: 'string',
245
241
  default: '',
246
- description: 'The value to set',
242
+ description: 'The text value to set',
247
243
  placeholder: 'Enter text...',
248
244
  displayOptions: {
249
245
  show: {
250
246
  parameterMode: ['single'],
251
- type: ['text'],
252
247
  },
253
248
  },
249
+ hint: 'Use this for Text type parameters (e.g., text, prompt, filename)',
254
250
  },
255
251
  {
256
- displayName: 'Value',
252
+ displayName: 'Value (Binary Property)',
257
253
  name: 'value',
258
254
  type: 'string',
259
255
  default: '',
@@ -262,14 +258,13 @@ class ComfyUi {
262
258
  displayOptions: {
263
259
  show: {
264
260
  parameterMode: ['single'],
265
- type: ['image'],
266
261
  imageSource: ['binary'],
267
262
  },
268
263
  },
269
- hint: 'Enter the binary property name to use as input',
264
+ hint: 'Use this for Image type parameters with Binary input',
270
265
  },
271
266
  {
272
- displayName: 'Value',
267
+ displayName: 'Value (Number)',
273
268
  name: 'numberValue',
274
269
  type: 'number',
275
270
  default: 0,
@@ -278,12 +273,12 @@ class ComfyUi {
278
273
  displayOptions: {
279
274
  show: {
280
275
  parameterMode: ['single'],
281
- type: ['number'],
282
276
  },
283
277
  },
278
+ hint: 'Use this for Number type parameters (e.g., seed, steps, width, height, cfg)',
284
279
  },
285
280
  {
286
- displayName: 'Value',
281
+ displayName: 'Value (Boolean)',
287
282
  name: 'booleanValue',
288
283
  type: 'options',
289
284
  default: 'false',
@@ -303,9 +298,9 @@ class ComfyUi {
303
298
  displayOptions: {
304
299
  show: {
305
300
  parameterMode: ['single'],
306
- type: ['boolean'],
307
301
  },
308
302
  },
303
+ hint: 'Use this for Boolean type parameters',
309
304
  },
310
305
  ],
311
306
  },
@@ -381,6 +376,98 @@ class ComfyUi {
381
376
  logger.debug('Client destroyed');
382
377
  }
383
378
  }
379
+ /**
380
+ * Load all nodes from workflow JSON for Node ID dropdown
381
+ */
382
+ async getWorkflowNodes() {
383
+ try {
384
+ const workflowJson = this.getNodeParameter('workflowJson', 0);
385
+ if (!workflowJson || workflowJson.trim().length === 0) {
386
+ return [];
387
+ }
388
+ const workflow = (0, validation_1.safeJsonParse)(workflowJson, 'Workflow JSON');
389
+ const nodes = [];
390
+ for (const [nodeId, nodeData] of Object.entries(workflow)) {
391
+ if (nodeData && nodeData.class_type) {
392
+ nodes.push({
393
+ name: `${nodeId} - ${nodeData.class_type}`,
394
+ value: nodeId,
395
+ description: nodeData.class_type,
396
+ });
397
+ }
398
+ }
399
+ // Sort by node ID (numeric)
400
+ nodes.sort((a, b) => {
401
+ const aNum = parseInt(a.value);
402
+ const bNum = parseInt(b.value);
403
+ return aNum - bNum;
404
+ });
405
+ return nodes;
406
+ }
407
+ catch (error) {
408
+ // Silently return empty array on error
409
+ return [];
410
+ }
411
+ }
412
+ /**
413
+ * Load parameters for a specific node for Parameter Name dropdown
414
+ */
415
+ async getNodeParameters() {
416
+ try {
417
+ const workflowJson = this.getNodeParameter('workflowJson', 0);
418
+ // Try to get the nodeId from current context
419
+ let nodeId;
420
+ // In loadOptions context, we need to access the current parameter value differently
421
+ // This is a workaround - user needs to select Node ID first
422
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
423
+ const currentParameters = this.getNodeParameter('nodeParameters', 0);
424
+ if (currentParameters && currentParameters.nodeParameter && currentParameters.nodeParameter.length > 0) {
425
+ nodeId = currentParameters.nodeParameter[0].nodeId;
426
+ }
427
+ if (!workflowJson || workflowJson.trim().length === 0 || !nodeId) {
428
+ return [];
429
+ }
430
+ const workflow = (0, validation_1.safeJsonParse)(workflowJson, 'Workflow JSON');
431
+ const nodeData = workflow[nodeId];
432
+ if (!nodeData || !nodeData.inputs) {
433
+ return [];
434
+ }
435
+ const parameters = [];
436
+ for (const [paramName, paramValue] of Object.entries(nodeData.inputs)) {
437
+ // Skip array values (these are connections to other nodes)
438
+ if (Array.isArray(paramValue)) {
439
+ continue;
440
+ }
441
+ // Auto-detect type
442
+ let detectedType = 'text';
443
+ if (paramName.toLowerCase().includes('image') || paramName.toLowerCase().includes('upload')) {
444
+ detectedType = 'image';
445
+ }
446
+ else if (typeof paramValue === 'boolean') {
447
+ detectedType = 'boolean';
448
+ }
449
+ else if (typeof paramValue === 'number') {
450
+ detectedType = 'number';
451
+ }
452
+ // Add parameter with value and type as description
453
+ const valueStr = String(paramValue);
454
+ const description = `Type: ${detectedType} | Current value: ${valueStr.length > 50 ? valueStr.substring(0, 50) + '...' : valueStr}`;
455
+ // Encode type in value so we can extract it later
456
+ parameters.push({
457
+ name: `${paramName} (${detectedType})`,
458
+ value: `${paramName}|${detectedType}`,
459
+ description: description,
460
+ });
461
+ }
462
+ // Sort alphabetically
463
+ parameters.sort((a, b) => a.name.localeCompare(b.name));
464
+ return parameters;
465
+ }
466
+ catch (error) {
467
+ // Silently return empty array on error
468
+ return [];
469
+ }
470
+ }
384
471
  }
385
472
  exports.ComfyUi = ComfyUi;
386
473
  //# sourceMappingURL=ComfyUi.node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComfyUi.node.js","sourceRoot":"","sources":["../../../nodes/ComfyUi/ComfyUi.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ComfyUi.node.js","sourceRoot":"","sources":["../../../nodes/ComfyUi/ComfyUi.node.ts"],"names":[],"mappings":"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"}