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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.d.ts +18 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/multipool/client-registry.js +152 -152
- package/dist/multipool/helpers.js +52 -52
- package/dist/multipool/helpers.js.map +1 -1
- package/dist/multipool/index.js +2 -2
- package/dist/multipool/interfaces.d.ts +29 -12
- package/dist/multipool/interfaces.d.ts.map +1 -1
- package/dist/multipool/interfaces.js +1 -1
- package/dist/multipool/job-state-registry.js +282 -282
- package/dist/multipool/multi-workflow-pool.d.ts +102 -42
- package/dist/multipool/multi-workflow-pool.d.ts.map +1 -1
- package/dist/multipool/multi-workflow-pool.js +424 -313
- package/dist/multipool/multi-workflow-pool.js.map +1 -1
- package/dist/multipool/pool-event-manager.js +27 -27
- package/dist/multipool/tests/client-registry-api-demo.d.ts +7 -0
- package/dist/multipool/tests/client-registry-api-demo.d.ts.map +1 -0
- package/dist/multipool/tests/client-registry-api-demo.js +136 -0
- package/dist/multipool/tests/client-registry-api-demo.js.map +1 -0
- package/dist/multipool/tests/client-registry.spec.d.ts +2 -0
- package/dist/multipool/tests/client-registry.spec.d.ts.map +1 -0
- package/dist/multipool/tests/client-registry.spec.js +191 -0
- package/dist/multipool/tests/client-registry.spec.js.map +1 -0
- package/dist/multipool/tests/error-classification-tests.js +373 -373
- package/dist/multipool/tests/event-forwarding-demo.d.ts +7 -0
- package/dist/multipool/tests/event-forwarding-demo.d.ts.map +1 -0
- package/dist/multipool/tests/event-forwarding-demo.js +88 -0
- package/dist/multipool/tests/event-forwarding-demo.js.map +1 -0
- package/dist/multipool/tests/helpers.spec.d.ts +2 -0
- package/dist/multipool/tests/helpers.spec.d.ts.map +1 -0
- package/dist/multipool/tests/helpers.spec.js +100 -0
- package/dist/multipool/tests/helpers.spec.js.map +1 -0
- package/dist/multipool/tests/job-queue-processor.spec.d.ts +2 -0
- package/dist/multipool/tests/job-queue-processor.spec.d.ts.map +1 -0
- package/dist/multipool/tests/job-queue-processor.spec.js +89 -0
- package/dist/multipool/tests/job-queue-processor.spec.js.map +1 -0
- package/dist/multipool/tests/job-state-registry.spec.d.ts +2 -0
- package/dist/multipool/tests/job-state-registry.spec.d.ts.map +1 -0
- package/dist/multipool/tests/job-state-registry.spec.js +143 -0
- package/dist/multipool/tests/job-state-registry.spec.js.map +1 -0
- package/dist/multipool/tests/multipool-basic.js +141 -141
- package/dist/multipool/tests/profiling-demo.js +87 -87
- package/dist/multipool/tests/profiling-demo.js.map +1 -1
- package/dist/multipool/tests/two-stage-edit-simulation.js +298 -298
- package/dist/multipool/tests/two-stage-edit-simulation.js.map +1 -1
- 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,
|
|
1
|
+
{"version":3,"file":"multi-workflow-pool.d.ts","sourceRoot":"","sources":["../../src/multipool/multi-workflow-pool.ts"],"names":[],"mappings":"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"}
|