comfyui-node 1.6.2 → 1.6.4

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 (69) hide show
  1. package/README.md +50 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/index.d.ts +18 -13
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +10 -7
  6. package/dist/index.js.map +1 -1
  7. package/dist/multipool/client-registry.d.ts +23 -32
  8. package/dist/multipool/client-registry.d.ts.map +1 -1
  9. package/dist/multipool/client-registry.js +152 -152
  10. package/dist/multipool/client-registry.js.map +1 -1
  11. package/dist/multipool/helpers.js +52 -52
  12. package/dist/multipool/helpers.js.map +1 -1
  13. package/dist/multipool/index.js +2 -2
  14. package/dist/multipool/interfaces.d.ts +135 -12
  15. package/dist/multipool/interfaces.d.ts.map +1 -1
  16. package/dist/multipool/interfaces.js +1 -1
  17. package/dist/multipool/job-profiler.d.ts +64 -127
  18. package/dist/multipool/job-profiler.d.ts.map +1 -1
  19. package/dist/multipool/job-profiler.js +221 -221
  20. package/dist/multipool/job-profiler.js.map +1 -1
  21. package/dist/multipool/job-queue-processor.d.ts +23 -27
  22. package/dist/multipool/job-queue-processor.d.ts.map +1 -1
  23. package/dist/multipool/job-queue-processor.js +196 -196
  24. package/dist/multipool/job-queue-processor.js.map +1 -1
  25. package/dist/multipool/job-state-registry.d.ts +42 -66
  26. package/dist/multipool/job-state-registry.d.ts.map +1 -1
  27. package/dist/multipool/job-state-registry.js +282 -282
  28. package/dist/multipool/job-state-registry.js.map +1 -1
  29. package/dist/multipool/multi-workflow-pool.d.ts +101 -42
  30. package/dist/multipool/multi-workflow-pool.d.ts.map +1 -1
  31. package/dist/multipool/multi-workflow-pool.js +424 -313
  32. package/dist/multipool/multi-workflow-pool.js.map +1 -1
  33. package/dist/multipool/pool-event-manager.d.ts +10 -10
  34. package/dist/multipool/pool-event-manager.d.ts.map +1 -1
  35. package/dist/multipool/pool-event-manager.js +27 -27
  36. package/dist/multipool/tests/client-registry-api-demo.d.ts +7 -0
  37. package/dist/multipool/tests/client-registry-api-demo.d.ts.map +1 -0
  38. package/dist/multipool/tests/client-registry-api-demo.js +136 -0
  39. package/dist/multipool/tests/client-registry-api-demo.js.map +1 -0
  40. package/dist/multipool/tests/client-registry.spec.d.ts +2 -0
  41. package/dist/multipool/tests/client-registry.spec.d.ts.map +1 -0
  42. package/dist/multipool/tests/client-registry.spec.js +191 -0
  43. package/dist/multipool/tests/client-registry.spec.js.map +1 -0
  44. package/dist/multipool/tests/error-classification-tests.js +373 -373
  45. package/dist/multipool/tests/event-forwarding-demo.d.ts +7 -0
  46. package/dist/multipool/tests/event-forwarding-demo.d.ts.map +1 -0
  47. package/dist/multipool/tests/event-forwarding-demo.js +88 -0
  48. package/dist/multipool/tests/event-forwarding-demo.js.map +1 -0
  49. package/dist/multipool/tests/helpers.spec.d.ts +2 -0
  50. package/dist/multipool/tests/helpers.spec.d.ts.map +1 -0
  51. package/dist/multipool/tests/helpers.spec.js +100 -0
  52. package/dist/multipool/tests/helpers.spec.js.map +1 -0
  53. package/dist/multipool/tests/job-queue-processor.spec.d.ts +2 -0
  54. package/dist/multipool/tests/job-queue-processor.spec.d.ts.map +1 -0
  55. package/dist/multipool/tests/job-queue-processor.spec.js +89 -0
  56. package/dist/multipool/tests/job-queue-processor.spec.js.map +1 -0
  57. package/dist/multipool/tests/job-state-registry.spec.d.ts +2 -0
  58. package/dist/multipool/tests/job-state-registry.spec.d.ts.map +1 -0
  59. package/dist/multipool/tests/job-state-registry.spec.js +143 -0
  60. package/dist/multipool/tests/job-state-registry.spec.js.map +1 -0
  61. package/dist/multipool/tests/multipool-basic.js +141 -141
  62. package/dist/multipool/tests/profiling-demo.js +87 -87
  63. package/dist/multipool/tests/profiling-demo.js.map +1 -1
  64. package/dist/multipool/tests/two-stage-edit-simulation.js +298 -298
  65. package/dist/multipool/tests/two-stage-edit-simulation.js.map +1 -1
  66. package/dist/multipool/workflow.d.ts +178 -178
  67. package/dist/multipool/workflow.d.ts.map +1 -1
  68. package/dist/multipool/workflow.js +333 -333
  69. package/package.json +1 -1
@@ -1,43 +1,102 @@
1
- import { JobResults } from "./job-state-registry.js";
2
- import { JobQueueProcessor } from "./job-queue-processor.js";
3
- import { Workflow } from "./workflow.js";
4
- import { MultiWorkflowPoolOptions, PoolEvent } from "./interfaces.js";
5
- /**
6
- * MultiWorkflowPool class to manage heterogeneous clusters of ComfyUI workers with different workflow capabilities.
7
- * Using a fully event driven architecture to handle client connections, job submissions, and failover strategies.
8
- * Zero polling is used; all operations are event driven. Maximizes responsiveness and scalability.
9
- */
10
- export declare class MultiWorkflowPool {
11
- private events;
12
- private clientRegistry;
13
- private jobRegistry;
14
- queues: Map<string, JobQueueProcessor>;
15
- options: Required<MultiWorkflowPoolOptions>;
16
- private logger;
17
- monitoringInterval?: Timer;
18
- constructor(options?: MultiWorkflowPoolOptions);
19
- init(): Promise<void>;
20
- shutdown(): Promise<void>;
21
- addClient(clientUrl: string, options?: {
22
- workflowAffinity: Workflow<any>[];
23
- priority?: number;
24
- }): void;
25
- removeClient(clientUrl: string): void;
26
- submitJob(workflow: Workflow<any>): Promise<string>;
27
- getJobStatus(jobId: string): import("./job-state-registry.js").JobStatus;
28
- cancelJob(jobId: string): Promise<void>;
29
- attachEventHook(event: string, listener: (e: PoolEvent) => void): void;
30
- private assertQueue;
31
- private attachHandlersToClient;
32
- private printStatusSummary;
33
- waitForJobCompletion(jobId: string): Promise<JobResults>;
34
- attachJobProgressListener(jobId: string, progressListener: (progress: {
35
- value: number;
36
- max: number;
37
- }) => void): void;
38
- attachJobPreviewListener(jobId: string, previewListener: (preview: {
39
- blob: Blob;
40
- metadata: any;
41
- }) => void): void;
42
- }
1
+ import { JobQueueProcessor } from "./job-queue-processor.js";
2
+ import { Workflow } from "./workflow.js";
3
+ import { MultiWorkflowPoolOptions, PoolEvent, JobResults } from "./interfaces.js";
4
+ /**
5
+ * MultiWorkflowPool class to manage heterogeneous clusters of ComfyUI workers with different workflow capabilities.
6
+ * Using a fully event driven architecture to handle client connections, job submissions, and failover strategies.
7
+ * Zero polling is used; all operations are event driven. Maximizes responsiveness and scalability.
8
+ */
9
+ export declare class MultiWorkflowPool {
10
+ private events;
11
+ private clientRegistry;
12
+ private jobRegistry;
13
+ queues: Map<string, JobQueueProcessor>;
14
+ options: Required<MultiWorkflowPoolOptions>;
15
+ private logger;
16
+ monitoringInterval?: Timer;
17
+ constructor(options?: MultiWorkflowPoolOptions);
18
+ init(): Promise<void>;
19
+ shutdown(): Promise<void>;
20
+ addClient(clientUrl: string, options?: {
21
+ workflowAffinity: Workflow<any>[];
22
+ priority?: number;
23
+ }): void;
24
+ removeClient(clientUrl: string): void;
25
+ submitJob(workflow: Workflow<any>): Promise<string>;
26
+ getJobStatus(jobId: string): import("./interfaces.js").JobStatus;
27
+ cancelJob(jobId: string): Promise<void>;
28
+ attachEventHook(event: string, listener: (e: PoolEvent) => void): void;
29
+ private assertQueue;
30
+ private attachHandlersToClient;
31
+ private printStatusSummary;
32
+ waitForJobCompletion(jobId: string): Promise<JobResults>;
33
+ attachJobProgressListener(jobId: string, progressListener: (progress: {
34
+ value: number;
35
+ max: number;
36
+ }) => void): void;
37
+ attachJobPreviewListener(jobId: string, previewListener: (preview: {
38
+ blob: Blob;
39
+ metadata: any;
40
+ }) => void): void;
41
+ /**
42
+ * Get a list of all registered clients with their current state
43
+ * @returns Array of client information objects
44
+ */
45
+ getClients(): Array<{
46
+ url: string;
47
+ nodeName: string;
48
+ state: "idle" | "busy" | "offline";
49
+ priority?: number;
50
+ workflowAffinityHashes?: string[];
51
+ }>;
52
+ /**
53
+ * Get information about a specific client by URL
54
+ * @param clientUrl - The URL of the client to query
55
+ * @returns Client information or null if not found
56
+ */
57
+ getClient(clientUrl: string): {
58
+ url: string;
59
+ nodeName: string;
60
+ state: "idle" | "busy" | "offline";
61
+ priority?: number;
62
+ workflowAffinityHashes?: string[];
63
+ } | null;
64
+ /**
65
+ * Get all clients that have affinity for a specific workflow
66
+ * @param workflow - The workflow to check affinity for
67
+ * @returns Array of client URLs that can handle this workflow
68
+ */
69
+ getClientsForWorkflow(workflow: Workflow<any>): string[];
70
+ /**
71
+ * Get all idle clients currently available for work
72
+ * @returns Array of idle client information
73
+ */
74
+ getIdleClients(): Array<{
75
+ url: string;
76
+ nodeName: string;
77
+ priority?: number;
78
+ }>;
79
+ /**
80
+ * Check if there are any clients available for a specific workflow
81
+ * @param workflow - The workflow to check
82
+ * @returns True if at least one client has affinity for this workflow
83
+ */
84
+ hasClientsForWorkflow(workflow: Workflow<any>): boolean;
85
+ /**
86
+ * Get statistics about the pool's current state
87
+ * @returns Pool statistics including client counts and queue depths
88
+ */
89
+ getPoolStats(): {
90
+ totalClients: number;
91
+ idleClients: number;
92
+ busyClients: number;
93
+ offlineClients: number;
94
+ totalQueues: number;
95
+ queues: Array<{
96
+ workflowHash: string;
97
+ pendingJobs: number;
98
+ type: "general" | "specific";
99
+ }>;
100
+ };
101
+ }
43
102
  //# sourceMappingURL=multi-workflow-pool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multi-workflow-pool.d.ts","sourceRoot":"","sources":["../../src/multipool/multi-workflow-pool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAoB,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGtE;;;;GAIG;AACH,qBAAa,iBAAiB;IAG5B,OAAO,CAAC,MAAM,CAAmB;IAGjC,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,WAAW,CAAmB;IAGtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAa;IAG5C,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAC;IAGnD,OAAO,CAAC,MAAM,CAAS;IAEvB,kBAAkB,CAAC,EAAE,KAAK,CAAC;gBAEf,OAAO,CAAC,EAAE,wBAAwB;IA4BxC,IAAI;IAyDJ,QAAQ;IA2Bd,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACrC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAID,YAAY,CAAC,SAAS,EAAE,MAAM;IAIxB,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC;IA0BvC,YAAY,CAAC,KAAK,EAAE,MAAM;IAIpB,SAAS,CAAC,KAAK,EAAE,MAAM;IAI7B,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI;IAO/D,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,sBAAsB;IAsG9B,OAAO,CAAC,kBAAkB;IAmCpB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI9D,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,QAAQ,EAAE;QACpE,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,KAAK,IAAI;IAIV,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,OAAO,EAAE;QACjE,IAAI,EAAE,IAAI,CAAC;QACX,QAAQ,EAAE,GAAG,CAAC;KACf,KAAK,IAAI;CAGX"}
1
+ {"version":3,"file":"multi-workflow-pool.d.ts","sourceRoot":"","sources":["../../src/multipool/multi-workflow-pool.ts"],"names":[],"mappings":"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"}