n8n-nodes-comfyui-all 2.3.15 → 2.4.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.
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  /**
3
- * ComfyUI Tool - AI Agent-friendly image generation node
3
+ * ComfyUI Tool - Simplified workflow execution node for AI Agents
4
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.
5
+ * This is a simplified node designed for AI Agent usage. It executes
6
+ * ComfyUI workflows provided by the user without making assumptions
7
+ * about workflow structure or node types.
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.ComfyUiTool = void 0;
@@ -13,6 +13,7 @@ const ComfyUiClient_1 = require("../ComfyUiClient");
13
13
  const validation_1 = require("../validation");
14
14
  const logger_1 = require("../logger");
15
15
  const agentToolHelpers_1 = require("../agentToolHelpers");
16
+ const workflowConfig_1 = require("../workflowConfig");
16
17
  class ComfyUiTool {
17
18
  constructor() {
18
19
  /**
@@ -26,47 +27,28 @@ class ComfyUiTool {
26
27
  group: ['transform'],
27
28
  version: [1],
28
29
  defaultVersion: 1,
29
- description: 'AI-friendly image generation tool. Supports text-to-image and image-to-image.',
30
+ description: 'Execute ComfyUI workflows. Requires a workflow JSON exported from ComfyUI.',
30
31
  defaults: {
31
32
  name: 'ComfyUI Tool',
32
33
  },
33
34
  usableAsTool: true,
34
35
  inputs: ['main'],
35
36
  outputs: ['main'],
36
- subtitle: 'AI Image Generator',
37
+ subtitle: 'ComfyUI Workflow Executor',
37
38
  notes: [
38
- 'AI Agent-friendly ComfyUI tool',
39
- 'Requires ComfyUI workflow JSON in API format',
40
- 'Export workflow: ComfyUI Menu > Export > API Format',
41
- 'Supports both text-to-image and image-to-image workflows',
42
- 'Configure which node/parameters AI can modify using "Node ID" and "Allowed Parameters"',
43
- 'AI Agent provides: { query: "...", parameters: { seed: 123456, steps: 30 } }',
44
- 'Only parameters in "Allowed Parameters" list will be applied',
45
- 'Legacy format supported: "A sunset, size:1024x768, steps:30"',
39
+ 'You must provide a ComfyUI workflow JSON (API Format)',
40
+ 'In ComfyUI: Design your workflow Click "Save (API Format)" → Copy JSON → Paste here',
41
+ 'Works with ANY ComfyUI workflow: text-to-image, image-to-image, video generation, etc.',
42
+ 'Configure parameters directly in your workflow JSON or use parameter overrides',
46
43
  ],
47
44
  inputSample: {
48
- query: 'A beautiful landscape painting',
49
- parameters: {
50
- seed: 123456,
51
- steps: 30,
52
- width: 1024,
53
- height: 768,
54
- },
45
+ workflowJson: '{ "3": { "inputs": {}, "class_type": "KSampler" } }',
55
46
  },
56
47
  outputSample: {
57
48
  json: {
58
49
  success: true,
59
50
  imageCount: 1,
60
51
  imageUrls: ['http://127.0.0.1:8188/view?filename=ComfyUI_00001.png'],
61
- prompt: 'A beautiful landscape painting',
62
- mode: 'text-to-image',
63
- parameters: {
64
- width: 1024,
65
- height: 768,
66
- steps: 30,
67
- cfg: 8,
68
- seed: 123456,
69
- },
70
52
  },
71
53
  },
72
54
  properties: [
@@ -78,147 +60,81 @@ class ComfyUiTool {
78
60
  default: 'http://127.0.0.1:8188',
79
61
  description: 'URL of ComfyUI server',
80
62
  },
81
- {
82
- displayName: 'Timeout (Seconds)',
83
- name: 'timeout',
84
- type: 'number',
85
- default: 120,
86
- description: 'Maximum time to wait for image generation (in seconds). Default: 120 (2 minutes).',
87
- minValue: 10,
88
- maxValue: 600,
89
- },
90
63
  {
91
64
  displayName: 'Workflow JSON',
92
65
  name: 'workflowJson',
93
66
  type: 'string',
94
- required: true,
95
67
  typeOptions: {
96
68
  rows: 20,
97
69
  },
70
+ required: true,
98
71
  default: '',
99
- description: 'ComfyUI workflow JSON in API format. Export your workflow from ComfyUI (Menu > Save > API Format) and paste it here.',
100
- placeholder: 'Paste your ComfyUI workflow JSON...',
72
+ description: 'Paste your ComfyUI workflow JSON (API Format). Required field - no built-in templates.',
73
+ placeholder: 'Paste your ComfyUI workflow JSON (API Format) here...\n\n{\n "3": {\n "inputs": {\n "seed": 123456789,\n ...\n },\n "class_type": "KSampler"\n }\n}',
74
+ hint: 'Required: Export your workflow from ComfyUI in API format and paste it here.',
101
75
  },
102
76
  {
103
- displayName: 'Node Name or ID',
104
- name: 'nodeId',
105
- type: 'options',
106
- description: 'Select a node from your workflow. AI will be able to modify parameters of this node. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
107
- typeOptions: {
108
- loadOptionsMethod: 'getWorkflowNodes',
109
- },
110
- placeholder: 'Select a node to configure AI-accessible parameters...',
77
+ displayName: 'Timeout (Seconds)',
78
+ name: 'timeout',
79
+ type: 'number',
80
+ default: 300,
81
+ description: 'Maximum time to wait for workflow execution (in seconds). Default: 300 (5 minutes).',
82
+ minValue: 10,
83
+ maxValue: 3600,
84
+ },
85
+ {
86
+ displayName: 'Load Image Node ID',
87
+ name: 'loadImageNodeId',
88
+ type: 'string',
111
89
  default: '',
90
+ description: 'Optional: Node ID of LoadImage node if your workflow uses input images. Leave empty if not using image input.',
91
+ placeholder: 'e.g., 5, 12, load_image_1',
112
92
  },
113
93
  {
114
- displayName: 'Allowed Parameter Names or IDs',
115
- name: 'allowedParameters',
116
- type: 'multiOptions',
117
- description: 'Select which parameters of this node AI can modify. Parameters will be loaded from the selected node. Choose from the list, or specify IDs using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
118
- typeOptions: {
119
- loadOptionsMethod: 'getNodeParameters',
120
- },
121
- placeholder: 'Select parameters...',
122
- default: [],
123
- displayOptions: {
124
- show: {
125
- nodeId: ['', null, undefined],
126
- mode: 'invert',
94
+ displayName: 'Parameter Overrides',
95
+ name: 'parameterOverrides',
96
+ type: 'fixedCollection',
97
+ placeholder: 'Add Parameter Override',
98
+ default: {},
99
+ description: 'Override specific node parameters at runtime. Useful for dynamic values from input data.',
100
+ options: [
101
+ {
102
+ displayName: 'Parameter Override',
103
+ name: 'parameterOverride',
104
+ type: 'collection',
105
+ placeholder: 'Add Override',
106
+ default: {},
107
+ options: [
108
+ {
109
+ displayName: 'Node ID',
110
+ name: 'nodeId',
111
+ type: 'string',
112
+ default: '',
113
+ description: 'The node ID to update (e.g., "3", "6", "15")',
114
+ placeholder: 'Node ID from workflow JSON',
115
+ },
116
+ {
117
+ displayName: 'Parameter Path',
118
+ name: 'paramPath',
119
+ type: 'string',
120
+ required: true,
121
+ default: '',
122
+ description: 'Path to the parameter (e.g., "inputs.text", "inputs.seed", "inputs.steps")',
123
+ placeholder: 'inputs.parameter_name',
124
+ },
125
+ {
126
+ displayName: 'Value',
127
+ name: 'value',
128
+ type: 'string',
129
+ default: '',
130
+ description: 'The new value. Can be a static value or an expression (e.g., "{{ $JSON.prompt }}").',
131
+ },
132
+ ],
127
133
  },
128
- },
134
+ ],
129
135
  },
130
136
  ],
131
137
  };
132
- /**
133
- * Load options methods for dynamic parameter selection
134
- */
135
- this.methods = {
136
- loadOptions: {
137
- /**
138
- * Load all nodes from workflow JSON for Node ID dropdown
139
- */
140
- async getWorkflowNodes() {
141
- try {
142
- const workflowJson = this.getNodeParameter('workflowJson', 0);
143
- if (!workflowJson || workflowJson.trim().length === 0) {
144
- return [];
145
- }
146
- const workflow = (0, validation_1.safeJsonParse)(workflowJson, 'Workflow JSON');
147
- const nodes = [];
148
- for (const [nodeId, nodeData] of Object.entries(workflow)) {
149
- if (nodeData && nodeData.class_type) {
150
- nodes.push({
151
- name: `${nodeId} - ${nodeData.class_type}`,
152
- value: nodeId,
153
- description: nodeData.class_type,
154
- });
155
- }
156
- }
157
- // Sort by node ID (numeric)
158
- nodes.sort((a, b) => {
159
- const aNum = parseInt(a.value);
160
- const bNum = parseInt(b.value);
161
- return aNum - bNum;
162
- });
163
- return nodes;
164
- }
165
- catch (error) {
166
- // Silently return empty array on error
167
- return [];
168
- }
169
- },
170
- /**
171
- * Load parameters for a specific node for Allowed Parameters multi-select
172
- */
173
- async getNodeParameters() {
174
- try {
175
- const workflowJson = this.getNodeParameter('workflowJson', 0);
176
- const nodeId = this.getNodeParameter('nodeId', 0);
177
- if (!workflowJson || workflowJson.trim().length === 0 || !nodeId) {
178
- return [];
179
- }
180
- const workflow = (0, validation_1.safeJsonParse)(workflowJson, 'Workflow JSON');
181
- const nodeData = workflow[nodeId];
182
- if (!nodeData || !nodeData.inputs) {
183
- return [];
184
- }
185
- const parameters = [];
186
- for (const [paramName, paramValue] of Object.entries(nodeData.inputs)) {
187
- // Skip array values (these are connections to other nodes)
188
- if (Array.isArray(paramValue)) {
189
- continue;
190
- }
191
- // Auto-detect type for display
192
- let detectedType = 'text';
193
- if (paramName.toLowerCase().includes('image') || paramName.toLowerCase().includes('upload')) {
194
- detectedType = 'image';
195
- }
196
- else if (typeof paramValue === 'boolean') {
197
- detectedType = 'boolean';
198
- }
199
- else if (typeof paramValue === 'number') {
200
- detectedType = 'number';
201
- }
202
- // Add parameter with value and type as description
203
- const valueStr = String(paramValue);
204
- const description = `Type: ${detectedType} | Current value: ${valueStr.length > 50 ? valueStr.substring(0, 50) + '...' : valueStr}`;
205
- parameters.push({
206
- name: paramName,
207
- value: paramName,
208
- description: description,
209
- });
210
- }
211
- // Sort alphabetically
212
- parameters.sort((a, b) => a.name.localeCompare(b.name));
213
- return parameters;
214
- }
215
- catch (error) {
216
- // Silently return empty array on error
217
- return [];
218
- }
219
- },
220
- },
221
- };
222
138
  }
223
139
  /**
224
140
  * Execute function - called when the node runs
@@ -227,111 +143,34 @@ class ComfyUiTool {
227
143
  const logger = (0, logger_1.createLogger)(this.logger);
228
144
  // Get node parameters
229
145
  const comfyUiUrl = this.getNodeParameter('comfyUiUrl', 0);
230
- const timeout = this.getNodeParameter('timeout', 0);
231
146
  const workflowJson = this.getNodeParameter('workflowJson', 0);
147
+ const timeout = this.getNodeParameter('timeout', 0);
148
+ const loadImageNodeId = this.getNodeParameter('loadImageNodeId', 0);
149
+ const parameterOverrides = this.getNodeParameter('parameterOverrides', 0);
232
150
  // Validate URL
233
151
  if (!(0, validation_1.validateUrl)(comfyUiUrl)) {
234
152
  throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Invalid ComfyUI URL. Must be a valid HTTP/HTTPS URL.');
235
153
  }
236
- // Validate workflow JSON
237
- if (!workflowJson || workflowJson.trim().length === 0) {
238
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Workflow JSON is required. Please export your ComfyUI workflow (Menu > Export > API Format) and paste it in the "Workflow JSON" field.');
239
- }
240
- // Get input data
241
- const inputData = this.getInputData();
242
- if (!inputData || inputData.length === 0) {
243
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No input data provided. Please provide a query text.');
244
- }
245
- // Check if input contains binary image data
246
- const hasInputImage = (0, agentToolHelpers_1.hasBinaryData)(inputData);
247
- let uploadedImageFilename = null;
248
- // Get query from input
249
- const firstItem = inputData[0];
250
- const query = firstItem.json.query ||
251
- firstItem.json.text ||
252
- firstItem.json.prompt ||
253
- '';
254
- if (!query || query.trim().length === 0) {
255
- 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.');
256
- }
257
- // Parse workflow JSON (already validated in parameter validation)
258
- let workflowTemplate;
154
+ // Parse and validate workflow
155
+ let workflow;
259
156
  try {
260
- workflowTemplate = (0, validation_1.safeJsonParse)(workflowJson, 'Workflow JSON');
157
+ workflow = (0, workflowConfig_1.parseWorkflow)(workflowJson);
158
+ const validation = (0, validation_1.validateComfyUIWorkflow)(workflowJson);
159
+ if (!validation.valid && validation.error) {
160
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid workflow: ${validation.error}`);
161
+ }
261
162
  }
262
163
  catch (error) {
263
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid Workflow JSON: ${error instanceof Error ? error.message : String(error)}`);
264
- }
265
- // Check if structured parameters are provided
266
- const structuredParams = firstItem.json.parameters;
267
- // Get node configuration (which node/parameters AI can modify)
268
- const configuredNodeId = this.getNodeParameter('nodeId', 0);
269
- const allowedParams = this.getNodeParameter('allowedParameters', 0) || [];
270
- let params;
271
- let workflow = workflowTemplate;
272
- let usedStructuredParams = false;
273
- if (structuredParams && typeof structuredParams === 'object' && Object.keys(structuredParams).length > 0) {
274
- // Use structured parameters from AI Agent
275
- logger.info('Using structured parameters from input', { parameters: structuredParams });
276
- // Filter parameters based on allowed list
277
- let filteredParams = structuredParams;
278
- if (configuredNodeId && allowedParams.length > 0) {
279
- filteredParams = {};
280
- for (const paramName of allowedParams) {
281
- if (paramName in structuredParams) {
282
- filteredParams[paramName] = structuredParams[paramName];
283
- }
284
- }
285
- logger.info('Filtered parameters based on allowed list', {
286
- configuredNodeId,
287
- allowedParams,
288
- filteredParams,
289
- });
290
- }
291
- // Convert structured parameters to ParsedParameters format
292
- // Use filteredParams when available to ensure response only includes allowed parameters
293
- const sourceParams = (configuredNodeId && allowedParams.length > 0) ? filteredParams : structuredParams;
294
- params = {
295
- prompt: query,
296
- negative_prompt: sourceParams.negative_prompt ||
297
- sourceParams.negative ||
298
- structuredParams.negative_prompt ||
299
- structuredParams.negative ||
300
- 'ugly, blurry, low quality, distorted',
301
- width: sourceParams.width || 512,
302
- height: sourceParams.height || 512,
303
- steps: sourceParams.steps || 20,
304
- cfg: sourceParams.cfg || 8,
305
- seed: sourceParams.seed || Math.floor(Math.random() * 2147483647),
306
- };
307
- // Apply filtered parameters to the configured node
308
- if (configuredNodeId && Object.keys(filteredParams).length > 0) {
309
- workflow = (0, agentToolHelpers_1.applyParametersToNode)(workflowTemplate, configuredNodeId, filteredParams);
310
- usedStructuredParams = true;
311
- logger.debug('Applied filtered parameters to configured node', {
312
- nodeId: configuredNodeId,
313
- params: filteredParams,
314
- });
315
- }
316
- else if (Object.keys(structuredParams).length > 0) {
317
- // Fallback to old behavior if no node configured
318
- workflow = (0, agentToolHelpers_1.applyStructuredParameters)(workflowTemplate, structuredParams);
319
- usedStructuredParams = true;
320
- logger.debug('Applied structured parameters (auto-mapped)', structuredParams);
164
+ if (error instanceof n8n_workflow_1.NodeOperationError) {
165
+ throw error;
321
166
  }
167
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to parse workflow JSON. Please ensure it is valid ComfyUI API format.\nError: ${error instanceof Error ? error.message : String(error)}`);
322
168
  }
323
- else {
324
- // Parse the query to extract parameters (legacy behavior)
325
- params = (0, agentToolHelpers_1.parseInput)(query);
326
- logger.debug('Parsed parameters from query', {
327
- prompt: params.prompt,
328
- width: params.width,
329
- height: params.height,
330
- steps: params.steps,
331
- cfg: params.cfg,
332
- seed: params.seed,
333
- });
334
- }
169
+ logger.info('Processing ComfyUI workflow execution request', { comfyUiUrl, timeout });
170
+ // Get input data
171
+ const inputData = this.getInputData();
172
+ const hasInputImage = (0, agentToolHelpers_1.hasBinaryData)(inputData);
173
+ let uploadedImageFilename = null;
335
174
  // Create ComfyUI client
336
175
  const client = new ComfyUiClient_1.ComfyUIClient({
337
176
  baseUrl: comfyUiUrl,
@@ -340,9 +179,8 @@ class ComfyUiTool {
340
179
  logger,
341
180
  });
342
181
  try {
343
- logger.info('Starting ComfyUI workflow execution');
344
- // If input contains image, upload it first
345
- if (hasInputImage) {
182
+ // If input contains image and LoadImage node ID is specified, upload it
183
+ if (hasInputImage && loadImageNodeId) {
346
184
  const binaryKey = (0, agentToolHelpers_1.getFirstBinaryKey)(inputData);
347
185
  if (!binaryKey) {
348
186
  throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Binary data found but no binary key detected.');
@@ -354,60 +192,61 @@ class ComfyUiTool {
354
192
  logger.info('Uploading input image to ComfyUI', {
355
193
  fileName: binaryData.fileName,
356
194
  mimeType: binaryData.mimeType,
195
+ nodeId: loadImageNodeId,
357
196
  });
358
197
  // Convert base64 to buffer
359
198
  const buffer = Buffer.from(binaryData.data, 'base64');
360
199
  // Upload image to ComfyUI
361
200
  uploadedImageFilename = await client.uploadImage(buffer, binaryData.fileName || 'input_image.png');
362
201
  logger.info('Successfully uploaded input image', { filename: uploadedImageFilename });
202
+ // Update workflow with uploaded image filename
203
+ workflow = (0, agentToolHelpers_1.updateNodeParameter)(workflow, loadImageNodeId, 'inputs.image', uploadedImageFilename);
363
204
  }
364
- // Update workflow with parsed parameters (only in legacy mode)
365
- // Skip if structured parameters were already applied
366
- if (!usedStructuredParams) {
367
- workflow = (0, agentToolHelpers_1.updateWorkflow)(workflow, params);
368
- }
369
- // If we uploaded an image, update workflow with the image filename
370
- if (uploadedImageFilename) {
371
- workflow = (0, agentToolHelpers_1.updateWorkflowWithImage)(workflow, uploadedImageFilename);
205
+ // Apply parameter overrides if provided
206
+ if (parameterOverrides?.parameterOverride && parameterOverrides.parameterOverride.length > 0) {
207
+ logger.info('Applying parameter overrides', {
208
+ count: parameterOverrides.parameterOverride.length,
209
+ });
210
+ for (const override of parameterOverrides.parameterOverride) {
211
+ const { nodeId, paramPath, value } = override;
212
+ // Evaluate expressions if needed
213
+ let evaluatedValue = value;
214
+ if (value && value.includes('{{') && value.includes('}}')) {
215
+ try {
216
+ evaluatedValue = this.evaluateExpression(value, 0);
217
+ logger.debug('Evaluated expression', { nodeId, paramPath, result: evaluatedValue });
218
+ }
219
+ catch (error) {
220
+ logger.warn(`Failed to evaluate expression for ${nodeId}.${paramPath}, using raw value`, { error });
221
+ }
222
+ }
223
+ workflow = (0, agentToolHelpers_1.updateNodeParameter)(workflow, nodeId, paramPath, evaluatedValue);
224
+ logger.debug('Applied parameter override', { nodeId, paramPath, value: evaluatedValue });
225
+ }
372
226
  }
227
+ logger.info('Starting ComfyUI workflow execution');
373
228
  // Execute workflow
374
229
  const result = await client.executeWorkflow(workflow);
375
230
  if (!result.success) {
376
231
  logger.error('Workflow execution failed', result.error);
377
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to generate image: ${result.error}`);
232
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to execute workflow: ${result.error}`);
378
233
  }
379
- // Only return URLs without downloading (for AI Agent)
380
- // Fix URL concatenation to handle trailing/leading slashes
381
- const baseUrl = comfyUiUrl.endsWith('/') ? comfyUiUrl.slice(0, -1) : comfyUiUrl;
382
- const imageUrls = result.images ? result.images.map(img => {
383
- const imagePath = img.startsWith('/') ? img : `/${img}`;
384
- return `${baseUrl}${imagePath}`;
385
- }) : [];
386
- const videoUrls = result.videos ? result.videos.map(vid => {
387
- const videoPath = vid.startsWith('/') ? vid : `/${vid}`;
388
- return `${baseUrl}${videoPath}`;
389
- }) : [];
390
- const enhancedJson = {
234
+ // Build URLs
235
+ const imageUrls = result.images ? result.images.map(img => `${comfyUiUrl}${img}`) : [];
236
+ const videoUrls = result.videos ? result.videos.map(vid => `${comfyUiUrl}${vid}`) : [];
237
+ const outputJson = {
391
238
  success: true,
392
239
  imageUrls,
393
240
  videoUrls,
394
241
  imageCount: result.images?.length || 0,
395
242
  videoCount: result.videos?.length || 0,
396
- prompt: params.prompt,
397
- parameters: {
398
- width: params.width,
399
- height: params.height,
400
- steps: params.steps,
401
- cfg: params.cfg,
402
- seed: params.seed,
403
- negative_prompt: params.negative_prompt,
404
- },
405
243
  };
406
- logger.info('Image generation completed successfully', {
407
- imageCount: enhancedJson.imageCount,
244
+ logger.info('Workflow execution completed successfully', {
245
+ imageCount: outputJson.imageCount,
246
+ videoCount: outputJson.videoCount,
408
247
  });
409
- // Return result (no binary data for AI Agent)
410
- return [this.helpers.constructExecutionMetaData([{ json: enhancedJson }], { itemData: { item: 0 } })];
248
+ // Return result (no binary data for AI Agent - URLs only)
249
+ return [this.helpers.constructExecutionMetaData([{ json: outputJson }], { itemData: { item: 0 } })];
411
250
  }
412
251
  catch (error) {
413
252
  logger.error('Error during workflow execution', error);
@@ -1 +1 @@
1
- {"version":3,"file":"ComfyUiTool.node.js","sourceRoot":"","sources":["../../../nodes/ComfyUiTool/ComfyUiTool.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ComfyUiTool.node.js","sourceRoot":"","sources":["../../../nodes/ComfyUiTool/ComfyUiTool.node.ts"],"names":[],"mappings":"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"}