comfyui-node 1.6.2 → 1.6.3

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 (49) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/index.d.ts +18 -13
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +10 -7
  5. package/dist/index.js.map +1 -1
  6. package/dist/multipool/client-registry.js +152 -152
  7. package/dist/multipool/helpers.js +52 -52
  8. package/dist/multipool/helpers.js.map +1 -1
  9. package/dist/multipool/index.js +2 -2
  10. package/dist/multipool/interfaces.d.ts +29 -12
  11. package/dist/multipool/interfaces.d.ts.map +1 -1
  12. package/dist/multipool/interfaces.js +1 -1
  13. package/dist/multipool/job-state-registry.js +282 -282
  14. package/dist/multipool/multi-workflow-pool.d.ts +102 -42
  15. package/dist/multipool/multi-workflow-pool.d.ts.map +1 -1
  16. package/dist/multipool/multi-workflow-pool.js +424 -313
  17. package/dist/multipool/multi-workflow-pool.js.map +1 -1
  18. package/dist/multipool/pool-event-manager.js +27 -27
  19. package/dist/multipool/tests/client-registry-api-demo.d.ts +7 -0
  20. package/dist/multipool/tests/client-registry-api-demo.d.ts.map +1 -0
  21. package/dist/multipool/tests/client-registry-api-demo.js +136 -0
  22. package/dist/multipool/tests/client-registry-api-demo.js.map +1 -0
  23. package/dist/multipool/tests/client-registry.spec.d.ts +2 -0
  24. package/dist/multipool/tests/client-registry.spec.d.ts.map +1 -0
  25. package/dist/multipool/tests/client-registry.spec.js +191 -0
  26. package/dist/multipool/tests/client-registry.spec.js.map +1 -0
  27. package/dist/multipool/tests/error-classification-tests.js +373 -373
  28. package/dist/multipool/tests/event-forwarding-demo.d.ts +7 -0
  29. package/dist/multipool/tests/event-forwarding-demo.d.ts.map +1 -0
  30. package/dist/multipool/tests/event-forwarding-demo.js +88 -0
  31. package/dist/multipool/tests/event-forwarding-demo.js.map +1 -0
  32. package/dist/multipool/tests/helpers.spec.d.ts +2 -0
  33. package/dist/multipool/tests/helpers.spec.d.ts.map +1 -0
  34. package/dist/multipool/tests/helpers.spec.js +100 -0
  35. package/dist/multipool/tests/helpers.spec.js.map +1 -0
  36. package/dist/multipool/tests/job-queue-processor.spec.d.ts +2 -0
  37. package/dist/multipool/tests/job-queue-processor.spec.d.ts.map +1 -0
  38. package/dist/multipool/tests/job-queue-processor.spec.js +89 -0
  39. package/dist/multipool/tests/job-queue-processor.spec.js.map +1 -0
  40. package/dist/multipool/tests/job-state-registry.spec.d.ts +2 -0
  41. package/dist/multipool/tests/job-state-registry.spec.d.ts.map +1 -0
  42. package/dist/multipool/tests/job-state-registry.spec.js +143 -0
  43. package/dist/multipool/tests/job-state-registry.spec.js.map +1 -0
  44. package/dist/multipool/tests/multipool-basic.js +141 -141
  45. package/dist/multipool/tests/profiling-demo.js +87 -87
  46. package/dist/multipool/tests/profiling-demo.js.map +1 -1
  47. package/dist/multipool/tests/two-stage-edit-simulation.js +298 -298
  48. package/dist/multipool/tests/two-stage-edit-simulation.js.map +1 -1
  49. package/package.json +1 -1
@@ -1,43 +1,103 @@
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 { 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
+ /**
43
+ * Get a list of all registered clients with their current state
44
+ * @returns Array of client information objects
45
+ */
46
+ getClients(): Array<{
47
+ url: string;
48
+ nodeName: string;
49
+ state: "idle" | "busy" | "offline";
50
+ priority?: number;
51
+ workflowAffinityHashes?: string[];
52
+ }>;
53
+ /**
54
+ * Get information about a specific client by URL
55
+ * @param clientUrl - The URL of the client to query
56
+ * @returns Client information or null if not found
57
+ */
58
+ getClient(clientUrl: string): {
59
+ url: string;
60
+ nodeName: string;
61
+ state: "idle" | "busy" | "offline";
62
+ priority?: number;
63
+ workflowAffinityHashes?: string[];
64
+ } | null;
65
+ /**
66
+ * Get all clients that have affinity for a specific workflow
67
+ * @param workflow - The workflow to check affinity for
68
+ * @returns Array of client URLs that can handle this workflow
69
+ */
70
+ getClientsForWorkflow(workflow: Workflow<any>): string[];
71
+ /**
72
+ * Get all idle clients currently available for work
73
+ * @returns Array of idle client information
74
+ */
75
+ getIdleClients(): Array<{
76
+ url: string;
77
+ nodeName: string;
78
+ priority?: number;
79
+ }>;
80
+ /**
81
+ * Check if there are any clients available for a specific workflow
82
+ * @param workflow - The workflow to check
83
+ * @returns True if at least one client has affinity for this workflow
84
+ */
85
+ hasClientsForWorkflow(workflow: Workflow<any>): boolean;
86
+ /**
87
+ * Get statistics about the pool's current state
88
+ * @returns Pool statistics including client counts and queue depths
89
+ */
90
+ getPoolStats(): {
91
+ totalClients: number;
92
+ idleClients: number;
93
+ busyClients: number;
94
+ offlineClients: number;
95
+ totalQueues: number;
96
+ queues: Array<{
97
+ workflowHash: string;
98
+ pendingJobs: number;
99
+ type: "general" | "specific";
100
+ }>;
101
+ };
102
+ }
43
103
  //# 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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"}