comfyui-node 1.6.6 → 1.7.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.
- package/LICENSE +20 -20
- package/README.md +342 -341
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/multipool/client-registry.d.ts +5 -5
- package/dist/multipool/client-registry.d.ts.map +1 -1
- package/dist/multipool/client-registry.js +17 -17
- package/dist/multipool/client-registry.js.map +1 -1
- package/dist/multipool/helpers.d.ts +4 -4
- package/dist/multipool/index.d.ts +2 -2
- package/dist/multipool/interfaces.d.ts +13 -2
- package/dist/multipool/interfaces.d.ts.map +1 -1
- package/dist/multipool/job-queue-processor.d.ts +4 -4
- package/dist/multipool/job-queue-processor.d.ts.map +1 -1
- package/dist/multipool/job-queue-processor.js +32 -31
- package/dist/multipool/job-queue-processor.js.map +1 -1
- package/dist/multipool/logger.d.ts +29 -29
- package/dist/multipool/multi-workflow-pool.d.ts +2 -3
- package/dist/multipool/multi-workflow-pool.d.ts.map +1 -1
- package/dist/multipool/multi-workflow-pool.js +50 -39
- package/dist/multipool/multi-workflow-pool.js.map +1 -1
- package/dist/multipool/tests/client-registry-api-demo.js +1 -3
- package/dist/multipool/tests/client-registry-api-demo.js.map +1 -1
- package/dist/multipool/tests/client-registry.spec.js +6 -7
- package/dist/multipool/tests/client-registry.spec.js.map +1 -1
- package/dist/multipool/tests/error-classification-tests.d.ts +1 -1
- package/dist/multipool/tests/event-forwarding-demo.js +1 -3
- package/dist/multipool/tests/event-forwarding-demo.js.map +1 -1
- package/dist/multipool/tests/job-queue-processor.spec.js +8 -8
- package/dist/multipool/tests/job-queue-processor.spec.js.map +1 -1
- package/dist/multipool/tests/job-state-registry.d.ts +16 -16
- package/dist/multipool/tests/job-state-registry.js +23 -23
- package/dist/multipool/tests/job-state-registry.spec.js +5 -4
- package/dist/multipool/tests/job-state-registry.spec.js.map +1 -1
- package/dist/multipool/tests/multipool-basic.d.ts +11 -11
- package/dist/multipool/tests/profiling-demo.d.ts +6 -6
- package/dist/multipool/tests/profiling-demo.js +1 -2
- package/dist/multipool/tests/profiling-demo.js.map +1 -1
- package/dist/multipool/tests/prompt-generator.d.ts +9 -9
- package/dist/multipool/tests/test-helpers.d.ts +3 -3
- package/dist/multipool/tests/two-stage-edit-simulation.d.ts +31 -31
- package/dist/multipool/tests/two-stage-edit-simulation.d.ts.map +1 -1
- package/dist/multipool/tests/two-stage-edit-simulation.js +1 -2
- package/dist/multipool/tests/two-stage-edit-simulation.js.map +1 -1
- package/dist/pool/SmartPool.d.ts +143 -143
- package/dist/pool/SmartPool.js +676 -676
- package/dist/pool/SmartPoolV2.d.ts +119 -119
- package/dist/pool/SmartPoolV2.js +586 -586
- package/dist/pool/WorkflowPool.d.ts +202 -202
- package/dist/pool/client/ClientManager.d.ts +86 -86
- package/dist/pool/index.d.ts +9 -9
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export { isModelLoadingNode, workflowContainsModelLoading, getModelLoadingNodes,
|
|
|
16
16
|
export type { StorageType } from "./utils/model-loading.js";
|
|
17
17
|
export { MultiWorkflowPool } from "./multipool/index.js";
|
|
18
18
|
export { Workflow as MultiWorkflow } from "./multipool/workflow.js";
|
|
19
|
-
export type { PoolEvent, ClientEventPayload, MultiWorkflowPoolOptions } from "./multipool/interfaces.js";
|
|
19
|
+
export type { PoolEvent, ClientEventPayload, MultiWorkflowPoolOptions, SubmitJobOptions } from "./multipool/interfaces.js";
|
|
20
20
|
export type { JobResults, JobState, JobStatus as MultiJobStatus, JobResultStatus } from "./multipool/interfaces.js";
|
|
21
21
|
export type { JobProfileStats as MultiJobProfileStats } from "./multipool/interfaces.js";
|
|
22
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,SAAS,IAAI,aAAa,EAC1B,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGlC,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,EACpB,wBAAwB,EACxB,gCAAgC,EAChC,mCAAmC,EACnC,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,SAAS,IAAI,aAAa,EAC1B,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGlC,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,EACpB,wBAAwB,EACxB,gCAAgC,EAChC,mCAAmC,EACnC,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC3H,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,IAAI,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACpH,YAAY,EAAE,eAAe,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { MultiWorkflowPool } from "./multi-workflow-pool.js";
|
|
2
2
|
import { Workflow } from "./workflow.js";
|
|
3
|
-
import { Logger } from "./logger.js";
|
|
4
3
|
import { EnhancedClient } from "./interfaces.js";
|
|
4
|
+
import { PoolEventManager } from "./pool-event-manager.js";
|
|
5
5
|
export declare class ClientRegistry {
|
|
6
6
|
pool: MultiWorkflowPool;
|
|
7
|
-
private
|
|
7
|
+
private events;
|
|
8
8
|
clients: Map<string, EnhancedClient>;
|
|
9
9
|
workflowAffinityMap: Map<string, Set<string>>;
|
|
10
|
-
constructor(pool: MultiWorkflowPool,
|
|
10
|
+
constructor(pool: MultiWorkflowPool, events: PoolEventManager);
|
|
11
11
|
addClient(clientUrl: string, options?: {
|
|
12
12
|
workflowAffinity: Workflow[];
|
|
13
13
|
priority?: number;
|
|
14
14
|
}): void;
|
|
15
15
|
removeClient(clientUrl: string): void;
|
|
16
16
|
getQueueStatus(clientUrl: string): Promise<import("../types/api.js").QueueResponse>;
|
|
17
|
-
getOptimalClient(workflow: Workflow): EnhancedClient | null;
|
|
17
|
+
getOptimalClient(workflow: Workflow, priorityOverrides?: Map<string, number>): EnhancedClient | null;
|
|
18
18
|
hasClientsForWorkflow(workflowHash: string): boolean;
|
|
19
|
-
getOptimalIdleClient(workflow: Workflow): Promise<EnhancedClient | null>;
|
|
19
|
+
getOptimalIdleClient(workflow: Workflow, priorityOverrides?: Map<string, number>): Promise<EnhancedClient | null>;
|
|
20
20
|
private checkClientQueueState;
|
|
21
21
|
markClientIncompatibleWithWorkflow(url: string, structureHash: string | undefined): void;
|
|
22
22
|
getAllEligibleClientsForWorkflow(workflow: Workflow): EnhancedClient[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-registry.d.ts","sourceRoot":"","sources":["../../src/multipool/client-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client-registry.d.ts","sourceRoot":"","sources":["../../src/multipool/client-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,qBAAa,cAAc;IAEzB,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,MAAM,CAAmB;IAEjC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAa;IAGjD,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAa;gBAE9C,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB;IAK7D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IA8B1F,YAAY,CAAC,SAAS,EAAE,MAAM;IAIxB,cAAc,CAAC,SAAS,EAAE,MAAM;IAQtC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAsC5E,qBAAqB,CAAC,YAAY,EAAE,MAAM;IAMpC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;YA6BxE,qBAAqB;IAcnC,kCAAkC,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS;IAcjF,gCAAgC,CAAC,QAAQ,EAAE,QAAQ;CAapD"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { ComfyApi } from "../client.js";
|
|
2
2
|
export class ClientRegistry {
|
|
3
3
|
pool;
|
|
4
|
-
|
|
4
|
+
events;
|
|
5
5
|
clients = new Map();
|
|
6
6
|
// Maps a workflow structure hash to a set of client URLs that have affinity for that workflow
|
|
7
7
|
workflowAffinityMap = new Map();
|
|
8
|
-
constructor(pool,
|
|
8
|
+
constructor(pool, events) {
|
|
9
9
|
this.pool = pool;
|
|
10
|
-
this.
|
|
10
|
+
this.events = events;
|
|
11
11
|
}
|
|
12
12
|
addClient(clientUrl, options) {
|
|
13
13
|
const comfyApi = new ComfyApi(clientUrl);
|
|
@@ -48,7 +48,7 @@ export class ClientRegistry {
|
|
|
48
48
|
}
|
|
49
49
|
return comfyApi.getQueue();
|
|
50
50
|
}
|
|
51
|
-
getOptimalClient(workflow) {
|
|
51
|
+
getOptimalClient(workflow, priorityOverrides) {
|
|
52
52
|
let workflowHash = workflow.structureHash;
|
|
53
53
|
if (!workflowHash) {
|
|
54
54
|
workflow.updateHash();
|
|
@@ -68,14 +68,14 @@ export class ClientRegistry {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
if (suitableClients.length === 0) {
|
|
71
|
-
this.
|
|
71
|
+
this.events.emitEvent({ type: "debug", payload: `No suitable clients found for workflow ${workflowHash}.` });
|
|
72
72
|
return null;
|
|
73
73
|
}
|
|
74
|
-
this.
|
|
75
|
-
// sort suitable clients by priority
|
|
74
|
+
this.events.emitEvent({ type: "debug", payload: `Suitable clients for workflow ${workflowHash}: ${suitableClients.map(value => value.nodeName).join(",")}` });
|
|
75
|
+
// sort suitable clients by priority (use override if provided, otherwise static priority)
|
|
76
76
|
suitableClients.sort((a, b) => {
|
|
77
|
-
const priorityA = a.priority ?? 0;
|
|
78
|
-
const priorityB = b.priority ?? 0;
|
|
77
|
+
const priorityA = priorityOverrides?.get(a.url) ?? a.priority ?? 0;
|
|
78
|
+
const priorityB = priorityOverrides?.get(b.url) ?? b.priority ?? 0;
|
|
79
79
|
return priorityB - priorityA; // higher priority first
|
|
80
80
|
});
|
|
81
81
|
return suitableClients.length > 0 ? suitableClients[0] : null;
|
|
@@ -85,8 +85,8 @@ export class ClientRegistry {
|
|
|
85
85
|
return clientSet !== undefined && clientSet.size > 0;
|
|
86
86
|
}
|
|
87
87
|
// Get an optimal idle client for a given workflow (used for general queue)
|
|
88
|
-
async getOptimalIdleClient(workflow) {
|
|
89
|
-
this.
|
|
88
|
+
async getOptimalIdleClient(workflow, priorityOverrides) {
|
|
89
|
+
this.events.emitEvent({ type: "debug", payload: `Searching for idle clients for workflow ${workflow.structureHash}...` });
|
|
90
90
|
// We can infer model capabilities from workflow and try to get the best idle client, based on other workflow affinities, for now lets pick any idle client
|
|
91
91
|
const idleClients = [];
|
|
92
92
|
for (const client of this.clients.values()) {
|
|
@@ -94,16 +94,16 @@ export class ClientRegistry {
|
|
|
94
94
|
// For the general queue, we need to check the actual queue state
|
|
95
95
|
await this.checkClientQueueState(client);
|
|
96
96
|
if (client.state === "idle") {
|
|
97
|
-
this.
|
|
97
|
+
this.events.emitEvent({ type: "debug", payload: `Client ${client.nodeName} is idle.` });
|
|
98
98
|
idleClients.push(client);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
this.
|
|
103
|
-
// sort idle clients by priority
|
|
102
|
+
this.events.emitEvent({ type: "debug", payload: `Idle clients available: ${idleClients.map(value => value.nodeName).join(",")}` });
|
|
103
|
+
// sort idle clients by priority (use override if provided, otherwise static priority)
|
|
104
104
|
idleClients.sort((a, b) => {
|
|
105
|
-
const priorityA = a.priority ?? 0;
|
|
106
|
-
const priorityB = b.priority ?? 0;
|
|
105
|
+
const priorityA = priorityOverrides?.get(a.url) ?? a.priority ?? 0;
|
|
106
|
+
const priorityB = priorityOverrides?.get(b.url) ?? b.priority ?? 0;
|
|
107
107
|
return priorityB - priorityA; // higher priority first
|
|
108
108
|
});
|
|
109
109
|
return idleClients.length > 0 ? idleClients[0] : null;
|
|
@@ -119,7 +119,7 @@ export class ClientRegistry {
|
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
catch (error) {
|
|
122
|
-
this.
|
|
122
|
+
this.events.emitEvent({ type: "error", payload: { message: `Error checking queue state for client ${client.nodeName}`, error } });
|
|
123
123
|
client.state = "offline";
|
|
124
124
|
}
|
|
125
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-registry.js","sourceRoot":"","sources":["../../src/multipool/client-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC,MAAM,OAAO,cAAc;IAEzB,IAAI,CAAoB;IAChB,MAAM,
|
|
1
|
+
{"version":3,"file":"client-registry.js","sourceRoot":"","sources":["../../src/multipool/client-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare function classifyFailure(error: any): {
|
|
2
|
-
type: 'connection' | 'workflow_incompatibility' | 'transient';
|
|
3
|
-
message: string;
|
|
4
|
-
};
|
|
1
|
+
export declare function classifyFailure(error: any): {
|
|
2
|
+
type: 'connection' | 'workflow_incompatibility' | 'transient';
|
|
3
|
+
message: string;
|
|
4
|
+
};
|
|
5
5
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { MultiWorkflowPool } from "./multi-workflow-pool.js";
|
|
2
|
-
export * from "./interfaces.js";
|
|
1
|
+
export { MultiWorkflowPool } from "./multi-workflow-pool.js";
|
|
2
|
+
export * from "./interfaces.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ImageInfo } from "../types/api.js";
|
|
2
2
|
import { ComfyApi } from "../client.js";
|
|
3
|
-
import { LogLevel } from "./logger.js";
|
|
4
3
|
import { Workflow } from "./workflow.js";
|
|
5
4
|
import { JobProfiler } from "./job-profiler.js";
|
|
6
5
|
/**
|
|
@@ -28,7 +27,6 @@ export interface MultiWorkflowPoolOptions {
|
|
|
28
27
|
connectionTimeoutMs?: number;
|
|
29
28
|
enableMonitoring?: boolean;
|
|
30
29
|
monitoringIntervalMs?: number;
|
|
31
|
-
logLevel?: LogLevel;
|
|
32
30
|
enableProfiling?: boolean;
|
|
33
31
|
}
|
|
34
32
|
export type ClientState = "idle" | "busy" | "offline";
|
|
@@ -104,10 +102,23 @@ export interface JobProfileStats {
|
|
|
104
102
|
progressNodes: string[];
|
|
105
103
|
};
|
|
106
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Options for submitting a job to the pool
|
|
107
|
+
*/
|
|
108
|
+
export interface SubmitJobOptions {
|
|
109
|
+
/**
|
|
110
|
+
* Per-client priority overrides for this job submission.
|
|
111
|
+
* Key: client URL, Value: priority number (higher = more preferred)
|
|
112
|
+
* These overrides take precedence over the static priorities set at addClient() time.
|
|
113
|
+
*/
|
|
114
|
+
priorityOverrides?: Map<string, number> | Record<string, number>;
|
|
115
|
+
}
|
|
107
116
|
export interface QueueJob {
|
|
108
117
|
jobId: string;
|
|
109
118
|
workflow: Workflow;
|
|
110
119
|
attempts: number;
|
|
120
|
+
/** Priority overrides for client selection */
|
|
121
|
+
priorityOverrides?: Map<string, number>;
|
|
111
122
|
}
|
|
112
123
|
export type JobStatus = "pending" | "assigned" | "running" | "completed" | "failed" | "canceled" | "no_clients";
|
|
113
124
|
export type JobResultStatus = "completed" | "failed" | "canceled";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/multipool/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/multipool/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { Workflow } from "./workflow.js";
|
|
2
2
|
import { JobStateRegistry } from "./job-state-registry.js";
|
|
3
3
|
import { ClientRegistry } from "./client-registry.js";
|
|
4
|
-
import { Logger } from "./logger.js";
|
|
5
4
|
import { QueueJob } from "./interfaces.js";
|
|
5
|
+
import { PoolEventManager } from "./pool-event-manager.js";
|
|
6
6
|
export declare class JobQueueProcessor {
|
|
7
7
|
private jobs;
|
|
8
8
|
private clientRegistry;
|
|
9
|
-
private
|
|
9
|
+
private events;
|
|
10
10
|
queue: Array<QueueJob>;
|
|
11
11
|
workflowHash: string;
|
|
12
12
|
isProcessing: boolean;
|
|
13
13
|
maxAttempts: number;
|
|
14
|
-
constructor(stateRegistry: JobStateRegistry, clientRegistry: ClientRegistry, workflowHash: string,
|
|
15
|
-
enqueueJob(newJobId: string, workflow: Workflow): Promise<void>;
|
|
14
|
+
constructor(stateRegistry: JobStateRegistry, clientRegistry: ClientRegistry, workflowHash: string, events: PoolEventManager);
|
|
15
|
+
enqueueJob(newJobId: string, workflow: Workflow, priorityOverrides?: Map<string, number>): Promise<void>;
|
|
16
16
|
processQueue(): Promise<void>;
|
|
17
17
|
private applyAutoSeed;
|
|
18
18
|
private runJobOnClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-queue-processor.d.ts","sourceRoot":"","sources":["../../src/multipool/job-queue-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,
|
|
1
|
+
{"version":3,"file":"job-queue-processor.d.ts","sourceRoot":"","sources":["../../src/multipool/job-queue-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAkB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAmB;IACjC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAM;IAC5B,YAAY,EAAE,MAAM,CAAM;IAC1B,YAAY,EAAE,OAAO,CAAS;IAC9B,WAAW,EAAE,MAAM,CAAK;gBAEZ,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;IAQrH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAYxF,YAAY;IAyDlB,OAAO,CAAC,aAAa;YAeP,cAAc;IAmD5B,UAAU,CAAC,KAAK,EAAE,MAAM;IAIxB,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,iBAAiB;YAuBX,oBAAoB;CAGnC"}
|
|
@@ -2,49 +2,49 @@ import { classifyFailure } from "./helpers.js";
|
|
|
2
2
|
export class JobQueueProcessor {
|
|
3
3
|
jobs;
|
|
4
4
|
clientRegistry;
|
|
5
|
-
|
|
5
|
+
events;
|
|
6
6
|
queue = [];
|
|
7
7
|
workflowHash = "";
|
|
8
8
|
isProcessing = false;
|
|
9
9
|
maxAttempts = 3;
|
|
10
|
-
constructor(stateRegistry, clientRegistry, workflowHash,
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
10
|
+
constructor(stateRegistry, clientRegistry, workflowHash, events) {
|
|
11
|
+
this.events = events;
|
|
12
|
+
this.events.emitEvent({ type: "debug", payload: `Creating JobQueueProcessor for workflow hash: '${workflowHash}'` });
|
|
13
13
|
this.clientRegistry = clientRegistry;
|
|
14
14
|
this.jobs = stateRegistry;
|
|
15
15
|
this.workflowHash = workflowHash;
|
|
16
16
|
}
|
|
17
|
-
async enqueueJob(newJobId, workflow) {
|
|
17
|
+
async enqueueJob(newJobId, workflow, priorityOverrides) {
|
|
18
18
|
// validate job state on registry
|
|
19
19
|
const jobStatus = this.jobs.getJobStatus(newJobId);
|
|
20
20
|
if (jobStatus !== "pending") {
|
|
21
21
|
throw new Error(`Cannot enqueue job ${newJobId} with status ${jobStatus}`);
|
|
22
22
|
}
|
|
23
|
-
this.queue.push({ jobId: newJobId, workflow, attempts: 1 });
|
|
23
|
+
this.queue.push({ jobId: newJobId, workflow, attempts: 1, priorityOverrides });
|
|
24
24
|
this.processQueue().catch(reason => {
|
|
25
|
-
this.
|
|
25
|
+
this.events.emitEvent({ type: "error", payload: { message: `Error processing job queue for workflow hash ${this.workflowHash}`, error: reason } });
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
async processQueue() {
|
|
29
29
|
if (this.isProcessing) {
|
|
30
|
-
this.
|
|
30
|
+
this.events.emitEvent({ type: "debug", payload: `Job queue for workflow hash ${this.workflowHash} is already being processed, skipping.` });
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
33
|
this.isProcessing = true;
|
|
34
34
|
// Get the next job in the queue
|
|
35
35
|
const nextJob = this.queue.shift();
|
|
36
36
|
if (nextJob) {
|
|
37
|
-
this.
|
|
37
|
+
this.events.emitEvent({ type: "debug", payload: `Processing job ${nextJob.jobId}` });
|
|
38
38
|
let preferredClient;
|
|
39
39
|
// If this processor is for the general queue, try to find a preferred client
|
|
40
40
|
if (this.workflowHash === "general") {
|
|
41
|
-
preferredClient = await this.clientRegistry.getOptimalIdleClient(nextJob.workflow);
|
|
41
|
+
preferredClient = await this.clientRegistry.getOptimalIdleClient(nextJob.workflow, nextJob.priorityOverrides);
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
|
-
preferredClient = this.clientRegistry.getOptimalClient(nextJob.workflow);
|
|
44
|
+
preferredClient = this.clientRegistry.getOptimalClient(nextJob.workflow, nextJob.priorityOverrides);
|
|
45
45
|
}
|
|
46
46
|
if (!preferredClient) {
|
|
47
|
-
this.
|
|
47
|
+
this.events.emitEvent({ type: "debug", payload: `No idle clients available for job ${nextJob.jobId}.` });
|
|
48
48
|
// Mark as pending again
|
|
49
49
|
this.jobs.setJobStatus(nextJob.jobId, "pending");
|
|
50
50
|
// Re-add the job to the front of the queue for later processing
|
|
@@ -53,7 +53,7 @@ export class JobQueueProcessor {
|
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
|
-
this.
|
|
56
|
+
this.events.emitEvent({ type: "info", payload: `Assigning job ${nextJob.jobId} to client ${preferredClient.nodeName}` });
|
|
57
57
|
this.jobs.setJobStatus(nextJob.jobId, "assigned", preferredClient.url);
|
|
58
58
|
await this.runJobOnClient(nextJob, preferredClient);
|
|
59
59
|
}
|
|
@@ -63,18 +63,18 @@ export class JobQueueProcessor {
|
|
|
63
63
|
if (this.queue.length > 0) {
|
|
64
64
|
let idleCount = 0;
|
|
65
65
|
for (const client of this.clientRegistry.clients.values()) {
|
|
66
|
-
this.
|
|
66
|
+
this.events.emitEvent({ type: "debug", payload: `Client ${client.nodeName} state: ${client.state}` });
|
|
67
67
|
if (client.state === "idle") {
|
|
68
68
|
idleCount++;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
if (idleCount > 0) {
|
|
72
|
-
this.
|
|
72
|
+
this.events.emitEvent({ type: "debug", payload: `Continuing to process next job in queue for workflow hash ${this.workflowHash}.` });
|
|
73
73
|
try {
|
|
74
74
|
await this.processQueue();
|
|
75
75
|
}
|
|
76
76
|
catch (e) {
|
|
77
|
-
this.
|
|
77
|
+
this.events.emitEvent({ type: "error", payload: { message: `Error processing job queue for workflow hash ${this.workflowHash}`, error: e } });
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
}
|
|
@@ -101,7 +101,7 @@ export class JobQueueProcessor {
|
|
|
101
101
|
// Check if client is idle before sending job
|
|
102
102
|
const queueStatus = await api.getQueue();
|
|
103
103
|
if (queueStatus.queue_running.length !== 0 || queueStatus.queue_pending.length !== 0) {
|
|
104
|
-
this.
|
|
104
|
+
this.events.emitEvent({ type: "debug", payload: `Client ${preferredClient.nodeName} is busy, re-adding job ${nextJob.jobId} to queue.` });
|
|
105
105
|
this.jobs.setJobStatus(nextJob.jobId, "pending");
|
|
106
106
|
this.queue.unshift(nextJob);
|
|
107
107
|
return;
|
|
@@ -110,7 +110,7 @@ export class JobQueueProcessor {
|
|
|
110
110
|
const workflowJson = nextJob.workflow.toJSON();
|
|
111
111
|
const autoSeeds = this.applyAutoSeed(workflowJson);
|
|
112
112
|
if (Object.keys(autoSeeds).length > 0) {
|
|
113
|
-
this.
|
|
113
|
+
this.events.emitEvent({ type: "queue", payload: { workflowHash: this.workflowHash, message: `Applied auto seeds for job ${nextJob.jobId}: ${JSON.stringify(autoSeeds)}` } });
|
|
114
114
|
this.jobs.updateJobAutoSeeds(nextJob.jobId, autoSeeds);
|
|
115
115
|
// Update the workflow json with the new seeds before sending
|
|
116
116
|
const nodeIds = Object.keys(autoSeeds);
|
|
@@ -118,24 +118,25 @@ export class JobQueueProcessor {
|
|
|
118
118
|
workflowJson[nodeId].inputs.seed = autoSeeds[nodeId];
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
-
this.
|
|
121
|
+
this.events.emitEvent({ type: "queue", payload: { workflowHash: this.workflowHash, message: `Starting job ${nextJob.jobId} on client ${preferredClient.nodeName}` } });
|
|
122
122
|
const result = await api.ext.queue.queuePrompt(null, workflowJson);
|
|
123
123
|
// at this point we have the prompt_id assigned by comfyui, we can mark the job as running
|
|
124
124
|
if (result.prompt_id) {
|
|
125
125
|
this.jobs.setPromptId(nextJob.jobId, result.prompt_id);
|
|
126
126
|
this.jobs.setJobStatus(nextJob.jobId, "running");
|
|
127
|
-
this.
|
|
127
|
+
this.events.emitEvent({ type: "queue", payload: { workflowHash: this.workflowHash, message: `Job ${nextJob.jobId} is now queued on client ${preferredClient.nodeName} with prompt ID ${result.prompt_id}` } });
|
|
128
128
|
// we also mark the client as busy, to prevent new jobs being assigned until we detect completion
|
|
129
129
|
preferredClient.state = "busy";
|
|
130
|
-
this.
|
|
130
|
+
this.events.emitEvent({ type: "debug", payload: Array.from(this.clientRegistry.clients.values()).map((c) => `${c.nodeName}: ${c.state}`).join(", ") });
|
|
131
131
|
}
|
|
132
132
|
else {
|
|
133
|
-
|
|
133
|
+
const error = new Error("No prompt_id returned");
|
|
134
|
+
this.events.emitEvent({ type: "error", payload: { message: `Failed to enqueue job ${nextJob.jobId} on client ${preferredClient.nodeName}`, error } });
|
|
134
135
|
this.jobs.setJobStatus(nextJob.jobId, "failed");
|
|
135
136
|
}
|
|
136
137
|
}
|
|
137
138
|
catch (e) {
|
|
138
|
-
this.
|
|
139
|
+
this.events.emitEvent({ type: "error", payload: { message: `Failed to run job ${nextJob.jobId} on client ${preferredClient.nodeName}`, error: e } });
|
|
139
140
|
this.handleFailure(preferredClient, nextJob, e);
|
|
140
141
|
}
|
|
141
142
|
}
|
|
@@ -144,49 +145,49 @@ export class JobQueueProcessor {
|
|
|
144
145
|
}
|
|
145
146
|
handleFailure(preferredClient, nextJob, e) {
|
|
146
147
|
const { type, message } = classifyFailure(e);
|
|
147
|
-
this.
|
|
148
|
+
this.events.emitEvent({ type: "queue", payload: { workflowHash: this.workflowHash, message: `Job ${nextJob.jobId} failed on ${preferredClient.nodeName}. Failure type: ${type}. Reason: ${message}` } });
|
|
148
149
|
switch (type) {
|
|
149
150
|
case "connection":
|
|
150
151
|
preferredClient.state = "offline"; // Mark as offline to be re-checked later
|
|
151
|
-
this.
|
|
152
|
+
this.events.emitEvent({ type: "queue", payload: { workflowHash: this.workflowHash, message: `Re-queuing job ${nextJob.jobId} due to connection error.` } });
|
|
152
153
|
this.jobs.setJobStatus(nextJob.jobId, "pending");
|
|
153
154
|
this.queue.unshift(nextJob); // Re-queue without incrementing attempts
|
|
154
155
|
break;
|
|
155
156
|
case "workflow_incompatibility":
|
|
156
157
|
preferredClient.state = "idle";
|
|
157
|
-
this.
|
|
158
|
+
this.events.emitEvent({ type: "queue", payload: { workflowHash: this.workflowHash, message: `Marking client ${preferredClient.nodeName} as incompatible with workflow ${nextJob.workflow.structureHash}.` } });
|
|
158
159
|
this.clientRegistry.markClientIncompatibleWithWorkflow(preferredClient.url, nextJob.workflow.structureHash);
|
|
159
160
|
this.retryOrMarkFailed(nextJob, e);
|
|
160
161
|
break;
|
|
161
162
|
case "transient":
|
|
162
163
|
preferredClient.state = "idle";
|
|
163
|
-
this.
|
|
164
|
+
this.events.emitEvent({ type: "queue", payload: { workflowHash: this.workflowHash, message: `Job ${nextJob.jobId} failed with a transient error. It will not be retried.` } });
|
|
164
165
|
this.jobs.setJobFailure(nextJob.jobId, { error: message, details: e.bodyJSON });
|
|
165
166
|
break;
|
|
166
167
|
}
|
|
167
168
|
// Trigger processing for the next job in the queue
|
|
168
169
|
this.processQueue().catch(reason => {
|
|
169
|
-
this.
|
|
170
|
+
this.events.emitEvent({ type: "error", payload: `Error processing job queue for workflow hash ${this.workflowHash}: ${reason}` });
|
|
170
171
|
});
|
|
171
172
|
}
|
|
172
173
|
retryOrMarkFailed(nextJob, originalError) {
|
|
173
174
|
// Check if the job has exceeded its max attempts
|
|
174
175
|
if (nextJob.attempts >= this.maxAttempts) {
|
|
175
|
-
this.
|
|
176
|
+
this.events.emitEvent({ type: "queue", payload: { workflowHash: this.workflowHash, message: `Job ${nextJob.jobId} has reached max attempts (${this.maxAttempts}). Marking as failed.` } });
|
|
176
177
|
this.jobs.setJobFailure(nextJob.jobId, originalError.bodyJSON);
|
|
177
178
|
return;
|
|
178
179
|
}
|
|
179
180
|
// Confirm if we should re-queue or fail the job
|
|
180
181
|
const eligibleClients = this.clientRegistry.getAllEligibleClientsForWorkflow(nextJob.workflow);
|
|
181
182
|
if (eligibleClients.length > 0) {
|
|
182
|
-
this.
|
|
183
|
+
this.events.emitEvent({ type: "queue", payload: { workflowHash: this.workflowHash, message: `Re-queuing job ${nextJob.jobId} (attempt ${nextJob.attempts + 1}) as there are other eligible clients available.` } });
|
|
183
184
|
this.jobs.setJobStatus(nextJob.jobId, "pending");
|
|
184
185
|
// Increment attempts and re-add to the front of the queue
|
|
185
186
|
nextJob.attempts++;
|
|
186
187
|
this.queue.unshift(nextJob);
|
|
187
188
|
}
|
|
188
189
|
else {
|
|
189
|
-
this.
|
|
190
|
+
this.events.emitEvent({ type: "queue", payload: { workflowHash: this.workflowHash, message: `No other eligible clients for job ${nextJob.jobId}, marking as failed.` } });
|
|
190
191
|
this.jobs.setJobFailure(nextJob.jobId, originalError.bodyJSON);
|
|
191
192
|
}
|
|
192
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-queue-processor.js","sourceRoot":"","sources":["../../src/multipool/job-queue-processor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"job-queue-processor.js","sourceRoot":"","sources":["../../src/multipool/job-queue-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Logging utility for MultiWorkflowPool
|
|
3
|
-
* Provides structured logging with configurable log levels
|
|
4
|
-
*/
|
|
5
|
-
export type LogLevel = "debug" | "info" | "warn" | "error" | "silent";
|
|
6
|
-
export declare class Logger {
|
|
7
|
-
private level;
|
|
8
|
-
private context;
|
|
9
|
-
constructor(context: string, level?: LogLevel);
|
|
10
|
-
setLevel(level: LogLevel): void;
|
|
11
|
-
private shouldLog;
|
|
12
|
-
private formatMessage;
|
|
13
|
-
debug(message: string, ...args: any[]): void;
|
|
14
|
-
info(message: string, ...args: any[]): void;
|
|
15
|
-
warn(message: string, ...args: any[]): void;
|
|
16
|
-
error(message: string, ...args: any[]): void;
|
|
17
|
-
/**
|
|
18
|
-
* Special log for queue operations (always uses timestamp format)
|
|
19
|
-
*/
|
|
20
|
-
queue(workflowHash: string, message: string, ...args: any[]): void;
|
|
21
|
-
/**
|
|
22
|
-
* Special log for client events
|
|
23
|
-
*/
|
|
24
|
-
client(clientName: string, event: string, message: string, ...args: any[]): void;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Create a logger instance for a specific context
|
|
28
|
-
*/
|
|
29
|
-
export declare function createLogger(context: string, level?: LogLevel): Logger;
|
|
1
|
+
/**
|
|
2
|
+
* Logging utility for MultiWorkflowPool
|
|
3
|
+
* Provides structured logging with configurable log levels
|
|
4
|
+
*/
|
|
5
|
+
export type LogLevel = "debug" | "info" | "warn" | "error" | "silent";
|
|
6
|
+
export declare class Logger {
|
|
7
|
+
private level;
|
|
8
|
+
private context;
|
|
9
|
+
constructor(context: string, level?: LogLevel);
|
|
10
|
+
setLevel(level: LogLevel): void;
|
|
11
|
+
private shouldLog;
|
|
12
|
+
private formatMessage;
|
|
13
|
+
debug(message: string, ...args: any[]): void;
|
|
14
|
+
info(message: string, ...args: any[]): void;
|
|
15
|
+
warn(message: string, ...args: any[]): void;
|
|
16
|
+
error(message: string, ...args: any[]): void;
|
|
17
|
+
/**
|
|
18
|
+
* Special log for queue operations (always uses timestamp format)
|
|
19
|
+
*/
|
|
20
|
+
queue(workflowHash: string, message: string, ...args: any[]): void;
|
|
21
|
+
/**
|
|
22
|
+
* Special log for client events
|
|
23
|
+
*/
|
|
24
|
+
client(clientName: string, event: string, message: string, ...args: any[]): void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a logger instance for a specific context
|
|
28
|
+
*/
|
|
29
|
+
export declare function createLogger(context: string, level?: LogLevel): Logger;
|
|
30
30
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { JobQueueProcessor } from "./job-queue-processor.js";
|
|
2
2
|
import { Workflow } from "./workflow.js";
|
|
3
|
-
import { MultiWorkflowPoolOptions, PoolEvent, JobResults } from "./interfaces.js";
|
|
3
|
+
import { MultiWorkflowPoolOptions, PoolEvent, JobResults, SubmitJobOptions } from "./interfaces.js";
|
|
4
4
|
/**
|
|
5
5
|
* MultiWorkflowPool class to manage heterogeneous clusters of ComfyUI workers with different workflow capabilities.
|
|
6
6
|
* Using a fully event driven architecture to handle client connections, job submissions, and failover strategies.
|
|
@@ -12,7 +12,6 @@ export declare class MultiWorkflowPool {
|
|
|
12
12
|
private jobRegistry;
|
|
13
13
|
queues: Map<string, JobQueueProcessor>;
|
|
14
14
|
options: Required<MultiWorkflowPoolOptions>;
|
|
15
|
-
private logger;
|
|
16
15
|
monitoringInterval?: Timer;
|
|
17
16
|
constructor(options?: MultiWorkflowPoolOptions);
|
|
18
17
|
init(): Promise<void>;
|
|
@@ -22,7 +21,7 @@ export declare class MultiWorkflowPool {
|
|
|
22
21
|
priority?: number;
|
|
23
22
|
}): void;
|
|
24
23
|
removeClient(clientUrl: string): void;
|
|
25
|
-
submitJob(workflow: Workflow<any
|
|
24
|
+
submitJob(workflow: Workflow<any>, options?: SubmitJobOptions): Promise<string>;
|
|
26
25
|
getJobStatus(jobId: string): import("./interfaces.js").JobStatus;
|
|
27
26
|
cancelJob(jobId: string): Promise<void>;
|
|
28
27
|
attachEventHook(event: string, listener: (e: PoolEvent) => void): void;
|