Skip to content

Commit 7b573f4

Browse files
committed
1.8.4
1 parent 769c348 commit 7b573f4

10 files changed

Lines changed: 58 additions & 9 deletions

dist/multipool/job-state-registry.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/multipool/job-state-registry.js

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/multipool/job-state-registry.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/multipool/multi-workflow-pool.d.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { PoolEventManager } from "./pool-event-manager.js";
12
import { JobQueueProcessor } from "./job-queue-processor.js";
23
import { Workflow } from "./workflow.js";
34
import { MultiWorkflowPoolOptions, PoolEvent, JobResults, SubmitJobOptions } from "./interfaces.js";
@@ -7,7 +8,7 @@ import { MultiWorkflowPoolOptions, PoolEvent, JobResults, SubmitJobOptions } fro
78
* Zero polling is used; all operations are event driven. Maximizes responsiveness and scalability.
89
*/
910
export declare class MultiWorkflowPool {
10-
private events;
11+
protected events: PoolEventManager;
1112
private clientRegistry;
1213
private jobRegistry;
1314
queues: Map<string, JobQueueProcessor>;
@@ -26,6 +27,11 @@ export declare class MultiWorkflowPool {
2627
getJobStatus(jobId: string): import("./interfaces.js").JobStatus;
2728
cancelJob(jobId: string): Promise<void>;
2829
attachEventHook(event: string, listener: (e: PoolEvent) => void): void;
30+
detachEventHook(event: string, listener: (e: PoolEvent) => void): void;
31+
/**
32+
* Emit a pool event (for internal components like registries)
33+
*/
34+
emitEvent(event: PoolEvent): void;
2935
private assertQueue;
3036
private attachHandlersToClient;
3137
private printStatusSummary;

dist/multipool/multi-workflow-pool.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/multipool/multi-workflow-pool.js

Lines changed: 12 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/multipool/multi-workflow-pool.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "comfyui-node",
3-
"version": "1.8.3",
3+
"version": "1.8.4",
44
"description": "ComfyUI Node.js Client",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

src/multipool/job-state-registry.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,16 @@ export class JobStateRegistry {
146146
jobState.prompt_id = prompt_id;
147147
this.promptIdToJobId.set(prompt_id, jobId);
148148

149+
// Emit event for external tracking (e.g., Redis-based multi-worker sync)
150+
this.pool.emitEvent({
151+
type: 'job:prompt_assigned',
152+
payload: {
153+
jobId,
154+
promptId: prompt_id,
155+
assignedClientUrl: jobState.assignedClientUrl,
156+
},
157+
});
158+
149159
// Notify profiler of execution start
150160
if (jobState.profiler) {
151161
jobState.profiler.onExecutionStart(prompt_id);

src/multipool/multi-workflow-pool.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import { MultiWorkflowPoolOptions, PoolEvent, ClientEventPayload, EnhancedClient
1111
* Zero polling is used; all operations are event driven. Maximizes responsiveness and scalability.
1212
*/
1313
export class MultiWorkflowPool {
14-
// Event manager for handling pool events
15-
private events: PoolEventManager;
14+
// Event manager for handling pool events (protected for internal access by registries)
15+
protected events: PoolEventManager;
1616

1717
// Registry for managing clients in the pool
1818
private clientRegistry: ClientRegistry;
@@ -200,6 +200,19 @@ export class MultiWorkflowPool {
200200
}
201201
}
202202

203+
detachEventHook(event: string, listener: (e: PoolEvent) => void) {
204+
if (event && listener) {
205+
this.events.detachHook(event, listener);
206+
}
207+
}
208+
209+
/**
210+
* Emit a pool event (for internal components like registries)
211+
*/
212+
emitEvent(event: PoolEvent) {
213+
this.events.emitEvent(event);
214+
}
215+
203216
// PRIVATE METHODS
204217
private assertQueue(workflowHash: string | undefined): JobQueueProcessor | null {
205218
if (!workflowHash) {

0 commit comments

Comments
 (0)