comfyui-node 1.4.3 → 1.5.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 (39) hide show
  1. package/README.md +21 -16
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/call-wrapper.d.ts +17 -0
  4. package/dist/call-wrapper.d.ts.map +1 -1
  5. package/dist/call-wrapper.js +229 -36
  6. package/dist/call-wrapper.js.map +1 -1
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +78 -19
  9. package/dist/client.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/pool/WorkflowPool.d.ts +87 -0
  14. package/dist/pool/WorkflowPool.d.ts.map +1 -1
  15. package/dist/pool/WorkflowPool.js +247 -17
  16. package/dist/pool/WorkflowPool.js.map +1 -1
  17. package/dist/pool/failover/SmartFailoverStrategy.js +1 -1
  18. package/dist/pool/failover/SmartFailoverStrategy.js.map +1 -1
  19. package/dist/pool/index.d.ts +1 -0
  20. package/dist/pool/index.d.ts.map +1 -1
  21. package/dist/pool/profiling/JobProfiler.d.ts +130 -0
  22. package/dist/pool/profiling/JobProfiler.d.ts.map +1 -0
  23. package/dist/pool/profiling/JobProfiler.js +225 -0
  24. package/dist/pool/profiling/JobProfiler.js.map +1 -0
  25. package/dist/pool/types/job.d.ts +3 -0
  26. package/dist/pool/types/job.d.ts.map +1 -1
  27. package/dist/pool/utils/failure-analysis.d.ts +14 -0
  28. package/dist/pool/utils/failure-analysis.d.ts.map +1 -0
  29. package/dist/pool/utils/failure-analysis.js +224 -0
  30. package/dist/pool/utils/failure-analysis.js.map +1 -0
  31. package/dist/types/error.d.ts +31 -1
  32. package/dist/types/error.d.ts.map +1 -1
  33. package/dist/types/error.js +30 -0
  34. package/dist/types/error.js.map +1 -1
  35. package/dist/workflow.d.ts.map +1 -1
  36. package/dist/workflow.js +5 -2
  37. package/dist/workflow.js.map +1 -1
  38. package/package.json +3 -3
  39. package/README.OLD.md +0 -1395
@@ -8,6 +8,9 @@ import { SmartFailoverStrategy } from "./failover/SmartFailoverStrategy.js";
8
8
  import { ClientManager } from "./client/ClientManager.js";
9
9
  import { hashWorkflow } from "./utils/hash.js";
10
10
  import { cloneDeep } from "./utils/clone.js";
11
+ import { JobProfiler } from "./profiling/JobProfiler.js";
12
+ import { analyzeWorkflowFailure } from "./utils/failure-analysis.js";
13
+ import { WorkflowNotSupportedError } from "../types/error.js";
11
14
  const DEFAULT_MAX_ATTEMPTS = 3;
12
15
  const DEFAULT_RETRY_DELAY = 1000;
13
16
  export class WorkflowPool extends TypedEventTarget {
@@ -16,6 +19,7 @@ export class WorkflowPool extends TypedEventTarget {
16
19
  clientManager;
17
20
  opts;
18
21
  jobStore = new Map();
22
+ jobFailureAnalysis = new Map();
19
23
  initPromise;
20
24
  processing = false;
21
25
  activeJobs = new Map();
@@ -112,6 +116,7 @@ export class WorkflowPool extends TypedEventTarget {
112
116
  if (removed) {
113
117
  record.status = "cancelled";
114
118
  record.completedAt = Date.now();
119
+ this.clearJobFailures(jobId);
115
120
  this.dispatchEvent(new CustomEvent("job:cancelled", { detail: { job: record } }));
116
121
  return true;
117
122
  }
@@ -121,6 +126,7 @@ export class WorkflowPool extends TypedEventTarget {
121
126
  await active.cancel();
122
127
  record.status = "cancelled";
123
128
  record.completedAt = Date.now();
129
+ this.clearJobFailures(jobId);
124
130
  this.dispatchEvent(new CustomEvent("job:cancelled", { detail: { job: record } }));
125
131
  return true;
126
132
  }
@@ -129,7 +135,7 @@ export class WorkflowPool extends TypedEventTarget {
129
135
  async shutdown() {
130
136
  this.clientManager.destroy();
131
137
  await this.queue.shutdown();
132
- for (const [, ctx] of this.activeJobs) {
138
+ for (const [, ctx] of Array.from(this.activeJobs)) {
133
139
  ctx.release({ success: false });
134
140
  }
135
141
  this.activeJobs.clear();
@@ -184,6 +190,66 @@ export class WorkflowPool extends TypedEventTarget {
184
190
  }
185
191
  return autoSeeds;
186
192
  }
193
+ rememberJobFailure(job, clientId, analysis) {
194
+ let map = this.jobFailureAnalysis.get(job.jobId);
195
+ if (!map) {
196
+ map = new Map();
197
+ this.jobFailureAnalysis.set(job.jobId, map);
198
+ }
199
+ map.set(clientId, analysis);
200
+ }
201
+ clearJobFailures(jobId) {
202
+ this.jobFailureAnalysis.delete(jobId);
203
+ }
204
+ collectFailureReasons(jobId) {
205
+ const map = this.jobFailureAnalysis.get(jobId);
206
+ if (!map) {
207
+ return {};
208
+ }
209
+ const reasons = {};
210
+ for (const [clientId, analysis] of map.entries()) {
211
+ reasons[clientId] = analysis.reason;
212
+ }
213
+ return reasons;
214
+ }
215
+ addPermanentExclusion(job, clientId) {
216
+ if (!job.options.excludeClientIds) {
217
+ job.options.excludeClientIds = [];
218
+ }
219
+ if (!job.options.excludeClientIds.includes(clientId)) {
220
+ job.options.excludeClientIds.push(clientId);
221
+ }
222
+ }
223
+ hasRetryPath(job) {
224
+ const map = this.jobFailureAnalysis.get(job.jobId);
225
+ const exclude = new Set(job.options.excludeClientIds ?? []);
226
+ const preferred = job.options.preferredClientIds?.length
227
+ ? new Set(job.options.preferredClientIds)
228
+ : null;
229
+ for (const client of this.clientManager.list()) {
230
+ if (preferred && !preferred.has(client.id)) {
231
+ continue;
232
+ }
233
+ if (exclude.has(client.id)) {
234
+ continue;
235
+ }
236
+ const analysis = map?.get(client.id);
237
+ if (analysis?.blockClient === "permanent") {
238
+ continue;
239
+ }
240
+ return true;
241
+ }
242
+ return false;
243
+ }
244
+ createWorkflowNotSupportedError(job, cause) {
245
+ const reasons = this.collectFailureReasons(job.jobId);
246
+ const message = `Workflow ${job.workflowHash} is not supported by any connected clients`;
247
+ return new WorkflowNotSupportedError(message, {
248
+ workflowHash: job.workflowHash,
249
+ reasons,
250
+ cause
251
+ });
252
+ }
187
253
  async processQueue() {
188
254
  if (this.processing) {
189
255
  return;
@@ -265,6 +331,121 @@ export class WorkflowPool extends TypedEventTarget {
265
331
  promptBuilder = promptBuilder.setOutputNode(alias, nodeId);
266
332
  }
267
333
  const wrapper = new CallWrapper(client, promptBuilder);
334
+ // Setup profiling if enabled
335
+ const profiler = this.opts.enableProfiling
336
+ ? new JobProfiler(job.enqueuedAt, workflowPayload)
337
+ : undefined;
338
+ // Setup node execution timeout tracking
339
+ const nodeExecutionTimeout = this.opts.nodeExecutionTimeoutMs ?? 300000; // 5 minutes default
340
+ let nodeTimeoutId;
341
+ let lastNodeStartTime;
342
+ let currentExecutingNode = null;
343
+ const resetNodeTimeout = (nodeName) => {
344
+ if (nodeTimeoutId) {
345
+ clearTimeout(nodeTimeoutId);
346
+ nodeTimeoutId = undefined;
347
+ }
348
+ if (nodeExecutionTimeout > 0 && nodeName !== null) {
349
+ lastNodeStartTime = Date.now();
350
+ currentExecutingNode = nodeName || null;
351
+ nodeTimeoutId = setTimeout(() => {
352
+ const elapsed = Date.now() - (lastNodeStartTime || 0);
353
+ const nodeInfo = currentExecutingNode ? ` (node: ${currentExecutingNode})` : '';
354
+ completionError = new Error(`Node execution timeout: took longer than ${nodeExecutionTimeout}ms${nodeInfo}. ` +
355
+ `Actual time: ${elapsed}ms. Server may be stuck or node is too slow for configured timeout.`);
356
+ resolveCompletion?.();
357
+ }, nodeExecutionTimeout);
358
+ }
359
+ };
360
+ const clearNodeTimeout = () => {
361
+ if (nodeTimeoutId) {
362
+ clearTimeout(nodeTimeoutId);
363
+ nodeTimeoutId = undefined;
364
+ }
365
+ currentExecutingNode = null;
366
+ lastNodeStartTime = undefined;
367
+ };
368
+ // Setup profiling event listeners on the raw ComfyUI client
369
+ if (profiler) {
370
+ const onExecutionStart = (event) => {
371
+ const promptId = event.detail?.prompt_id;
372
+ if (promptId) {
373
+ profiler.onExecutionStart(promptId);
374
+ }
375
+ };
376
+ const onExecutionCached = (event) => {
377
+ const nodes = event.detail?.nodes;
378
+ if (Array.isArray(nodes)) {
379
+ profiler.onCachedNodes(nodes.map(String));
380
+ }
381
+ };
382
+ const onExecuting = (event) => {
383
+ const node = event.detail?.node;
384
+ if (node === null) {
385
+ // Workflow completed
386
+ profiler.onExecutionComplete();
387
+ }
388
+ else if (node !== undefined) {
389
+ profiler.onNodeExecuting(String(node));
390
+ }
391
+ };
392
+ const onExecutionError = (event) => {
393
+ const detail = event.detail || {};
394
+ if (detail.node !== undefined) {
395
+ profiler.onNodeError(String(detail.node), detail.exception_message || 'Execution error');
396
+ }
397
+ };
398
+ // Attach listeners to client
399
+ client.addEventListener('execution_start', onExecutionStart);
400
+ client.addEventListener('execution_cached', onExecutionCached);
401
+ client.addEventListener('executing', onExecuting);
402
+ client.addEventListener('execution_error', onExecutionError);
403
+ // Cleanup function to remove listeners
404
+ const cleanupProfiler = () => {
405
+ client.removeEventListener('execution_start', onExecutionStart);
406
+ client.removeEventListener('execution_cached', onExecutionCached);
407
+ client.removeEventListener('executing', onExecuting);
408
+ client.removeEventListener('execution_error', onExecutionError);
409
+ };
410
+ // Ensure cleanup happens when job finishes
411
+ wrapper.onFinished(() => cleanupProfiler());
412
+ wrapper.onFailed(() => cleanupProfiler());
413
+ }
414
+ // Setup node execution timeout listeners (always active if timeout > 0)
415
+ const onNodeExecuting = (event) => {
416
+ const node = event.detail?.node;
417
+ if (node === null) {
418
+ // Workflow completed - clear timeout
419
+ clearNodeTimeout();
420
+ }
421
+ else if (node !== undefined) {
422
+ // New node started - reset timeout
423
+ resetNodeTimeout(String(node));
424
+ }
425
+ };
426
+ const onNodeProgress = (event) => {
427
+ // Progress event means node is still working - reset timeout
428
+ if (event.detail?.node) {
429
+ resetNodeTimeout(String(event.detail.node));
430
+ }
431
+ };
432
+ const onExecutionStarted = (event) => {
433
+ // Execution started - reset timeout for first node
434
+ resetNodeTimeout('execution_start');
435
+ };
436
+ if (nodeExecutionTimeout > 0) {
437
+ client.addEventListener('execution_start', onExecutionStarted);
438
+ client.addEventListener('executing', onNodeExecuting);
439
+ client.addEventListener('progress', onNodeProgress);
440
+ }
441
+ const cleanupNodeTimeout = () => {
442
+ clearNodeTimeout();
443
+ if (nodeExecutionTimeout > 0) {
444
+ client.removeEventListener('execution_start', onExecutionStarted);
445
+ client.removeEventListener('executing', onNodeExecuting);
446
+ client.removeEventListener('progress', onNodeProgress);
447
+ }
448
+ };
268
449
  let pendingSettled = false;
269
450
  let resolvePending;
270
451
  let rejectPending;
@@ -283,10 +464,9 @@ export class WorkflowPool extends TypedEventTarget {
283
464
  };
284
465
  });
285
466
  let resolveCompletion;
286
- let rejectCompletion;
287
- const completionPromise = new Promise((resolve, reject) => {
467
+ let completionError;
468
+ const completionPromise = new Promise((resolve) => {
288
469
  resolveCompletion = resolve;
289
- rejectCompletion = reject;
290
470
  });
291
471
  let jobStartedDispatched = false;
292
472
  wrapper.onProgress((progress, promptId) => {
@@ -298,6 +478,10 @@ export class WorkflowPool extends TypedEventTarget {
298
478
  jobStartedDispatched = true;
299
479
  this.dispatchEvent(new CustomEvent("job:started", { detail: { job } }));
300
480
  }
481
+ // Feed progress to profiler
482
+ if (profiler) {
483
+ profiler.onProgress(progress);
484
+ }
301
485
  this.dispatchEvent(new CustomEvent("job:progress", {
302
486
  detail: { jobId: job.jobId, clientId, progress }
303
487
  }));
@@ -374,20 +558,53 @@ export class WorkflowPool extends TypedEventTarget {
374
558
  }
375
559
  job.result = resultPayload;
376
560
  job.completedAt = Date.now();
561
+ this.clearJobFailures(job.jobId);
562
+ // Cleanup timeouts
563
+ cleanupNodeTimeout();
564
+ // Attach profiling stats if profiling was enabled
565
+ if (profiler) {
566
+ job.profileStats = profiler.getStats();
567
+ }
568
+ completionError = undefined;
377
569
  this.dispatchEvent(new CustomEvent("job:completed", { detail: { job } }));
378
570
  resolveCompletion?.();
379
571
  });
380
572
  wrapper.onFailed((error, promptId) => {
573
+ console.log("[debug] wrapper.onFailed", job.jobId, error.name);
381
574
  if (!job.promptId && promptId) {
382
575
  job.promptId = promptId;
383
576
  }
384
577
  job.lastError = error;
578
+ // Cleanup timeouts
579
+ cleanupNodeTimeout();
385
580
  rejectPending?.(error);
386
- rejectCompletion?.(error);
581
+ completionError = error;
582
+ console.log("[debug] resolveCompletion available", Boolean(resolveCompletion));
583
+ resolveCompletion?.();
387
584
  });
388
585
  try {
389
586
  const exec = wrapper.run();
390
- await pendingPromise;
587
+ console.log("[debug] wrapper.run() returned", exec);
588
+ exec.then((value) => console.log("[debug] exec promise resolved", job.jobId, value), (err) => console.log("[debug] exec promise rejected", job.jobId, err));
589
+ // Add timeout for execution start to prevent jobs getting stuck
590
+ const executionStartTimeout = this.opts.executionStartTimeoutMs ?? 5000;
591
+ let pendingTimeoutId;
592
+ if (executionStartTimeout > 0) {
593
+ const pendingWithTimeout = Promise.race([
594
+ pendingPromise,
595
+ new Promise((_, reject) => {
596
+ pendingTimeoutId = setTimeout(() => {
597
+ reject(new Error(`Execution failed to start within ${executionStartTimeout}ms. ` +
598
+ `Server may be stuck or unresponsive.`));
599
+ }, executionStartTimeout);
600
+ })
601
+ ]);
602
+ await pendingWithTimeout;
603
+ clearTimeout(pendingTimeoutId);
604
+ }
605
+ else {
606
+ await pendingPromise;
607
+ }
391
608
  this.activeJobs.set(job.jobId, {
392
609
  reservation,
393
610
  job,
@@ -395,6 +612,7 @@ export class WorkflowPool extends TypedEventTarget {
395
612
  release,
396
613
  cancel: async () => {
397
614
  try {
615
+ wrapper.cancel("workflow pool cancel");
398
616
  if (job.promptId) {
399
617
  await client.ext.queue.interrupt(job.promptId);
400
618
  }
@@ -407,21 +625,20 @@ export class WorkflowPool extends TypedEventTarget {
407
625
  }
408
626
  });
409
627
  const result = await exec;
628
+ console.log("[debug] exec result", job.jobId, result);
410
629
  if (result === false) {
411
- // Execution failed - try to get the error from completionPromise rejection
412
- try {
413
- await completionPromise;
414
- }
415
- catch (err) {
416
- throw err;
417
- }
418
- throw job.lastError ?? new Error("Execution failed");
630
+ await completionPromise;
631
+ const errorToThrow = (completionError instanceof Error ? completionError : undefined) ??
632
+ (job.lastError instanceof Error ? job.lastError : undefined) ??
633
+ new Error("Execution failed");
634
+ throw errorToThrow;
419
635
  }
420
636
  await completionPromise;
421
637
  await this.queue.commit(reservation.reservationId);
422
638
  release({ success: true });
423
639
  }
424
640
  catch (error) {
641
+ console.log("[debug] runJob catch", job.jobId, error?.name);
425
642
  const latestStatus = this.jobStore.get(job.jobId)?.status;
426
643
  if (latestStatus === "cancelled") {
427
644
  release({ success: false });
@@ -429,9 +646,16 @@ export class WorkflowPool extends TypedEventTarget {
429
646
  }
430
647
  job.lastError = error;
431
648
  job.status = "failed";
432
- this.clientManager.recordFailure(clientId, job, error);
433
649
  const remainingAttempts = job.options.maxAttempts - job.attempts;
434
- const willRetry = remainingAttempts > 0;
650
+ const failureAnalysis = analyzeWorkflowFailure(error);
651
+ this.rememberJobFailure(job, clientId, failureAnalysis);
652
+ if (failureAnalysis.blockClient === "permanent") {
653
+ this.addPermanentExclusion(job, clientId);
654
+ reservation.payload.options.excludeClientIds = [...(job.options.excludeClientIds ?? [])];
655
+ }
656
+ this.clientManager.recordFailure(clientId, job, error);
657
+ const hasRetryPath = this.hasRetryPath(job);
658
+ const willRetry = failureAnalysis.retryable && remainingAttempts > 0 && hasRetryPath;
435
659
  this.dispatchEvent(new CustomEvent("job:failed", {
436
660
  detail: { job, willRetry }
437
661
  }));
@@ -444,6 +668,7 @@ export class WorkflowPool extends TypedEventTarget {
444
668
  job.startedAt = undefined;
445
669
  job.completedAt = undefined;
446
670
  job.result = undefined;
671
+ reservation.payload.options.excludeClientIds = [...(job.options.excludeClientIds ?? [])];
447
672
  await this.queue.retry(reservation.reservationId, { delayMs: delay });
448
673
  this.dispatchEvent(new CustomEvent("job:queued", { detail: { job } }));
449
674
  this.scheduleProcess(delay);
@@ -451,7 +676,12 @@ export class WorkflowPool extends TypedEventTarget {
451
676
  }
452
677
  else {
453
678
  job.completedAt = Date.now();
454
- await this.queue.discard(reservation.reservationId, error);
679
+ const finalError = !hasRetryPath && failureAnalysis.type === "client_incompatible" && this.jobFailureAnalysis.has(job.jobId)
680
+ ? this.createWorkflowNotSupportedError(job, error)
681
+ : error;
682
+ job.lastError = finalError;
683
+ await this.queue.discard(reservation.reservationId, finalError);
684
+ this.clearJobFailures(job.jobId);
455
685
  release({ success: false });
456
686
  }
457
687
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ export class SmartFailoverStrategy {
46
46
  }
47
47
  }
48
48
  resetForWorkflow(workflowHash) {
49
- for (const [, map] of this.workflowFailures) {
49
+ for (const [, map] of Array.from(this.workflowFailures)) {
50
50
  map.delete(workflowHash);
51
51
  }
52
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SmartFailoverStrategy.js","sourceRoot":"","sources":["../../../src/pool/failover/SmartFailoverStrategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SmartFailoverStrategy.js","sourceRoot":"","sources":["../../../src/pool/failover/SmartFailoverStrategy.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,5 @@ export type { QueueAdapter, QueueReservation, QueueStats } from "./queue/QueueAd
6
6
  export { MemoryQueueAdapter } from "./queue/adapters/memory.js";
7
7
  export type { FailoverStrategy } from "./failover/Strategy.js";
8
8
  export { SmartFailoverStrategy } from "./failover/SmartFailoverStrategy.js";
9
+ export type { JobProfileStats, NodeExecutionProfile } from "./profiling/JobProfiler.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Job Profiler - Automatic per-node execution profiling for WorkflowPool
3
+ * =======================================================================
4
+ *
5
+ * Captures detailed execution metrics for workflow jobs automatically:
6
+ * - Per-node execution timing
7
+ * - Progress tracking for nodes that emit progress events
8
+ * - Execution order and dependencies
9
+ * - Node types and metadata
10
+ *
11
+ * Usage:
12
+ * ```ts
13
+ * const pool = new WorkflowPool(clients, { enableProfiling: true });
14
+ * const jobId = await pool.enqueue(workflow);
15
+ *
16
+ * pool.on('job:completed', (event) => {
17
+ * console.log(event.detail.job.profileStats);
18
+ * });
19
+ * ```
20
+ */
21
+ import type { NodeProgress } from "../../types/api.js";
22
+ export interface NodeExecutionProfile {
23
+ /** Node ID */
24
+ nodeId: string;
25
+ /** Node class type (e.g., KSampler, VAELoader) */
26
+ type?: string;
27
+ /** Node title/label */
28
+ title?: string;
29
+ /** Timestamp when node started executing (ms since epoch) */
30
+ startedAt?: number;
31
+ /** Timestamp when node completed (ms since epoch) */
32
+ completedAt?: number;
33
+ /** Execution duration in milliseconds */
34
+ duration?: number;
35
+ /** Progress events captured for this node */
36
+ progressEvents?: Array<{
37
+ timestamp: number;
38
+ value: number;
39
+ max: number;
40
+ }>;
41
+ /** Whether this node was cached (instant execution) */
42
+ cached: boolean;
43
+ /** Execution status */
44
+ status: 'pending' | 'executing' | 'completed' | 'cached' | 'failed';
45
+ /** Error message if failed */
46
+ error?: string;
47
+ }
48
+ export interface JobProfileStats {
49
+ /** Prompt ID from ComfyUI */
50
+ promptId?: string;
51
+ /** Total execution time from queue to completion (ms) */
52
+ totalDuration: number;
53
+ /** Time spent in queue before execution started (ms) */
54
+ queueTime: number;
55
+ /** Actual execution time (ms) */
56
+ executionTime: number;
57
+ /** Timestamp when job was queued */
58
+ queuedAt: number;
59
+ /** Timestamp when execution started */
60
+ startedAt?: number;
61
+ /** Timestamp when execution completed */
62
+ completedAt: number;
63
+ /** Per-node execution profiles */
64
+ nodes: NodeExecutionProfile[];
65
+ /** Execution timeline summary */
66
+ summary: {
67
+ /** Total number of nodes in workflow */
68
+ totalNodes: number;
69
+ /** Number of nodes actually executed */
70
+ executedNodes: number;
71
+ /** Number of cached nodes */
72
+ cachedNodes: number;
73
+ /** Number of failed nodes */
74
+ failedNodes: number;
75
+ /** Slowest nodes (top 5) */
76
+ slowestNodes: Array<{
77
+ nodeId: string;
78
+ type?: string;
79
+ title?: string;
80
+ duration: number;
81
+ }>;
82
+ /** Nodes that emitted progress events */
83
+ progressNodes: string[];
84
+ };
85
+ }
86
+ /**
87
+ * JobProfiler tracks execution metrics for a single workflow job.
88
+ */
89
+ export declare class JobProfiler {
90
+ private queuedAt;
91
+ private startedAt?;
92
+ private completedAt?;
93
+ private promptId?;
94
+ private nodeProfiles;
95
+ private lastExecutingNode;
96
+ constructor(queuedAt: number, workflowJson?: Record<string, any>);
97
+ /**
98
+ * Record execution start event
99
+ */
100
+ onExecutionStart(promptId: string): void;
101
+ /**
102
+ * Record cached nodes
103
+ */
104
+ onCachedNodes(nodeIds: string[]): void;
105
+ /**
106
+ * Record node execution start
107
+ */
108
+ onNodeExecuting(nodeId: string): void;
109
+ /**
110
+ * Record node completion (when next node starts or execution ends)
111
+ */
112
+ private completeNode;
113
+ /**
114
+ * Record execution end (node: null event)
115
+ */
116
+ onExecutionComplete(): void;
117
+ /**
118
+ * Record progress event for a node
119
+ */
120
+ onProgress(progress: NodeProgress): void;
121
+ /**
122
+ * Record node execution error
123
+ */
124
+ onNodeError(nodeId: string, error: string): void;
125
+ /**
126
+ * Generate final profile statistics
127
+ */
128
+ getStats(): JobProfileStats;
129
+ }
130
+ //# sourceMappingURL=JobProfiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobProfiler.d.ts","sourceRoot":"","sources":["../../../src/pool/profiling/JobProfiler.ts"],"names":[],"mappings":"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"}