comfyui-mcp 0.48.21 → 0.48.22
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/README.md +2 -2
- package/dist/comfyui/client.js +46 -6
- package/dist/comfyui/client.js.map +1 -1
- package/dist/config.js +15 -0
- package/dist/config.js.map +1 -1
- package/dist/orchestrator/error-text.js +29 -1
- package/dist/orchestrator/error-text.js.map +1 -1
- package/dist/orchestrator/error-text.test.js +28 -0
- package/dist/orchestrator/error-text.test.js.map +1 -1
- package/dist/orchestrator/index.js +151 -50
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/orchestrator/panel-agent.js +21 -4
- package/dist/orchestrator/panel-agent.js.map +1 -1
- package/dist/orchestrator/panel-tools.js +1098 -168
- package/dist/orchestrator/panel-tools.js.map +1 -1
- package/dist/orchestrator/ready-banner.js +70 -0
- package/dist/orchestrator/ready-banner.js.map +1 -0
- package/dist/services/api-nodes.js +5 -7
- package/dist/services/api-nodes.js.map +1 -1
- package/dist/services/download-cache.js +126 -18
- package/dist/services/download-cache.js.map +1 -1
- package/dist/services/download-jobs.js +463 -14
- package/dist/services/download-jobs.js.map +1 -1
- package/dist/services/download-progress.js +247 -2
- package/dist/services/download-progress.js.map +1 -1
- package/dist/services/env-capabilities.js +80 -9
- package/dist/services/env-capabilities.js.map +1 -1
- package/dist/services/generate-audio.js +16 -0
- package/dist/services/generate-audio.js.map +1 -1
- package/dist/services/local-models-fallback.js +7 -3
- package/dist/services/local-models-fallback.js.map +1 -1
- package/dist/services/manifest.js +180 -65
- package/dist/services/manifest.js.map +1 -1
- package/dist/services/model-resolver.js +267 -11
- package/dist/services/model-resolver.js.map +1 -1
- package/dist/services/node-management.js +38 -27
- package/dist/services/node-management.js.map +1 -1
- package/dist/services/output-dir.js +33 -3
- package/dist/services/output-dir.js.map +1 -1
- package/dist/services/panel-secrets.js +19 -7
- package/dist/services/panel-secrets.js.map +1 -1
- package/dist/services/queue-monitor.js +45 -2
- package/dist/services/queue-monitor.js.map +1 -1
- package/dist/services/queue-monitor.stall.test.js +78 -0
- package/dist/services/queue-monitor.stall.test.js.map +1 -0
- package/dist/services/secure-bridge.js +84 -0
- package/dist/services/secure-bridge.js.map +1 -1
- package/dist/services/storage/azure-blob.js +8 -3
- package/dist/services/storage/azure-blob.js.map +1 -1
- package/dist/services/storage/index.js +3 -3
- package/dist/services/storage/index.js.map +1 -1
- package/dist/services/storage/s3.js +9 -3
- package/dist/services/storage/s3.js.map +1 -1
- package/dist/services/ui-bridge.js +294 -24
- package/dist/services/ui-bridge.js.map +1 -1
- package/dist/services/workflow-converter.js +767 -72
- package/dist/services/workflow-converter.js.map +1 -1
- package/dist/services/workflow-lock.js +127 -27
- package/dist/services/workflow-lock.js.map +1 -1
- package/dist/services/workspace-env.js +48 -0
- package/dist/services/workspace-env.js.map +1 -1
- package/dist/tools/generate-audio.js +44 -0
- package/dist/tools/generate-audio.js.map +1 -1
- package/dist/tools/model-extras.js +24 -4
- package/dist/tools/model-extras.js.map +1 -1
- package/dist/tools/model-management.js +124 -14
- package/dist/tools/model-management.js.map +1 -1
- package/dist/tools/report-issue.js +220 -66
- package/dist/tools/report-issue.js.map +1 -1
- package/dist/tools/report-issue.test.js +223 -83
- package/dist/tools/report-issue.test.js.map +1 -1
- package/dist/tools/skills-access.js +7 -2
- package/dist/tools/skills-access.js.map +1 -1
- package/dist/tools/template-schema.js +5 -5
- package/dist/tools/template-schema.js.map +1 -1
- package/dist/tools/workflow-compose.js +18 -3
- package/dist/tools/workflow-compose.js.map +1 -1
- package/package.json +1 -1
- package/packs/anima/install-runpod.sh +0 -1
- package/packs/anima/install-windows.bat +0 -1
- package/packs/anima/manifest.yaml +0 -1
- package/packs/anima-img2img/install-runpod.sh +0 -1
- package/packs/anima-img2img/install-windows.bat +0 -1
- package/packs/anima-img2img/manifest.yaml +0 -1
- package/packs/anima-inpaint/install-runpod.sh +0 -1
- package/packs/anima-inpaint/install-windows.bat +0 -1
- package/packs/anima-inpaint/manifest.yaml +0 -1
- package/packs/anima-txt2img/install-runpod.sh +0 -1
- package/packs/anima-txt2img/install-windows.bat +0 -1
- package/packs/anima-txt2img/manifest.yaml +0 -1
- package/packs/artokun-flow/install-runpod.sh +0 -1
- package/packs/artokun-flow/install-windows.bat +0 -1
- package/packs/artokun-flow/manifest.yaml +0 -1
- package/packs/ernie/install-runpod.sh +0 -1
- package/packs/ernie/install-windows.bat +0 -1
- package/packs/ernie/manifest.yaml +0 -1
- package/packs/ernie-combo/install-runpod.sh +0 -1
- package/packs/ernie-combo/install-windows.bat +0 -1
- package/packs/ernie-combo/manifest.yaml +0 -1
- package/packs/ernie-img2img/install-runpod.sh +0 -1
- package/packs/ernie-img2img/install-windows.bat +0 -1
- package/packs/ernie-img2img/manifest.yaml +0 -1
- package/packs/ernie-txt2img/install-runpod.sh +0 -1
- package/packs/ernie-txt2img/install-windows.bat +0 -1
- package/packs/ernie-txt2img/manifest.yaml +0 -1
- package/packs/ideogram/install-runpod.sh +0 -1
- package/packs/ideogram/install-windows.bat +0 -1
- package/packs/ideogram/manifest.yaml +0 -1
- package/packs/ideogram-img2img/install-runpod.sh +0 -1
- package/packs/ideogram-img2img/install-windows.bat +0 -1
- package/packs/ideogram-img2img/manifest.yaml +0 -1
- package/packs/ideogram-txt2img/install-runpod.sh +0 -1
- package/packs/ideogram-txt2img/install-windows.bat +0 -1
- package/packs/ideogram-txt2img/manifest.yaml +0 -1
- package/packs/ltx-2.3/install-runpod.sh +0 -1
- package/packs/ltx-2.3/install-windows.bat +0 -1
- package/packs/ltx-2.3/manifest.yaml +0 -1
- package/packs/ltx-2.3-extender/install-runpod.sh +0 -1
- package/packs/ltx-2.3-extender/install-windows.bat +0 -1
- package/packs/ltx-2.3-extender/manifest.yaml +0 -1
- package/packs/ltx-2.3-extender-no-audio/install-runpod.sh +0 -1
- package/packs/ltx-2.3-extender-no-audio/install-windows.bat +0 -1
- package/packs/ltx-2.3-extender-no-audio/manifest.yaml +0 -1
- package/packs/ltx-2.3-flf/install-runpod.sh +0 -1
- package/packs/ltx-2.3-flf/install-windows.bat +0 -1
- package/packs/ltx-2.3-flf/manifest.yaml +0 -1
- package/packs/ltx-2.3-img2vid/install-runpod.sh +0 -1
- package/packs/ltx-2.3-img2vid/install-windows.bat +0 -1
- package/packs/ltx-2.3-img2vid/manifest.yaml +3 -4
- package/packs/ltx-2.3-txt2vid/install-runpod.sh +0 -1
- package/packs/ltx-2.3-txt2vid/install-windows.bat +0 -1
- package/packs/ltx-2.3-txt2vid/manifest.yaml +3 -4
- package/packs/ltx-2.3-xy-plot/install-runpod.sh +0 -1
- package/packs/ltx-2.3-xy-plot/install-windows.bat +0 -1
- package/packs/ltx-2.3-xy-plot/manifest.yaml +0 -1
- package/packs/ltx23-distill-3stage/install-runpod.sh +0 -1
- package/packs/ltx23-distill-3stage/install-windows.bat +0 -1
- package/packs/ltx23-distill-3stage/manifest.yaml +0 -1
- package/packs/qwen-image/install-runpod.sh +0 -1
- package/packs/qwen-image/install-windows.bat +0 -1
- package/packs/qwen-image/manifest.yaml +0 -1
- package/packs/qwen-image-edit/install-runpod.sh +0 -1
- package/packs/qwen-image-edit/install-windows.bat +0 -1
- package/packs/qwen-image-edit/manifest.yaml +0 -1
- package/packs/qwen-image-edit-edit/install-runpod.sh +0 -1
- package/packs/qwen-image-edit-edit/install-windows.bat +0 -1
- package/packs/qwen-image-edit-edit/manifest.yaml +0 -1
- package/packs/wan-animate/install-runpod.sh +0 -1
- package/packs/wan-animate/install-windows.bat +0 -1
- package/packs/wan-animate/manifest.yaml +0 -1
- package/packs/wan-animate-character/install-runpod.sh +0 -1
- package/packs/wan-animate-character/install-windows.bat +0 -1
- package/packs/wan-animate-character/manifest.yaml +0 -1
- package/packs/wan-animate-ofm/install-runpod.sh +0 -1
- package/packs/wan-animate-ofm/install-windows.bat +0 -1
- package/packs/wan-animate-ofm/manifest.yaml +0 -1
- package/packs/wan-longer-videos/install-runpod.sh +0 -1
- package/packs/wan-longer-videos/install-windows.bat +0 -1
- package/packs/wan-longer-videos/manifest.yaml +0 -1
- package/packs/wan-longer-videos-i2v/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-i2v/install-windows.bat +0 -1
- package/packs/wan-longer-videos-i2v/manifest.yaml +0 -1
- package/packs/wan-longer-videos-i2v-96gb/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-i2v-96gb/install-windows.bat +0 -1
- package/packs/wan-longer-videos-i2v-96gb/manifest.yaml +0 -1
- package/packs/wan-longer-videos-t2v/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-t2v/install-windows.bat +0 -1
- package/packs/wan-longer-videos-t2v/manifest.yaml +0 -1
- package/packs/wan-longer-videos-t2v-96gb/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-t2v-96gb/install-windows.bat +0 -1
- package/packs/wan-longer-videos-t2v-96gb/manifest.yaml +0 -1
- package/packs/wan-longer-videos-v2v/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-v2v/install-windows.bat +0 -1
- package/packs/wan-longer-videos-v2v/manifest.yaml +0 -1
- package/packs/wan-longer-videos-v2v-96gb/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-v2v-96gb/install-windows.bat +0 -1
- package/packs/wan-longer-videos-v2v-96gb/manifest.yaml +0 -1
- package/packs/wan-multitalk/install-runpod.sh +0 -1
- package/packs/wan-multitalk/install-windows.bat +0 -1
- package/packs/wan-multitalk/manifest.yaml +0 -1
- package/packs/wan-pusa-extend/install-runpod.sh +0 -1
- package/packs/wan-pusa-extend/install-windows.bat +0 -1
- package/packs/wan-pusa-extend/manifest.yaml +0 -1
- package/packs/wan-transparent/install-runpod.sh +0 -1
- package/packs/wan-transparent/install-windows.bat +0 -1
- package/packs/wan-transparent/manifest.yaml +0 -1
- package/packs/wan-transparent-img2vid/install-runpod.sh +0 -1
- package/packs/wan-transparent-img2vid/install-windows.bat +0 -1
- package/packs/wan-transparent-img2vid/manifest.yaml +0 -1
- package/packs/wan-transparent-img2vid-96gb/install-runpod.sh +0 -1
- package/packs/wan-transparent-img2vid-96gb/install-windows.bat +0 -1
- package/packs/wan-transparent-img2vid-96gb/manifest.yaml +0 -1
- package/packs/z-image-base/install-runpod.sh +0 -1
- package/packs/z-image-base/install-windows.bat +0 -1
- package/packs/z-image-base/manifest.yaml +0 -1
- package/packs/z-image-base-combo/install-runpod.sh +0 -1
- package/packs/z-image-base-combo/install-windows.bat +0 -1
- package/packs/z-image-base-combo/manifest.yaml +0 -1
- package/packs/z-image-base-controlnet/install-runpod.sh +0 -1
- package/packs/z-image-base-controlnet/install-windows.bat +0 -1
- package/packs/z-image-base-controlnet/manifest.yaml +0 -1
- package/packs/z-image-base-img2img/install-runpod.sh +0 -1
- package/packs/z-image-base-img2img/install-windows.bat +0 -1
- package/packs/z-image-base-img2img/manifest.yaml +0 -1
- package/packs/z-image-base-inpaint/install-runpod.sh +0 -1
- package/packs/z-image-base-inpaint/install-windows.bat +0 -1
- package/packs/z-image-base-inpaint/manifest.yaml +0 -1
- package/packs/z-image-base-txt2img/install-runpod.sh +0 -1
- package/packs/z-image-base-txt2img/install-windows.bat +0 -1
- package/packs/z-image-base-txt2img/manifest.yaml +0 -1
- package/packs/z-image-turbo/install-runpod.sh +0 -1
- package/packs/z-image-turbo/install-windows.bat +0 -1
- package/packs/z-image-turbo/manifest.yaml +0 -1
- package/packs/z-image-turbo-combo/install-runpod.sh +0 -1
- package/packs/z-image-turbo-combo/install-windows.bat +0 -1
- package/packs/z-image-turbo-combo/manifest.yaml +0 -1
- package/packs/z-image-turbo-controlnet/install-runpod.sh +0 -1
- package/packs/z-image-turbo-controlnet/install-windows.bat +0 -1
- package/packs/z-image-turbo-controlnet/manifest.yaml +0 -1
- package/packs/z-image-turbo-detail-daemon/install-runpod.sh +0 -1
- package/packs/z-image-turbo-detail-daemon/install-windows.bat +0 -1
- package/packs/z-image-turbo-detail-daemon/manifest.yaml +0 -1
- package/packs/z-image-turbo-img2img/install-runpod.sh +0 -1
- package/packs/z-image-turbo-img2img/install-windows.bat +0 -1
- package/packs/z-image-turbo-img2img/manifest.yaml +0 -1
- package/packs/z-image-turbo-inpainting/install-runpod.sh +0 -1
- package/packs/z-image-turbo-inpainting/install-windows.bat +0 -1
- package/packs/z-image-turbo-inpainting/manifest.yaml +0 -1
- package/packs/z-image-turbo-txt2img/install-runpod.sh +0 -1
- package/packs/z-image-turbo-txt2img/install-windows.bat +0 -1
- package/packs/z-image-turbo-txt2img/manifest.yaml +0 -1
- package/packs/z-image-xy-plot/install-runpod.sh +0 -1
- package/packs/z-image-xy-plot/install-windows.bat +0 -1
- package/packs/z-image-xy-plot/manifest.yaml +0 -1
- package/scripts/test-packs.sh +8 -3
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// queue-monitor.stall.test.ts — the liveness-gated stall verdict (#183).
|
|
2
|
+
//
|
|
3
|
+
// The old heuristic flagged a stall on a flat "no FORWARD progress for N
|
|
4
|
+
// seconds", which false-fires on a legitimately long, progress-silent node
|
|
5
|
+
// (tiled VAE decode, audio/video sampling, a big model load): ComfyUI emits no
|
|
6
|
+
// progress tick for minutes while genuinely busy. report() now gates the verdict
|
|
7
|
+
// on server LIVENESS — a job is stalled only when the server has ALSO gone dark
|
|
8
|
+
// here (no ws frame + no successful /queue poll within the window). A reachable
|
|
9
|
+
// ComfyUI keeps the 1 Hz poll fresh, so a busy decode stays live; a crashed /
|
|
10
|
+
// wedged server lets the heartbeat lapse → a real stall still surfaces. A hard
|
|
11
|
+
// floor of 30 min backstops a genuine in-node deadlock on a reachable server.
|
|
12
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
13
|
+
import { QueueMonitor } from "./queue-monitor.js";
|
|
14
|
+
const priv = QueueMonitor;
|
|
15
|
+
const STALL_MS = 180_000; // the default 180s threshold
|
|
16
|
+
const HARD_FLOOR_MS = 30 * 60 * 1000;
|
|
17
|
+
/** Put the monitor into "a job has been running, last forward progress was
|
|
18
|
+
* `idleForMs` ago" and set the two liveness heartbeats explicitly. */
|
|
19
|
+
function primeRunning(opts) {
|
|
20
|
+
const now = Date.now();
|
|
21
|
+
priv.state.runningPromptId = "prompt-1";
|
|
22
|
+
priv.state.currentNode = opts.currentNode ?? "42";
|
|
23
|
+
priv.state.progressValue = 4;
|
|
24
|
+
priv.state.progressMax = 8;
|
|
25
|
+
priv.state.queueRemaining = 1;
|
|
26
|
+
priv.state.lastActivityTs = now - opts.idleForMs;
|
|
27
|
+
priv.state.lastServerAliveTs = opts.serverAliveAgoMs == null ? null : now - opts.serverAliveAgoMs;
|
|
28
|
+
priv.state.lastFrameTs = opts.wsFrameAgoMs == null ? null : now - opts.wsFrameAgoMs;
|
|
29
|
+
}
|
|
30
|
+
beforeEach(() => {
|
|
31
|
+
priv.url = "http://127.0.0.1:9999";
|
|
32
|
+
priv.stopped = false;
|
|
33
|
+
priv.state.connected = true;
|
|
34
|
+
priv.state.runningPromptId = null;
|
|
35
|
+
priv.state.currentNode = null;
|
|
36
|
+
priv.state.progressValue = null;
|
|
37
|
+
priv.state.progressMax = null;
|
|
38
|
+
priv.state.queueRemaining = 0;
|
|
39
|
+
priv.state.lastActivityTs = null;
|
|
40
|
+
priv.state.lastFrameTs = null;
|
|
41
|
+
priv.state.lastServerAliveTs = null;
|
|
42
|
+
priv.state.lastCompleted = null;
|
|
43
|
+
});
|
|
44
|
+
describe("QueueMonitor.report — liveness-gated stall (#183)", () => {
|
|
45
|
+
it("does NOT flag a busy long node: no forward progress but the /queue poll is fresh", () => {
|
|
46
|
+
// The reporter's case: an LTX video/VAE step ran ~443s with no panel-visible
|
|
47
|
+
// progress while ComfyUI was perfectly alive (answering /queue every second).
|
|
48
|
+
primeRunning({ idleForMs: 443_000, serverAliveAgoMs: 800, wsFrameAgoMs: null });
|
|
49
|
+
const rep = priv.report(STALL_MS);
|
|
50
|
+
expect(rep.stalled).toBe(false);
|
|
51
|
+
expect(rep.stalledForMs).toBe(0);
|
|
52
|
+
});
|
|
53
|
+
it("does NOT flag a busy node kept alive by ws frames alone (poll heartbeat absent)", () => {
|
|
54
|
+
primeRunning({ idleForMs: 443_000, serverAliveAgoMs: null, wsFrameAgoMs: 1_000 });
|
|
55
|
+
expect(priv.report(STALL_MS).stalled).toBe(false);
|
|
56
|
+
});
|
|
57
|
+
it("DOES flag a real stall: no forward progress AND the server has gone dark here", () => {
|
|
58
|
+
// Server stopped answering /queue and stopped sending ws frames well beyond
|
|
59
|
+
// the window — a crashed / event-loop-wedged ComfyUI, not a slow node.
|
|
60
|
+
primeRunning({ idleForMs: STALL_MS + 60_000, serverAliveAgoMs: STALL_MS + 60_000, wsFrameAgoMs: STALL_MS + 60_000 });
|
|
61
|
+
const rep = priv.report(STALL_MS);
|
|
62
|
+
expect(rep.stalled).toBe(true);
|
|
63
|
+
expect(rep.stalledForMs).toBeGreaterThanOrEqual(STALL_MS);
|
|
64
|
+
expect(rep.runningPromptId).toBe("prompt-1");
|
|
65
|
+
});
|
|
66
|
+
it("hard-floor backstop: an in-node deadlock on a still-reachable server flags after 30 min", () => {
|
|
67
|
+
// Server still answering (fresh poll) but ZERO forward progress for > 30 min
|
|
68
|
+
// — a genuine deadlock that must not be suppressed forever.
|
|
69
|
+
primeRunning({ idleForMs: HARD_FLOOR_MS + 60_000, serverAliveAgoMs: 500, wsFrameAgoMs: null });
|
|
70
|
+
expect(priv.report(STALL_MS).stalled).toBe(true);
|
|
71
|
+
});
|
|
72
|
+
it("never flags when nothing is running", () => {
|
|
73
|
+
priv.state.runningPromptId = null;
|
|
74
|
+
priv.state.lastActivityTs = Date.now() - 10 * HARD_FLOOR_MS;
|
|
75
|
+
expect(priv.report(STALL_MS).stalled).toBe(false);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=queue-monitor.stall.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-monitor.stall.test.js","sourceRoot":"","sources":["../../src/services/queue-monitor.stall.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
// generated per session and checked constant-time on every WS upgrade
|
|
23
23
|
// (see UiBridge).
|
|
24
24
|
import { randomBytes } from "node:crypto";
|
|
25
|
+
import { existsSync } from "node:fs";
|
|
25
26
|
import { startQuickTunnel } from "./tunnel.js";
|
|
26
27
|
import { RelayClient } from "./relay-client.js";
|
|
27
28
|
import { logger } from "../utils/logger.js";
|
|
@@ -73,6 +74,89 @@ export async function advertiseBridge(comfyuiUrl, wssUrl, shouldAdvertise) {
|
|
|
73
74
|
}
|
|
74
75
|
return false;
|
|
75
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* GET the panel's status route to learn where ComfyUI lives on THIS machine.
|
|
79
|
+
*
|
|
80
|
+
* The sidebar panel serves `/comfyui_mcp_panel/status` with a `base_path` — the
|
|
81
|
+
* ComfyUI install root the panel is running inside (panel commit f45054e). The
|
|
82
|
+
* orchestrator consumes it as a LAST-RESORT source of the local ComfyUI base for
|
|
83
|
+
* an embedded loopback session that has no CLI-configured workspace (COMFYUI_PATH
|
|
84
|
+
* unset AND auto-detect empty), so the path-dependent LOCAL surface still works —
|
|
85
|
+
* the comfyui MCP runs in LOCAL mode (download_model / apply_manifest / model
|
|
86
|
+
* scans) and panel_load_workflow's local fallback can resolve names (#296).
|
|
87
|
+
*
|
|
88
|
+
* Best-effort and time-bounded: returns undefined on ANY failure (unreachable,
|
|
89
|
+
* non-2xx, non-JSON, missing/blank field) so it can only ADD a path — it must
|
|
90
|
+
* NEVER throw or stall session start. Sent with the same auth headers as
|
|
91
|
+
* advertiseBridge so a token-gated panel answers. Disk validation is the caller's
|
|
92
|
+
* job (this returns the panel's raw claim).
|
|
93
|
+
*/
|
|
94
|
+
export async function fetchPanelBasePath(comfyuiUrl, timeoutMs = 2500) {
|
|
95
|
+
let endpoint;
|
|
96
|
+
try {
|
|
97
|
+
endpoint = new URL("/comfyui_mcp_panel/status", comfyuiUrl).toString();
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
const res = await fetch(endpoint, {
|
|
104
|
+
headers: { ...getComfyUIAuthHeaders() },
|
|
105
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
106
|
+
});
|
|
107
|
+
if (!res.ok)
|
|
108
|
+
return undefined;
|
|
109
|
+
const data = (await res.json());
|
|
110
|
+
if (!data || typeof data !== "object")
|
|
111
|
+
return undefined;
|
|
112
|
+
// The route's field is snake_case `base_path`; tolerate a camelCase alias.
|
|
113
|
+
const raw = data.base_path ??
|
|
114
|
+
data.basePath;
|
|
115
|
+
if (typeof raw === "string" && raw.trim())
|
|
116
|
+
return raw.trim();
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Resolve the effective LOCAL ComfyUI base directory for a session target,
|
|
125
|
+
* consulting the panel's status route as a LAST-RESORT fallback (#296).
|
|
126
|
+
*
|
|
127
|
+
* Decision order — kept in ONE place so startup and the panel-`hello` retarget
|
|
128
|
+
* path can never disagree about where ComfyUI lives:
|
|
129
|
+
* 1. A CLI-configured / auto-detected local path (`localPath`) wins, but ONLY
|
|
130
|
+
* for a loopback, non-force-remote target (a REMOTE/force-remote target must
|
|
131
|
+
* never adopt a local dir — it isn't the remote host).
|
|
132
|
+
* 2. Remote / force-remote target → undefined (routes through the Manager).
|
|
133
|
+
* 3. Otherwise (loopback, non-force-remote, but NO local path) → GET the panel's
|
|
134
|
+
* `/comfyui_mcp_panel/status` `base_path` and adopt it, but ONLY if that path
|
|
135
|
+
* actually EXISTS on this machine (a bogus / remote-looking claim must not
|
|
136
|
+
* poison LOCAL mode).
|
|
137
|
+
*
|
|
138
|
+
* `fetchBasePath`/`exists` are injectable purely for tests; production uses the
|
|
139
|
+
* real status fetch + `fs.existsSync`. Best-effort — never throws.
|
|
140
|
+
*/
|
|
141
|
+
export async function resolveComfyuiPathForTarget(opts) {
|
|
142
|
+
const { target, localPath, forceRemote, isLoopback } = opts;
|
|
143
|
+
if (!forceRemote && isLoopback && localPath)
|
|
144
|
+
return localPath;
|
|
145
|
+
if (forceRemote || !isLoopback)
|
|
146
|
+
return undefined;
|
|
147
|
+
const fetchBasePath = opts.fetchBasePath ?? fetchPanelBasePath;
|
|
148
|
+
const exists = opts.exists ?? existsSync;
|
|
149
|
+
let fromPanel;
|
|
150
|
+
try {
|
|
151
|
+
fromPanel = await fetchBasePath(target);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return undefined; // bulletproof — a broken fetch must not break session start
|
|
155
|
+
}
|
|
156
|
+
if (fromPanel && exists(fromPanel))
|
|
157
|
+
return fromPanel;
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
76
160
|
/**
|
|
77
161
|
* Stand up the secure bridge and advertise its URL to the pod. Backend is
|
|
78
162
|
* chosen by env (see the module doc comment above); cloudflared is the default.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secure-bridge.js","sourceRoot":"","sources":["../../src/services/secure-bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"secure-bridge.js","sourceRoot":"","sources":["../../src/services/secure-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,15 +111,20 @@ async function blobServiceClientForUpload() {
|
|
|
111
111
|
}
|
|
112
112
|
return envClient.client;
|
|
113
113
|
}
|
|
114
|
-
export async function downloadAzureBlobToFile(url, targetPath) {
|
|
114
|
+
export async function downloadAzureBlobToFile(url, targetPath, signal) {
|
|
115
115
|
try {
|
|
116
|
-
|
|
116
|
+
// Thread the abort signal into BOTH the SDK download and the write pipeline so a
|
|
117
|
+
// cancel_download (#515) aborts the Azure transfer; the streamUrlToFile cloud
|
|
118
|
+
// branch also guards before/after so a cancelled transfer is never finalized.
|
|
119
|
+
const response = await (await blobClientForDownload(url)).download(undefined, undefined, {
|
|
120
|
+
abortSignal: signal,
|
|
121
|
+
});
|
|
117
122
|
if (!response.readableStreamBody) {
|
|
118
123
|
throw new ModelError("Azure Blob download response has no body", {
|
|
119
124
|
url: redactUrlForLogs(url),
|
|
120
125
|
});
|
|
121
126
|
}
|
|
122
|
-
await pipeline(response.readableStreamBody, createWriteStream(targetPath));
|
|
127
|
+
await pipeline(response.readableStreamBody, createWriteStream(targetPath), { signal });
|
|
123
128
|
// #343 edge: verify the written size against the blob's authoritative
|
|
124
129
|
// contentLength so an early-ending stream can't be reported as a complete
|
|
125
130
|
// download (silent truncation).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure-blob.js","sourceRoot":"","sources":["../../../src/services/storage/azure-blob.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"azure-blob.js","sourceRoot":"","sources":["../../../src/services/storage/azure-blob.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,13 +77,13 @@ export function cloudPrincipalKey(url, auth = {}) {
|
|
|
77
77
|
}
|
|
78
78
|
return raw ? createHash("sha256").update(raw).digest("hex").slice(0, 16) : "";
|
|
79
79
|
}
|
|
80
|
-
export async function downloadCloudUrlToFile(url, targetPath, auth = {}) {
|
|
80
|
+
export async function downloadCloudUrlToFile(url, targetPath, auth = {}, signal) {
|
|
81
81
|
if (isS3Url(url)) {
|
|
82
|
-
await downloadS3ToFile(url, targetPath, auth.s3);
|
|
82
|
+
await downloadS3ToFile(url, targetPath, auth.s3, signal);
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
85
85
|
if (isAzureBlobUrl(url)) {
|
|
86
|
-
await downloadAzureBlobToFile(url, targetPath);
|
|
86
|
+
await downloadAzureBlobToFile(url, targetPath, signal);
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
89
|
throw new ValidationError("Unsupported cloud storage download URL. Expected s3://bucket/key or an Azure Blob URL.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,16 +45,22 @@ async function makeS3Client(auth) {
|
|
|
45
45
|
}
|
|
46
46
|
return new S3Client(config);
|
|
47
47
|
}
|
|
48
|
-
export async function downloadS3ToFile(url, targetPath, auth) {
|
|
48
|
+
export async function downloadS3ToFile(url, targetPath, auth, signal) {
|
|
49
49
|
const { bucket, key } = parseS3Url(url);
|
|
50
50
|
const { GetObjectCommand } = await loadAwsS3();
|
|
51
51
|
const client = await makeS3Client(auth);
|
|
52
52
|
try {
|
|
53
|
-
|
|
53
|
+
// Thread the abort signal into BOTH the SDK request and the write pipeline so a
|
|
54
|
+
// cancel_download (#515) aborts the S3 transfer promptly instead of running to
|
|
55
|
+
// completion. The streamUrlToFile cloud branch also guards before/after as a
|
|
56
|
+
// backstop, so a cancelled transfer is never finalized even if the SDK ignores it.
|
|
57
|
+
const response = await client.send(new GetObjectCommand({ Bucket: bucket, Key: key }), {
|
|
58
|
+
abortSignal: signal,
|
|
59
|
+
});
|
|
54
60
|
if (!response.Body) {
|
|
55
61
|
throw new ModelError("S3 download response has no body", { url: redactUrlForLogs(url) });
|
|
56
62
|
}
|
|
57
|
-
await pipeline(bodyToReadable(response.Body), createWriteStream(targetPath));
|
|
63
|
+
await pipeline(bodyToReadable(response.Body), createWriteStream(targetPath), { signal });
|
|
58
64
|
// #343 edge: the S3 stream can end early (dropped connection) and pipeline()
|
|
59
65
|
// still resolves, leaving a truncated file. S3 tells us the authoritative
|
|
60
66
|
// object size in ContentLength — verify the bytes on disk match before this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../../src/services/storage/s3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKhD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI1E,KAAK,UAAU,SAAS;IACtB,OAAO,kBAAkB,CAAY,oBAAoB,EAAE;QACzD,OAAO,EAAE,sBAAsB;QAC/B,WAAW,EAAE,gCAAgC;KAC9C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,eAAe,CAAC,2CAA2C,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,eAAe,CAAC,2CAA2C,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxF,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAa;IACvC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzF,MAAM,MAAM,GAAmB;QAC7B,MAAM;QACN,QAAQ;QACR,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC;KAClC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACzE,MAAM,eAAe,GAAG,IAAI,EAAE,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACrF,MAAM,YAAY,GAAG,IAAI,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC1E,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,CAAC,WAAW,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;IACtE,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAkB,EAClB,IAAa;
|
|
1
|
+
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../../src/services/storage/s3.ts"],"names":[],"mappings":"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"}
|