Skip to content

Commit 769c348

Browse files
committed
chore: bump version to 1.8.3
1 parent e2756c7 commit 769c348

3 files changed

Lines changed: 17 additions & 13 deletions

File tree

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.2",
3+
"version": "1.8.3",
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: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,10 @@ export class JobStateRegistry {
155155
completeJob(prompt_id: string) {
156156
const jobState = this.jobs.get(this.promptIdToJobId.get(prompt_id) || "");
157157
if (!jobState || !jobState.prompt_id) {
158-
throw new Error(`No job state found for prompt_id ${prompt_id} when completing job.`);
158+
// Gracefully handle jobs not tracked by this registry (e.g., recovered jobs, external jobs)
159+
// This can happen when jobs are recovered via JobRecoveryManager or submitted externally
160+
console.warn(`No job state found for prompt_id ${prompt_id} when completing job - job may have been recovered externally or is an external job.`);
161+
return;
159162
}
160163
if (jobState.prompt_id === prompt_id) {
161164
jobState.status = "completed";
@@ -224,7 +227,8 @@ export class JobStateRegistry {
224227
addJobImages(prompt_id: string, images: ImageInfo[]) {
225228
const state = this.jobs.get(this.promptIdToJobId.get(prompt_id) || "");
226229
if (!state) {
227-
throw new Error(`No job state found for prompt_id ${prompt_id} when adding images.`);
230+
console.warn(`No job state found for prompt_id ${prompt_id} when adding images.`);
231+
return;
228232
}
229233
if (state.prompt_id === prompt_id) {
230234
state.images = [...images];

src/multipool/workflow.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,15 +121,15 @@ type OutputMap = Record<string, any>;
121121
// These are intentionally minimal; users can still refine manually.
122122
type OutputShapeFor<C extends string> =
123123
C extends "SaveImage" | "SaveImageAdvanced" ? { images?: any[] } :
124-
C extends "KSampler" ? { samples?: any } :
125-
any;
124+
C extends "KSampler" ? { samples?: any } :
125+
any;
126126

127127
type NodeOutputFor<T extends WorkflowJSON, K extends keyof T & string> =
128128
T[K] extends { class_type: infer C }
129-
? C extends string
130-
? OutputShapeFor<C>
131-
: any
132-
: any;
129+
? C extends string
130+
? OutputShapeFor<C>
131+
: any
132+
: any;
133133

134134
export class Workflow<T extends WorkflowJSON = WorkflowJSON, O extends OutputMap = {}> {
135135
private json: T;
@@ -425,9 +425,9 @@ export class Workflow<T extends WorkflowJSON = WorkflowJSON, O extends OutputMap
425425
// Prefer just the filename; many LoadImage nodes look up by filename (subfolder managed server-side)
426426
this.input(it.nodeId as any, it.inputName as any, it.fileName as any);
427427
}
428-
// Clear pending once applied
429-
this._pendingFolderFiles = [];
430-
this._pendingImageInputs = [];
428+
// NOTE: We intentionally do NOT clear pending arrays here.
429+
// This allows retries to a different host to still have assets to upload.
430+
// The upload API uses override mode, so duplicate uploads are idempotent.
431431
}
432432
}
433433
}
@@ -440,7 +440,7 @@ export interface Workflow<T extends WorkflowJSON = WorkflowJSON, O extends Outpu
440440
// 2. output('alias:NODE_ID') -> alias key with inferred node output
441441
output<Spec extends `${string}:${keyof T & string}`>(spec: Spec): Workflow<T, O & (
442442
Spec extends `${infer Alias}:${infer Node}` ? (Node extends keyof T & string ? Record<Alias, NodeOutputFor<T, Node>> : Record<Alias, any>) : {}
443-
)>;
443+
)>;
444444

445445
// 3. output('alias','NODE_ID') -> alias key
446446
output<Alias extends string, NodeId extends keyof T & string>(alias: Alias, nodeId: NodeId): Workflow<T, O & Record<Alias, NodeOutputFor<T, NodeId>>>;

0 commit comments

Comments
 (0)