comfyui-mcp 0.3.1 → 0.4.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/.beads/README.md +81 -0
- package/.beads/config.yaml +54 -0
- package/.beads/metadata.json +7 -0
- package/AGENTS.md +84 -0
- package/CLAUDE.md +48 -0
- package/README.md +22 -0
- package/dist/comfyui/client.d.ts +17 -0
- package/dist/comfyui/client.d.ts.map +1 -1
- package/dist/comfyui/client.js +39 -0
- package/dist/comfyui/client.js.map +1 -1
- package/dist/comfyui/types.d.ts +52 -0
- package/dist/comfyui/types.d.ts.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -1
- package/dist/config.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/asset-registry.d.ts +64 -0
- package/dist/services/asset-registry.d.ts.map +1 -0
- package/dist/services/asset-registry.js +118 -0
- package/dist/services/asset-registry.js.map +1 -0
- package/dist/services/defaults-manager.d.ts +31 -0
- package/dist/services/defaults-manager.d.ts.map +1 -0
- package/dist/services/defaults-manager.js +128 -0
- package/dist/services/defaults-manager.js.map +1 -0
- package/dist/services/generate-image.d.ts +35 -0
- package/dist/services/generate-image.d.ts.map +1 -0
- package/dist/services/generate-image.js +63 -0
- package/dist/services/generate-image.js.map +1 -0
- package/dist/services/image-management.d.ts +16 -0
- package/dist/services/image-management.d.ts.map +1 -1
- package/dist/services/image-management.js +32 -0
- package/dist/services/image-management.js.map +1 -1
- package/dist/services/job-watcher.d.ts +5 -1
- package/dist/services/job-watcher.d.ts.map +1 -1
- package/dist/services/job-watcher.js +42 -3
- package/dist/services/job-watcher.js.map +1 -1
- package/dist/services/process-control.js +2 -2
- package/dist/services/process-control.js.map +1 -1
- package/dist/services/view-image.d.ts +17 -0
- package/dist/services/view-image.d.ts.map +1 -0
- package/dist/services/view-image.js +36 -0
- package/dist/services/view-image.js.map +1 -0
- package/dist/services/workflow-autoload.d.ts +41 -0
- package/dist/services/workflow-autoload.d.ts.map +1 -0
- package/dist/services/workflow-autoload.js +172 -0
- package/dist/services/workflow-autoload.js.map +1 -0
- package/dist/services/workflow-converter.d.ts +15 -0
- package/dist/services/workflow-converter.d.ts.map +1 -1
- package/dist/services/workflow-converter.js +333 -5
- package/dist/services/workflow-converter.js.map +1 -1
- package/dist/services/workflow-executor.d.ts.map +1 -1
- package/dist/services/workflow-executor.js +4 -2
- package/dist/services/workflow-executor.js.map +1 -1
- package/dist/services/workflow-sections.d.ts.map +1 -1
- package/dist/services/workflow-sections.js +41 -6
- package/dist/services/workflow-sections.js.map +1 -1
- package/dist/tools/assets.d.ts +3 -0
- package/dist/tools/assets.d.ts.map +1 -0
- package/dist/tools/assets.js +128 -0
- package/dist/tools/assets.js.map +1 -0
- package/dist/tools/defaults.d.ts +3 -0
- package/dist/tools/defaults.d.ts.map +1 -0
- package/dist/tools/defaults.js +57 -0
- package/dist/tools/defaults.js.map +1 -0
- package/dist/tools/diagnostics.d.ts.map +1 -1
- package/dist/tools/diagnostics.js +14 -3
- package/dist/tools/diagnostics.js.map +1 -1
- package/dist/tools/generate-image.d.ts +3 -0
- package/dist/tools/generate-image.d.ts.map +1 -0
- package/dist/tools/generate-image.js +61 -0
- package/dist/tools/generate-image.js.map +1 -0
- package/dist/tools/image-management.d.ts.map +1 -1
- package/dist/tools/image-management.js +99 -11
- package/dist/tools/image-management.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +13 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/workflow-autoload.d.ts +9 -0
- package/dist/tools/workflow-autoload.d.ts.map +1 -0
- package/dist/tools/workflow-autoload.js +64 -0
- package/dist/tools/workflow-autoload.js.map +1 -0
- package/package.json +1 -1
- package/plugin/scripts/monitor-progress.mjs +9 -5
- package/.github/workflows/ci.yml +0 -27
- package/.github/workflows/release.yml +0 -34
- package/docs/design/generation-tracker.md +0 -457
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { WorkflowJSON } from "../comfyui/types.js";
|
|
2
|
+
export interface AssetImage {
|
|
3
|
+
filename: string;
|
|
4
|
+
subfolder: string;
|
|
5
|
+
type: string;
|
|
6
|
+
url: string;
|
|
7
|
+
}
|
|
8
|
+
export interface AssetOutput {
|
|
9
|
+
node_id: string;
|
|
10
|
+
images: AssetImage[];
|
|
11
|
+
}
|
|
12
|
+
export interface AssetRecord {
|
|
13
|
+
assetId: string;
|
|
14
|
+
promptId: string;
|
|
15
|
+
nodeId: string;
|
|
16
|
+
filename: string;
|
|
17
|
+
subfolder: string;
|
|
18
|
+
type: string;
|
|
19
|
+
url: string;
|
|
20
|
+
workflow: WorkflowJSON;
|
|
21
|
+
createdAt: number;
|
|
22
|
+
}
|
|
23
|
+
export interface RegisterArgs {
|
|
24
|
+
promptId: string;
|
|
25
|
+
workflow: WorkflowJSON;
|
|
26
|
+
outputs: AssetOutput[];
|
|
27
|
+
}
|
|
28
|
+
export interface ListArgs {
|
|
29
|
+
limit?: number;
|
|
30
|
+
since?: number;
|
|
31
|
+
}
|
|
32
|
+
interface RegistryConfig {
|
|
33
|
+
ttlMs: number;
|
|
34
|
+
now: () => number;
|
|
35
|
+
}
|
|
36
|
+
export declare const AssetRegistry: {
|
|
37
|
+
/**
|
|
38
|
+
* Register all images produced by a completed prompt.
|
|
39
|
+
* Returns the AssetRecords created (one per image).
|
|
40
|
+
*/
|
|
41
|
+
register({ promptId, workflow, outputs }: RegisterArgs): AssetRecord[];
|
|
42
|
+
/** Look up a record by id. Returns undefined for missing or expired. */
|
|
43
|
+
get(assetId: string): AssetRecord | undefined;
|
|
44
|
+
/** List records newest-first. */
|
|
45
|
+
list({ limit, since }?: ListArgs): AssetRecord[];
|
|
46
|
+
/** Remove expired records. Returns number pruned. */
|
|
47
|
+
prune(): number;
|
|
48
|
+
/** Test/diagnostic helper — wipe all records. */
|
|
49
|
+
clear(): void;
|
|
50
|
+
/** Test/diagnostic helper — override ttl and clock. */
|
|
51
|
+
configure(opts: Partial<RegistryConfig>): void;
|
|
52
|
+
/** Inspect current size (debug only). */
|
|
53
|
+
size(): number;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Apply a flat override map to every node input in a workflow.
|
|
57
|
+
* For each (key, value) in overrides, sets node.inputs[key] = value on any node
|
|
58
|
+
* that already has that input. Returns a new workflow; does not mutate input.
|
|
59
|
+
*
|
|
60
|
+
* Example: { cfg: 8, seed: 12345 } → updates KSampler-style nodes only.
|
|
61
|
+
*/
|
|
62
|
+
export declare function applyOverrides(workflow: WorkflowJSON, overrides: Record<string, unknown> | undefined): WorkflowJSON;
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=asset-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-registry.d.ts","sourceRoot":"","sources":["../../src/services/asset-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB;AA6BD,eAAO,MAAM,aAAa;IACxB;;;OAGG;8CACuC,YAAY,GAAG,WAAW,EAAE;IAwBtE,wEAAwE;iBAC3D,MAAM,GAAG,WAAW,GAAG,SAAS;IAU7C,iCAAiC;4BACV,QAAQ,GAAQ,WAAW,EAAE;IAOpD,qDAAqD;aAC5C,MAAM;IAWf,iDAAiD;aACxC,IAAI;IAIb,uDAAuD;oBACvC,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAK9C,yCAAyC;YACjC,MAAM;CAGf,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC7C,YAAY,CAYd"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
const DEFAULT_TTL_MS = (() => {
|
|
3
|
+
const raw = process.env.COMFYUI_ASSET_TTL_HOURS;
|
|
4
|
+
const hours = raw ? Number(raw) : 24;
|
|
5
|
+
return Number.isFinite(hours) && hours > 0 ? hours * 60 * 60 * 1000 : 24 * 60 * 60 * 1000;
|
|
6
|
+
})();
|
|
7
|
+
const state = {
|
|
8
|
+
records: new Map(),
|
|
9
|
+
config: { ttlMs: DEFAULT_TTL_MS, now: Date.now },
|
|
10
|
+
};
|
|
11
|
+
function makeAssetId(promptId, img) {
|
|
12
|
+
const hash = createHash("sha256")
|
|
13
|
+
.update(`${promptId}\0${img.filename}\0${img.subfolder}\0${img.type}`)
|
|
14
|
+
.digest("hex");
|
|
15
|
+
return `a_${hash.slice(0, 8)}`;
|
|
16
|
+
}
|
|
17
|
+
function deepCloneWorkflow(wf) {
|
|
18
|
+
return JSON.parse(JSON.stringify(wf));
|
|
19
|
+
}
|
|
20
|
+
function isExpired(record) {
|
|
21
|
+
return state.config.now() - record.createdAt >= state.config.ttlMs;
|
|
22
|
+
}
|
|
23
|
+
export const AssetRegistry = {
|
|
24
|
+
/**
|
|
25
|
+
* Register all images produced by a completed prompt.
|
|
26
|
+
* Returns the AssetRecords created (one per image).
|
|
27
|
+
*/
|
|
28
|
+
register({ promptId, workflow, outputs }) {
|
|
29
|
+
const snapshot = deepCloneWorkflow(workflow);
|
|
30
|
+
const created = [];
|
|
31
|
+
for (const output of outputs) {
|
|
32
|
+
for (const img of output.images) {
|
|
33
|
+
const assetId = makeAssetId(promptId, img);
|
|
34
|
+
const record = {
|
|
35
|
+
assetId,
|
|
36
|
+
promptId,
|
|
37
|
+
nodeId: output.node_id,
|
|
38
|
+
filename: img.filename,
|
|
39
|
+
subfolder: img.subfolder,
|
|
40
|
+
type: img.type,
|
|
41
|
+
url: img.url,
|
|
42
|
+
workflow: snapshot,
|
|
43
|
+
createdAt: state.config.now(),
|
|
44
|
+
};
|
|
45
|
+
state.records.set(assetId, record);
|
|
46
|
+
created.push(record);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return created;
|
|
50
|
+
},
|
|
51
|
+
/** Look up a record by id. Returns undefined for missing or expired. */
|
|
52
|
+
get(assetId) {
|
|
53
|
+
const record = state.records.get(assetId);
|
|
54
|
+
if (!record)
|
|
55
|
+
return undefined;
|
|
56
|
+
if (isExpired(record)) {
|
|
57
|
+
state.records.delete(assetId);
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
return record;
|
|
61
|
+
},
|
|
62
|
+
/** List records newest-first. */
|
|
63
|
+
list({ limit, since } = {}) {
|
|
64
|
+
const all = [...state.records.values()].filter((r) => !isExpired(r));
|
|
65
|
+
const filtered = since !== undefined ? all.filter((r) => r.createdAt >= since) : all;
|
|
66
|
+
filtered.sort((a, b) => b.createdAt - a.createdAt);
|
|
67
|
+
return limit !== undefined ? filtered.slice(0, limit) : filtered;
|
|
68
|
+
},
|
|
69
|
+
/** Remove expired records. Returns number pruned. */
|
|
70
|
+
prune() {
|
|
71
|
+
let count = 0;
|
|
72
|
+
for (const [id, record] of state.records) {
|
|
73
|
+
if (isExpired(record)) {
|
|
74
|
+
state.records.delete(id);
|
|
75
|
+
count++;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return count;
|
|
79
|
+
},
|
|
80
|
+
/** Test/diagnostic helper — wipe all records. */
|
|
81
|
+
clear() {
|
|
82
|
+
state.records.clear();
|
|
83
|
+
},
|
|
84
|
+
/** Test/diagnostic helper — override ttl and clock. */
|
|
85
|
+
configure(opts) {
|
|
86
|
+
if (opts.ttlMs !== undefined)
|
|
87
|
+
state.config.ttlMs = opts.ttlMs;
|
|
88
|
+
if (opts.now !== undefined)
|
|
89
|
+
state.config.now = opts.now;
|
|
90
|
+
},
|
|
91
|
+
/** Inspect current size (debug only). */
|
|
92
|
+
size() {
|
|
93
|
+
return state.records.size;
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Apply a flat override map to every node input in a workflow.
|
|
98
|
+
* For each (key, value) in overrides, sets node.inputs[key] = value on any node
|
|
99
|
+
* that already has that input. Returns a new workflow; does not mutate input.
|
|
100
|
+
*
|
|
101
|
+
* Example: { cfg: 8, seed: 12345 } → updates KSampler-style nodes only.
|
|
102
|
+
*/
|
|
103
|
+
export function applyOverrides(workflow, overrides) {
|
|
104
|
+
const next = deepCloneWorkflow(workflow);
|
|
105
|
+
if (!overrides)
|
|
106
|
+
return next;
|
|
107
|
+
for (const node of Object.values(next)) {
|
|
108
|
+
if (!node.inputs)
|
|
109
|
+
continue;
|
|
110
|
+
for (const [key, value] of Object.entries(overrides)) {
|
|
111
|
+
if (key in node.inputs) {
|
|
112
|
+
node.inputs[key] = value;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return next;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=asset-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-registry.js","sourceRoot":"","sources":["../../src/services/asset-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type DefaultSource = "config" | "env" | "runtime";
|
|
2
|
+
export interface ResolvedValue {
|
|
3
|
+
value: unknown;
|
|
4
|
+
source: DefaultSource;
|
|
5
|
+
}
|
|
6
|
+
interface ManagerConfig {
|
|
7
|
+
configPath: string;
|
|
8
|
+
env: Record<string, string | undefined>;
|
|
9
|
+
}
|
|
10
|
+
export declare const DefaultsManager: {
|
|
11
|
+
configure(opts: Partial<ManagerConfig>): void;
|
|
12
|
+
reset(): void;
|
|
13
|
+
getConfigPath(): string;
|
|
14
|
+
load(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Return the resolved view of all defaults, with source attribution.
|
|
17
|
+
* Precedence (lowest → highest): config → env → runtime.
|
|
18
|
+
*/
|
|
19
|
+
getAll(): Record<string, ResolvedValue>;
|
|
20
|
+
get(key: string): ResolvedValue | undefined;
|
|
21
|
+
set(updates: Record<string, unknown>, opts?: {
|
|
22
|
+
persist?: boolean;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Fill missing or undefined fields in `args` from resolved defaults.
|
|
26
|
+
* Per-call args win — only undefined-or-missing keys get backfilled.
|
|
27
|
+
*/
|
|
28
|
+
apply<T extends Record<string, unknown>>(args: T): T & Record<string, unknown>;
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=defaults-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults-manager.d.ts","sourceRoot":"","sources":["../../src/services/defaults-manager.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACzC;AAuCD,eAAO,MAAM,eAAe;oBACV,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;aAKpC,IAAI;qBAMI,MAAM;YAIT,OAAO,CAAC,IAAI,CAAC;IA0B3B;;;OAGG;cACO,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;aAc9B,MAAM,GAAG,aAAa,GAAG,SAAS;iBAKhC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SACzB;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3B,OAAO,CAAC,IAAI,CAAC;IAahB;;;OAGG;UACG,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQ/E,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { logger } from "../utils/logger.js";
|
|
6
|
+
const ENV_PREFIX = "COMFYUI_DEFAULT_";
|
|
7
|
+
function defaultConfigPath() {
|
|
8
|
+
const xdg = process.env.XDG_CONFIG_HOME;
|
|
9
|
+
const root = xdg && xdg.length > 0 ? xdg : join(homedir(), ".config");
|
|
10
|
+
return join(root, "comfyui-mcp", "config.json");
|
|
11
|
+
}
|
|
12
|
+
function defaultEnv() {
|
|
13
|
+
return process.env;
|
|
14
|
+
}
|
|
15
|
+
const state = {
|
|
16
|
+
cfg: { configPath: defaultConfigPath(), env: defaultEnv() },
|
|
17
|
+
configValues: {},
|
|
18
|
+
runtimeValues: {},
|
|
19
|
+
};
|
|
20
|
+
function parseEnvValue(raw) {
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(raw);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return raw;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function envDefaults(env) {
|
|
29
|
+
const out = {};
|
|
30
|
+
for (const [key, val] of Object.entries(env)) {
|
|
31
|
+
if (!key.startsWith(ENV_PREFIX) || val === undefined)
|
|
32
|
+
continue;
|
|
33
|
+
const name = key.slice(ENV_PREFIX.length).toLowerCase();
|
|
34
|
+
if (name.length === 0)
|
|
35
|
+
continue;
|
|
36
|
+
out[name] = parseEnvValue(val);
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
export const DefaultsManager = {
|
|
41
|
+
configure(opts) {
|
|
42
|
+
if (opts.configPath !== undefined)
|
|
43
|
+
state.cfg.configPath = opts.configPath;
|
|
44
|
+
if (opts.env !== undefined)
|
|
45
|
+
state.cfg.env = opts.env;
|
|
46
|
+
},
|
|
47
|
+
reset() {
|
|
48
|
+
state.cfg = { configPath: defaultConfigPath(), env: defaultEnv() };
|
|
49
|
+
state.configValues = {};
|
|
50
|
+
state.runtimeValues = {};
|
|
51
|
+
},
|
|
52
|
+
getConfigPath() {
|
|
53
|
+
return state.cfg.configPath;
|
|
54
|
+
},
|
|
55
|
+
async load() {
|
|
56
|
+
state.runtimeValues = {};
|
|
57
|
+
if (!existsSync(state.cfg.configPath)) {
|
|
58
|
+
state.configValues = {};
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const raw = await readFile(state.cfg.configPath, "utf-8");
|
|
63
|
+
const parsed = JSON.parse(raw);
|
|
64
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
65
|
+
state.configValues = parsed;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
logger.warn("Defaults config file is not a JSON object, ignoring", {
|
|
69
|
+
path: state.cfg.configPath,
|
|
70
|
+
});
|
|
71
|
+
state.configValues = {};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
logger.warn("Failed to parse defaults config file, ignoring", {
|
|
76
|
+
path: state.cfg.configPath,
|
|
77
|
+
error: err instanceof Error ? err.message : err,
|
|
78
|
+
});
|
|
79
|
+
state.configValues = {};
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* Return the resolved view of all defaults, with source attribution.
|
|
84
|
+
* Precedence (lowest → highest): config → env → runtime.
|
|
85
|
+
*/
|
|
86
|
+
getAll() {
|
|
87
|
+
const merged = {};
|
|
88
|
+
for (const [k, v] of Object.entries(state.configValues)) {
|
|
89
|
+
merged[k] = { value: v, source: "config" };
|
|
90
|
+
}
|
|
91
|
+
for (const [k, v] of Object.entries(envDefaults(state.cfg.env))) {
|
|
92
|
+
merged[k] = { value: v, source: "env" };
|
|
93
|
+
}
|
|
94
|
+
for (const [k, v] of Object.entries(state.runtimeValues)) {
|
|
95
|
+
merged[k] = { value: v, source: "runtime" };
|
|
96
|
+
}
|
|
97
|
+
return merged;
|
|
98
|
+
},
|
|
99
|
+
get(key) {
|
|
100
|
+
return this.getAll()[key];
|
|
101
|
+
},
|
|
102
|
+
async set(updates, opts) {
|
|
103
|
+
for (const [k, v] of Object.entries(updates)) {
|
|
104
|
+
state.runtimeValues[k] = v;
|
|
105
|
+
}
|
|
106
|
+
if (opts?.persist) {
|
|
107
|
+
const merged = { ...state.configValues, ...updates };
|
|
108
|
+
state.configValues = merged;
|
|
109
|
+
const dir = dirname(state.cfg.configPath);
|
|
110
|
+
await mkdir(dir, { recursive: true });
|
|
111
|
+
await writeFile(state.cfg.configPath, JSON.stringify(merged, null, 2), "utf-8");
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
/**
|
|
115
|
+
* Fill missing or undefined fields in `args` from resolved defaults.
|
|
116
|
+
* Per-call args win — only undefined-or-missing keys get backfilled.
|
|
117
|
+
*/
|
|
118
|
+
apply(args) {
|
|
119
|
+
const result = { ...args };
|
|
120
|
+
const resolved = this.getAll();
|
|
121
|
+
for (const [k, { value }] of Object.entries(resolved)) {
|
|
122
|
+
if (result[k] === undefined)
|
|
123
|
+
result[k] = value;
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=defaults-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults-manager.js","sourceRoot":"","sources":["../../src/services/defaults-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { WorkflowJSON } from "../comfyui/types.js";
|
|
2
|
+
export interface GenerateImageArgs {
|
|
3
|
+
prompt: string;
|
|
4
|
+
negative_prompt?: string;
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
steps?: number;
|
|
8
|
+
cfg?: number;
|
|
9
|
+
sampler?: string;
|
|
10
|
+
scheduler?: string;
|
|
11
|
+
seed?: number;
|
|
12
|
+
checkpoint?: string;
|
|
13
|
+
batch_size?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface GenerateImageDeps {
|
|
16
|
+
/** Resolve a checkpoint filename when none is given or defaulted. */
|
|
17
|
+
resolveCheckpoint: () => Promise<string | undefined>;
|
|
18
|
+
/** Submit the constructed workflow; returns the prompt id. */
|
|
19
|
+
enqueue: (workflow: WorkflowJSON) => Promise<{
|
|
20
|
+
prompt_id: string;
|
|
21
|
+
queue_remaining?: number;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
export interface GenerateImageResult {
|
|
25
|
+
prompt_id: string;
|
|
26
|
+
queue_remaining?: number;
|
|
27
|
+
checkpoint: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Construct a txt2img workflow from `args` backfilled by DefaultsManager,
|
|
31
|
+
* auto-resolving a checkpoint if needed, then enqueue it. Reuses the existing
|
|
32
|
+
* workflow-composer txt2img template rather than building the node graph here.
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateImage(args: GenerateImageArgs, deps: GenerateImageDeps): Promise<GenerateImageResult>;
|
|
35
|
+
//# sourceMappingURL=generate-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-image.d.ts","sourceRoot":"","sources":["../../src/services/generate-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACrD,8DAA8D;IAC9D,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/F;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAgBD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,mBAAmB,CAAC,CA6C9B"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { createWorkflow } from "./workflow-composer.js";
|
|
2
|
+
import { DefaultsManager } from "./defaults-manager.js";
|
|
3
|
+
import { ValidationError } from "../utils/errors.js";
|
|
4
|
+
// Keys the DefaultsManager may supply for image generation.
|
|
5
|
+
const DEFAULTABLE_KEYS = [
|
|
6
|
+
"negative_prompt",
|
|
7
|
+
"width",
|
|
8
|
+
"height",
|
|
9
|
+
"steps",
|
|
10
|
+
"cfg",
|
|
11
|
+
"sampler",
|
|
12
|
+
"scheduler",
|
|
13
|
+
"seed",
|
|
14
|
+
"checkpoint",
|
|
15
|
+
"batch_size",
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Construct a txt2img workflow from `args` backfilled by DefaultsManager,
|
|
19
|
+
* auto-resolving a checkpoint if needed, then enqueue it. Reuses the existing
|
|
20
|
+
* workflow-composer txt2img template rather than building the node graph here.
|
|
21
|
+
*/
|
|
22
|
+
export async function generateImage(args, deps) {
|
|
23
|
+
// Backfill only the defaultable knobs; prompt is always caller-supplied.
|
|
24
|
+
const argsRecord = args;
|
|
25
|
+
const seed = {};
|
|
26
|
+
for (const key of DEFAULTABLE_KEYS) {
|
|
27
|
+
const v = argsRecord[key];
|
|
28
|
+
if (v !== undefined)
|
|
29
|
+
seed[key] = v;
|
|
30
|
+
}
|
|
31
|
+
const resolved = DefaultsManager.apply(seed);
|
|
32
|
+
let checkpoint = resolved.checkpoint;
|
|
33
|
+
if (!checkpoint) {
|
|
34
|
+
checkpoint = await deps.resolveCheckpoint();
|
|
35
|
+
}
|
|
36
|
+
if (!checkpoint) {
|
|
37
|
+
throw new ValidationError("No checkpoint specified, defaulted, or found locally. " +
|
|
38
|
+
"Pass `checkpoint`, set a default via set_defaults, or download one with download_model.");
|
|
39
|
+
}
|
|
40
|
+
const workflow = createWorkflow("txt2img", {
|
|
41
|
+
checkpoint,
|
|
42
|
+
positive_prompt: args.prompt,
|
|
43
|
+
negative_prompt: resolved.negative_prompt,
|
|
44
|
+
width: resolved.width,
|
|
45
|
+
height: resolved.height,
|
|
46
|
+
steps: resolved.steps,
|
|
47
|
+
cfg: resolved.cfg,
|
|
48
|
+
seed: resolved.seed,
|
|
49
|
+
sampler_name: resolved.sampler,
|
|
50
|
+
scheduler: resolved.scheduler,
|
|
51
|
+
});
|
|
52
|
+
const batchSize = resolved.batch_size;
|
|
53
|
+
if (batchSize !== undefined && batchSize !== 1) {
|
|
54
|
+
for (const node of Object.values(workflow)) {
|
|
55
|
+
if (node.class_type === "EmptyLatentImage") {
|
|
56
|
+
node.inputs.batch_size = batchSize;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const { prompt_id, queue_remaining } = await deps.enqueue(workflow);
|
|
61
|
+
return { prompt_id, queue_remaining, checkpoint };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=generate-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-image.js","sourceRoot":"","sources":["../../src/services/generate-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA6BrD,4DAA4D;AAC5D,MAAM,gBAAgB,GAAG;IACvB,iBAAiB;IACjB,OAAO;IACP,QAAQ;IACR,OAAO;IACP,KAAK;IACL,SAAS;IACT,WAAW;IACX,MAAM;IACN,YAAY;IACZ,YAAY;CACJ,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAuB,EACvB,IAAuB;IAEvB,yEAAyE;IACzE,MAAM,UAAU,GAAG,IAA0C,CAAC;IAC9D,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,SAAS;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,UAAU,GAAG,QAAQ,CAAC,UAAgC,CAAC;IAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,eAAe,CACvB,wDAAwD;YACtD,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE;QACzC,UAAU;QACV,eAAe,EAAE,IAAI,CAAC,MAAM;QAC5B,eAAe,EAAE,QAAQ,CAAC,eAAqC;QAC/D,KAAK,EAAE,QAAQ,CAAC,KAA2B;QAC3C,MAAM,EAAE,QAAQ,CAAC,MAA4B;QAC7C,KAAK,EAAE,QAAQ,CAAC,KAA2B;QAC3C,GAAG,EAAE,QAAQ,CAAC,GAAyB;QACvC,IAAI,EAAE,QAAQ,CAAC,IAA0B;QACzC,YAAY,EAAE,QAAQ,CAAC,OAA6B;QACpD,SAAS,EAAE,QAAQ,CAAC,SAA+B;KACpD,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAgC,CAAC;IAC5D,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,UAAU,KAAK,kBAAkB,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -28,4 +28,20 @@ export declare function listOutputImages(options?: {
|
|
|
28
28
|
limit?: number;
|
|
29
29
|
pattern?: string;
|
|
30
30
|
}): Promise<OutputImage[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Fetch a generated image from ComfyUI via HTTP /view endpoint.
|
|
33
|
+
* Does NOT require COMFYUI_PATH — works with remote ComfyUI instances.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getOutputImage(filename: string, type?: "output" | "input" | "temp", subfolder?: string): Promise<{
|
|
36
|
+
base64: string;
|
|
37
|
+
mimeType: string;
|
|
38
|
+
filename: string;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Upload a local image to ComfyUI via HTTP multipart POST.
|
|
42
|
+
* Falls back to HTTP when COMFYUI_PATH is not available (remote ComfyUI).
|
|
43
|
+
*/
|
|
44
|
+
export declare function uploadImageAuto(sourcePath: string, filename?: string): Promise<{
|
|
45
|
+
filename: string;
|
|
46
|
+
}>;
|
|
31
47
|
//# sourceMappingURL=image-management.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-management.d.ts","sourceRoot":"","sources":["../../src/services/image-management.ts"],"names":[],"mappings":"AAwBA;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB7C;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAqCnF;AA2ED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAuCzB"}
|
|
1
|
+
{"version":3,"file":"image-management.d.ts","sourceRoot":"","sources":["../../src/services/image-management.ts"],"names":[],"mappings":"AAwBA;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB7C;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAqCnF;AA2ED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAuCzB;AAKD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,QAAQ,GAAG,OAAO,GAAG,MAAiB,EAC5C,SAAS,SAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAGjE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB/B"}
|
|
@@ -179,4 +179,36 @@ export async function listOutputImages(options) {
|
|
|
179
179
|
images.sort((a, b) => b.modified.localeCompare(a.modified));
|
|
180
180
|
return images.slice(0, limit);
|
|
181
181
|
}
|
|
182
|
+
import { fetchImage, uploadImageHttp } from "../comfyui/client.js";
|
|
183
|
+
import { readFile as nodeReadFile } from "node:fs/promises";
|
|
184
|
+
/**
|
|
185
|
+
* Fetch a generated image from ComfyUI via HTTP /view endpoint.
|
|
186
|
+
* Does NOT require COMFYUI_PATH — works with remote ComfyUI instances.
|
|
187
|
+
*/
|
|
188
|
+
export async function getOutputImage(filename, type = "output", subfolder = "") {
|
|
189
|
+
const result = await fetchImage(filename, type, subfolder);
|
|
190
|
+
return { ...result, filename };
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Upload a local image to ComfyUI via HTTP multipart POST.
|
|
194
|
+
* Falls back to HTTP when COMFYUI_PATH is not available (remote ComfyUI).
|
|
195
|
+
*/
|
|
196
|
+
export async function uploadImageAuto(sourcePath, filename) {
|
|
197
|
+
const resolvedFilename = filename ?? basename(sourcePath);
|
|
198
|
+
const ext = extname(resolvedFilename).toLowerCase();
|
|
199
|
+
const allowed = [".png", ".jpg", ".jpeg", ".webp", ".bmp", ".gif", ".tiff", ".tif"];
|
|
200
|
+
if (!allowed.includes(ext)) {
|
|
201
|
+
throw new ValidationError(`Unsupported image format "${ext}". Supported: ${allowed.join(", ")}`);
|
|
202
|
+
}
|
|
203
|
+
const data = await nodeReadFile(sourcePath);
|
|
204
|
+
const mimeMap = {
|
|
205
|
+
".png": "image/png", ".jpg": "image/jpeg", ".jpeg": "image/jpeg",
|
|
206
|
+
".webp": "image/webp", ".bmp": "image/bmp", ".gif": "image/gif",
|
|
207
|
+
".tiff": "image/tiff", ".tif": "image/tiff",
|
|
208
|
+
};
|
|
209
|
+
const mimeType = mimeMap[ext] ?? "application/octet-stream";
|
|
210
|
+
logger.info("Uploading image to ComfyUI via HTTP", { sourcePath, resolvedFilename });
|
|
211
|
+
const result = await uploadImageHttp(resolvedFilename, data, mimeType);
|
|
212
|
+
return { filename: result.name };
|
|
213
|
+
}
|
|
182
214
|
//# sourceMappingURL=image-management.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-management.js","sourceRoot":"","sources":["../../src/services/image-management.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"image-management.js","sourceRoot":"","sources":["../../src/services/image-management.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { WorkflowJSON } from "../comfyui/types.js";
|
|
1
2
|
export interface CompletionNotification {
|
|
2
3
|
prompt_id: string;
|
|
3
4
|
status: "success" | "error" | "interrupted";
|
|
@@ -16,6 +17,7 @@ export interface CompletionNotification {
|
|
|
16
17
|
subfolder: string;
|
|
17
18
|
type: string;
|
|
18
19
|
url: string;
|
|
20
|
+
asset_id?: string;
|
|
19
21
|
}>;
|
|
20
22
|
}>;
|
|
21
23
|
cached_nodes: string[];
|
|
@@ -23,8 +25,10 @@ export interface CompletionNotification {
|
|
|
23
25
|
export declare const JobWatcher: {
|
|
24
26
|
/**
|
|
25
27
|
* Start monitoring a prompt_id for completion via WS + polling dual-track.
|
|
28
|
+
* Optionally pass the submitted workflow so completed outputs can be
|
|
29
|
+
* registered with the AssetRegistry for view_image / regenerate.
|
|
26
30
|
*/
|
|
27
|
-
watch(promptId: string): void;
|
|
31
|
+
watch(promptId: string, workflow?: WorkflowJSON): void;
|
|
28
32
|
/**
|
|
29
33
|
* Stop monitoring a prompt_id.
|
|
30
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-watcher.d.ts","sourceRoot":"","sources":["../../src/services/job-watcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"job-watcher.d.ts","sourceRoot":"","sources":["../../src/services/job-watcher.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,KAAK,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AA2PD,eAAO,MAAM,UAAU;IACrB;;;;OAIG;oBACa,MAAM,aAAa,YAAY,GAAG,IAAI;IA4GtD;;OAEG;sBACe,MAAM,GAAG,IAAI;IAS/B;;OAEG;kBACW,MAAM,EAAE;IAItB;;OAEG;uBACsB,OAAO,CAAC,IAAI,CAAC;IA4BtC,oCAAoC;;CAIrC,CAAC"}
|