comfyui-mcp 0.8.1 → 0.9.1
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/CHANGELOG.md +72 -0
- package/README.md +31 -2
- package/dist/comfyui/client.d.ts.map +1 -1
- package/dist/comfyui/client.js +53 -2
- package/dist/comfyui/client.js.map +1 -1
- package/dist/comfyui/cloud-client.d.ts +37 -0
- package/dist/comfyui/cloud-client.d.ts.map +1 -0
- package/dist/comfyui/cloud-client.js +190 -0
- package/dist/comfyui/cloud-client.js.map +1 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +80 -7
- package/dist/config.js.map +1 -1
- package/dist/experimental/chat-handler.d.ts +6 -19
- package/dist/experimental/chat-handler.d.ts.map +1 -1
- package/dist/experimental/chat-handler.js +36 -41
- package/dist/experimental/chat-handler.js.map +1 -1
- package/dist/experimental/provider-registry.d.ts +2 -6
- package/dist/experimental/provider-registry.d.ts.map +1 -1
- package/dist/experimental/provider-registry.js +36 -28
- package/dist/experimental/provider-registry.js.map +1 -1
- package/dist/services/health-check.d.ts.map +1 -1
- package/dist/services/health-check.js +7 -0
- package/dist/services/health-check.js.map +1 -1
- package/dist/services/job-watcher.d.ts.map +1 -1
- package/dist/services/job-watcher.js +59 -47
- package/dist/services/job-watcher.js.map +1 -1
- package/dist/services/queue-manager.d.ts.map +1 -1
- package/dist/services/queue-manager.js +60 -0
- package/dist/services/queue-manager.js.map +1 -1
- package/dist/services/storage/azure-blob.d.ts.map +1 -1
- package/dist/services/storage/azure-blob.js +18 -8
- package/dist/services/storage/azure-blob.js.map +1 -1
- package/dist/services/storage/s3.d.ts.map +1 -1
- package/dist/services/storage/s3.js +13 -4
- package/dist/services/storage/s3.js.map +1 -1
- package/dist/services/tunnel.d.ts.map +1 -1
- package/dist/services/tunnel.js +9 -1
- package/dist/services/tunnel.js.map +1 -1
- package/dist/utils/optional-dep.d.ts +5 -0
- package/dist/utils/optional-dep.d.ts.map +1 -0
- package/dist/utils/optional-dep.js +29 -0
- package/dist/utils/optional-dep.js.map +1 -0
- package/package.json +11 -9
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,77 @@ All notable changes to this project are documented here. This project adheres to
|
|
|
4
4
|
[Semantic Versioning](https://semver.org/) and the format follows
|
|
5
5
|
[Keep a Changelog](https://keepachangelog.com/).
|
|
6
6
|
|
|
7
|
+
## Unreleased
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **`get_job_status` cloud-mode coverage** — when `COMFYUI_API_KEY` is set,
|
|
12
|
+
`get_job_status` now dispatches to `cloud-client.getJobStatus` (which calls
|
|
13
|
+
`/api/job/<id>/status`) and maps the cloud
|
|
14
|
+
`{ pending | in_progress | completed | failed }` shape to the existing
|
|
15
|
+
local `JobStatus`. Completed jobs are still enriched from history when
|
|
16
|
+
available; failed jobs surface the cloud's error string via
|
|
17
|
+
`error.exception_message`. Closes part of `comfyui-mcp-eik`.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Refined the `CLOUD_UNSUPPORTED` error message surfaced by tools that need
|
|
22
|
+
a direct ComfyUI session (workflow library, memory management, etc.). The
|
|
23
|
+
message no longer leaks the internal `getClient` function name and clearly
|
|
24
|
+
tells the user to unset `COMFYUI_API_KEY` to target a local or remote
|
|
25
|
+
ComfyUI.
|
|
26
|
+
- **Upgraded vitest to ^4.1.0** (dev-only). Clears
|
|
27
|
+
[GHSA-5xrq-8626-4rwp](https://github.com/advisories/GHSA-5xrq-8626-4rwp)
|
|
28
|
+
(Vitest UI server arbitrary file read/exec). Test infrastructure tweaks:
|
|
29
|
+
S3 mock now uses a `function` declaration (vitest 4 invokes mocked
|
|
30
|
+
constructors via `new`) and manager-config fallback tests call
|
|
31
|
+
`vi.clearAllMocks()` explicitly (vitest 4's `restoreAllMocks` no longer
|
|
32
|
+
resets `.mock.calls`). Closes `comfyui-mcp-g6e`.
|
|
33
|
+
|
|
34
|
+
## [0.9.0] - 2026-06-01
|
|
35
|
+
|
|
36
|
+
Three deployment modes, slimmer install footprint, and first-class
|
|
37
|
+
[Comfy Cloud](https://cloud.comfy.org) support — built from a survey of
|
|
38
|
+
forks and a port of the cloud-dispatch architecture from
|
|
39
|
+
[@picoSols](https://github.com/picoSols)'s `comfyui-cloud-mcp` fork.
|
|
40
|
+
|
|
41
|
+
### Added
|
|
42
|
+
|
|
43
|
+
- **Comfy Cloud mode** — set `COMFYUI_API_KEY` to route HTTP-backed primitives
|
|
44
|
+
(enqueue, history, system stats, queue, view, upload) to `cloud.comfy.org`
|
|
45
|
+
with `X-API-Key` authentication. WebSocket-bound and local-FS/process
|
|
46
|
+
tools throw a clear `CLOUD_UNSUPPORTED` error in this mode. New
|
|
47
|
+
`src/comfyui/cloud-client.ts` mirrors the local client interface so the
|
|
48
|
+
rest of the server is transparent to which backend it's talking to.
|
|
49
|
+
Architecture and dispatcher pattern originally shipped by
|
|
50
|
+
[@picoSols](https://github.com/picoSols) in
|
|
51
|
+
[`picoSols/comfyui-cloud-mcp@7a812069`](https://github.com/picoSols/comfyui-cloud-mcp/commit/7a812069).
|
|
52
|
+
- **Explicit remote mode + smart-detect** — when `--comfyui-url` points at a
|
|
53
|
+
non-loopback host (anything other than `127.0.0.1` / `localhost` / `::1` /
|
|
54
|
+
`0.0.0.0`), the server skips `COMFYUI_PATH` auto-detection. This closes
|
|
55
|
+
the root cause behind the 0.8.1 `upload_*` fix — a stale local install can
|
|
56
|
+
no longer silently absorb uploads/downloads the agent intended for the
|
|
57
|
+
remote target. An explicit `COMFYUI_PATH` env var still wins.
|
|
58
|
+
- **`isCloudMode()` / `isRemoteMode()` / `isLocalMode()`** config helpers and
|
|
59
|
+
`COMFYUI_CLOUD_URL` (defaults to `https://cloud.comfy.org`).
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
|
|
63
|
+
- **Slim install** — moved seven heavy/feature-gated packages out of
|
|
64
|
+
`dependencies` into `optionalDependencies` and dynamic-import them lazily
|
|
65
|
+
via a new `requireOptionalDep` helper:
|
|
66
|
+
`@aws-sdk/client-s3`, `@azure/storage-blob`, `cloudflared`,
|
|
67
|
+
`ai`, `@ai-sdk/anthropic`, `@ai-sdk/google`, `@ai-sdk/openai`. A
|
|
68
|
+
`npm install --no-optional comfyui-mcp` now yields a working core server;
|
|
69
|
+
features that need a missing optional dep surface a clear
|
|
70
|
+
`OPTIONAL_DEP_MISSING` error with the exact `npm install <pkg>` hint.
|
|
71
|
+
|
|
72
|
+
### Documentation
|
|
73
|
+
|
|
74
|
+
- New "Deployment modes" section in `docs/configuration.mdx` covering the
|
|
75
|
+
local / remote / cloud feature parity matrix and the `COMFYUI_API_KEY` /
|
|
76
|
+
`COMFYUI_CLOUD_URL` env vars.
|
|
77
|
+
|
|
7
78
|
## [0.8.1] - 2026-06-01
|
|
8
79
|
|
|
9
80
|
Bug-fix release picking up upstream contributions from
|
|
@@ -208,6 +279,7 @@ subprocess fallback where the API can't do the job.
|
|
|
208
279
|
|
|
209
280
|
Earlier releases predate this changelog.
|
|
210
281
|
|
|
282
|
+
[0.9.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.9.0
|
|
211
283
|
[0.8.1]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.8.1
|
|
212
284
|
[0.8.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.8.0
|
|
213
285
|
[0.7.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.7.0
|
package/README.md
CHANGED
|
@@ -407,12 +407,24 @@ Generates a comprehensive skill file documenting every node, its inputs/outputs,
|
|
|
407
407
|
|
|
408
408
|
The server auto-detects your ComfyUI installation and port. Override with environment variables if needed:
|
|
409
409
|
|
|
410
|
+
### Deployment modes
|
|
411
|
+
|
|
412
|
+
`comfyui-mcp` operates in one of three modes, auto-selected from the environment:
|
|
413
|
+
|
|
414
|
+
| Mode | Trigger | Local FS / process tools? |
|
|
415
|
+
|------|---------|----------------------------|
|
|
416
|
+
| **Local** | default | yes |
|
|
417
|
+
| **Remote** | `--comfyui-url` / `COMFYUI_URL` points at a non-loopback host | no — server skips `COMFYUI_PATH` auto-detection so stale local installs can't silently absorb uploads |
|
|
418
|
+
| **Cloud** | `COMFYUI_API_KEY` is set (targets [Comfy Cloud](https://cloud.comfy.org)) | no — HTTP primitives route via `cloud.comfy.org` over `X-API-Key`; WebSocket and local-only tools throw `CLOUD_UNSUPPORTED` |
|
|
419
|
+
|
|
410
420
|
| Variable | Default | Description |
|
|
411
421
|
|----------|---------|-------------|
|
|
412
|
-
| `COMFYUI_URL` | | Full ComfyUI URL, e.g. `https://comfy.example.com:8443` — overrides `COMFYUI_HOST`/`PORT`/`SSL` and skips auto-detection
|
|
422
|
+
| `COMFYUI_URL` | | Full ComfyUI URL, e.g. `https://comfy.example.com:8443` — overrides `COMFYUI_HOST`/`PORT`/`SSL` and skips auto-detection. Non-loopback hosts opt into **remote mode**. |
|
|
413
423
|
| `COMFYUI_HOST` | `127.0.0.1` | ComfyUI server address |
|
|
414
424
|
| `COMFYUI_PORT` | *(auto-detect)* | ComfyUI server port (tries 8188, then 8000) |
|
|
415
|
-
| `COMFYUI_PATH` | *(auto-detect)* | Path to ComfyUI data directory |
|
|
425
|
+
| `COMFYUI_PATH` | *(auto-detect)* | Path to ComfyUI data directory. Auto-detection suppressed in remote/cloud modes. |
|
|
426
|
+
| `COMFYUI_API_KEY` | | Comfy Cloud API key. When set, **cloud mode** is active and the server talks to `cloud.comfy.org`. Never logged. |
|
|
427
|
+
| `COMFYUI_CLOUD_URL` | `https://cloud.comfy.org` | Override the Comfy Cloud endpoint (testing/staging). |
|
|
416
428
|
| `CIVITAI_API_TOKEN` | | CivitAI API token for model downloads |
|
|
417
429
|
| `HUGGINGFACE_TOKEN` | | HuggingFace token for higher API rate limits |
|
|
418
430
|
| `GITHUB_TOKEN` | | GitHub token for skill generation (avoids rate limits) |
|
|
@@ -659,6 +671,23 @@ MIT — see [LICENSE](./LICENSE) for details.
|
|
|
659
671
|
|
|
660
672
|
The full, structured changelog lives in [CHANGELOG.md](./CHANGELOG.md). Recent highlights:
|
|
661
673
|
|
|
674
|
+
### 0.9.0 — 2026-06-01
|
|
675
|
+
|
|
676
|
+
**Comfy Cloud + remote mode + slim install.**
|
|
677
|
+
|
|
678
|
+
- **Comfy Cloud** — set `COMFYUI_API_KEY` to route HTTP-backed primitives to [cloud.comfy.org](https://cloud.comfy.org) with `X-API-Key` auth. Architecture and dispatcher pattern ported with attribution from [@picoSols](https://github.com/picoSols)'s `comfyui-cloud-mcp` fork.
|
|
679
|
+
- **Smart-detect remote mode** — `--comfyui-url` at a non-loopback host suppresses `COMFYUI_PATH` auto-detection, closing the root cause of the 0.8.1 upload-fallback bug.
|
|
680
|
+
- **`isCloudMode()` / `isRemoteMode()` / `isLocalMode()`** config helpers + new "Deployment modes" docs section.
|
|
681
|
+
- **Slim install** — seven heavy/feature-gated packages (`@aws-sdk/*`, `@azure/*`, `cloudflared`, `ai`, `@ai-sdk/*`) moved to `optionalDependencies` with lazy dynamic-imports; missing deps now surface `OPTIONAL_DEP_MISSING` with the exact `npm install` hint.
|
|
682
|
+
|
|
683
|
+
### 0.8.1 — 2026-06-01
|
|
684
|
+
|
|
685
|
+
**Upstream fork picks (with attribution to [@joaolvivas](https://github.com/joaolvivas)).**
|
|
686
|
+
|
|
687
|
+
- **`health_check`** — single-call pre-flight diagnostic (version, GPU/VRAM, queue, per-category `/models` populations, recent `/internal/logs` errors).
|
|
688
|
+
- **`search_custom_nodes` fix** — `api.comfy.org/nodes` was ignoring the `search` param server-side; now fetches a larger window and rank-filters client-side.
|
|
689
|
+
- **`upload_image` / `upload_video` / `upload_audio` HTTP-only** — removed the deceptive filesystem fallback that silently misrouted uploads when `COMFYUI_PATH` auto-detected a stale local install.
|
|
690
|
+
|
|
662
691
|
### 0.8.0 — 2026-05-26
|
|
663
692
|
|
|
664
693
|
**Lifecycle + I/O + discovery.**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/comfyui/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/comfyui/client.ts"],"names":[],"mappings":"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"}
|
package/dist/comfyui/client.js
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { Client } from "@stable-canvas/comfyui-client";
|
|
2
|
-
import { config, getComfyUIApiHost, getComfyUIProtocol } from "../config.js";
|
|
2
|
+
import { config, getComfyUIApiHost, getComfyUIProtocol, isCloudMode, } from "../config.js";
|
|
3
3
|
import { logger } from "../utils/logger.js";
|
|
4
|
-
import { ConnectionError } from "../utils/errors.js";
|
|
4
|
+
import { ComfyUIError, ConnectionError } from "../utils/errors.js";
|
|
5
|
+
import * as cloudClient from "./cloud-client.js";
|
|
6
|
+
// Functions that fundamentally require a local ComfyUI process (WebSocket-bound
|
|
7
|
+
// session, local `client.fetchApi` paths, etc.) throw via this guard when the
|
|
8
|
+
// server is configured for Comfy Cloud — there is no WebSocket to attach to
|
|
9
|
+
// and no local socket to call. Dispatcher pattern from @picoSols
|
|
10
|
+
// (picoSols/comfyui-cloud-mcp@7a812069).
|
|
11
|
+
function requireLocalMode(op) {
|
|
12
|
+
if (isCloudMode()) {
|
|
13
|
+
throw new ComfyUIError(`This tool needs a direct ComfyUI session (${op}) and is not available in Comfy Cloud mode. ` +
|
|
14
|
+
`Unset COMFYUI_API_KEY to target a local or remote ComfyUI instance.`, "CLOUD_UNSUPPORTED");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
5
17
|
let clientInstance = null;
|
|
6
18
|
export function getClient() {
|
|
19
|
+
requireLocalMode("getClient");
|
|
7
20
|
if (!clientInstance) {
|
|
8
21
|
clientInstance = new Client({
|
|
9
22
|
api_host: getComfyUIApiHost(),
|
|
@@ -18,6 +31,7 @@ export function getClient() {
|
|
|
18
31
|
return clientInstance;
|
|
19
32
|
}
|
|
20
33
|
export async function connectClient() {
|
|
34
|
+
requireLocalMode("connectClient");
|
|
21
35
|
const client = getClient();
|
|
22
36
|
try {
|
|
23
37
|
await client.connect();
|
|
@@ -33,6 +47,7 @@ export async function connectClient() {
|
|
|
33
47
|
* Only needed before WebSocket-dependent operations (enqueue with progress tracking).
|
|
34
48
|
*/
|
|
35
49
|
export async function ensureConnected() {
|
|
50
|
+
requireLocalMode("ensureConnected");
|
|
36
51
|
const client = getClient();
|
|
37
52
|
// If the socket looks healthy, return immediately
|
|
38
53
|
if (!client.closed) {
|
|
@@ -57,16 +72,22 @@ export async function ensureConnected() {
|
|
|
57
72
|
}
|
|
58
73
|
}
|
|
59
74
|
export async function getSystemStats() {
|
|
75
|
+
if (isCloudMode())
|
|
76
|
+
return cloudClient.getSystemStats();
|
|
60
77
|
const client = getClient();
|
|
61
78
|
const stats = await client.getSystemStats();
|
|
62
79
|
return stats;
|
|
63
80
|
}
|
|
64
81
|
export async function getObjectInfo() {
|
|
82
|
+
if (isCloudMode())
|
|
83
|
+
return cloudClient.getObjectInfo();
|
|
65
84
|
const client = getClient();
|
|
66
85
|
const info = await client.getNodeDefs();
|
|
67
86
|
return info;
|
|
68
87
|
}
|
|
69
88
|
export async function getQueue() {
|
|
89
|
+
if (isCloudMode())
|
|
90
|
+
return cloudClient.getQueue();
|
|
70
91
|
const client = getClient();
|
|
71
92
|
const queue = await client.getQueue();
|
|
72
93
|
return {
|
|
@@ -75,6 +96,8 @@ export async function getQueue() {
|
|
|
75
96
|
};
|
|
76
97
|
}
|
|
77
98
|
export async function interrupt(promptId) {
|
|
99
|
+
if (isCloudMode())
|
|
100
|
+
return cloudClient.interrupt(promptId);
|
|
78
101
|
const client = getClient();
|
|
79
102
|
await client.interrupt(promptId ?? null);
|
|
80
103
|
}
|
|
@@ -83,6 +106,8 @@ export async function interrupt(promptId) {
|
|
|
83
106
|
* Returns prompt_id and queue position immediately.
|
|
84
107
|
*/
|
|
85
108
|
export async function enqueuePrompt(workflow, extraData) {
|
|
109
|
+
if (isCloudMode())
|
|
110
|
+
return cloudClient.enqueuePrompt(workflow, extraData);
|
|
86
111
|
const client = getClient();
|
|
87
112
|
// The SDK's _enqueue_prompt does not forward `extra_data`, which is how
|
|
88
113
|
// comfy.org API-node credentials (api_key_comfy_org / auth_token_comfy_org)
|
|
@@ -115,6 +140,8 @@ export async function enqueuePrompt(workflow, extraData) {
|
|
|
115
140
|
* Remove a specific pending job from the queue by prompt_id.
|
|
116
141
|
*/
|
|
117
142
|
export async function deleteQueueItem(id) {
|
|
143
|
+
if (isCloudMode())
|
|
144
|
+
return cloudClient.deleteQueueItem(id);
|
|
118
145
|
const client = getClient();
|
|
119
146
|
await client.deleteItem("queue", id);
|
|
120
147
|
}
|
|
@@ -122,30 +149,44 @@ export async function deleteQueueItem(id) {
|
|
|
122
149
|
* Clear all pending jobs from the queue (doesn't affect running job).
|
|
123
150
|
*/
|
|
124
151
|
export async function clearQueue() {
|
|
152
|
+
if (isCloudMode())
|
|
153
|
+
return cloudClient.clearQueue();
|
|
125
154
|
const client = getClient();
|
|
126
155
|
await client.clearItems("queue");
|
|
127
156
|
}
|
|
128
157
|
export async function getSamplers() {
|
|
158
|
+
if (isCloudMode())
|
|
159
|
+
return cloudClient.getSamplers();
|
|
129
160
|
const client = getClient();
|
|
130
161
|
return client.getSamplers();
|
|
131
162
|
}
|
|
132
163
|
export async function getSchedulers() {
|
|
164
|
+
if (isCloudMode())
|
|
165
|
+
return cloudClient.getSchedulers();
|
|
133
166
|
const client = getClient();
|
|
134
167
|
return client.getSchedulers();
|
|
135
168
|
}
|
|
136
169
|
export async function getCheckpoints() {
|
|
170
|
+
if (isCloudMode())
|
|
171
|
+
return cloudClient.getCheckpoints();
|
|
137
172
|
const client = getClient();
|
|
138
173
|
return client.getSDModels();
|
|
139
174
|
}
|
|
140
175
|
export async function getLoRAs() {
|
|
176
|
+
if (isCloudMode())
|
|
177
|
+
return cloudClient.getLoRAs();
|
|
141
178
|
const client = getClient();
|
|
142
179
|
return client.getLoRAs();
|
|
143
180
|
}
|
|
144
181
|
export async function getVAEs() {
|
|
182
|
+
if (isCloudMode())
|
|
183
|
+
return cloudClient.getVAEs();
|
|
145
184
|
const client = getClient();
|
|
146
185
|
return client.getVAEs();
|
|
147
186
|
}
|
|
148
187
|
export async function getUpscaleModels() {
|
|
188
|
+
if (isCloudMode())
|
|
189
|
+
return cloudClient.getUpscaleModels();
|
|
149
190
|
const client = getClient();
|
|
150
191
|
return client.getUpscaleModels();
|
|
151
192
|
}
|
|
@@ -162,9 +203,13 @@ export function resetClient() {
|
|
|
162
203
|
}
|
|
163
204
|
}
|
|
164
205
|
export function getComfyUIPath() {
|
|
206
|
+
if (isCloudMode())
|
|
207
|
+
return cloudClient.getComfyUIPath();
|
|
165
208
|
return config.comfyuiPath;
|
|
166
209
|
}
|
|
167
210
|
export async function getLogs() {
|
|
211
|
+
if (isCloudMode())
|
|
212
|
+
return cloudClient.getLogs();
|
|
168
213
|
const client = getClient();
|
|
169
214
|
const res = await client.fetchApi("/internal/logs");
|
|
170
215
|
const text = await res.text();
|
|
@@ -182,6 +227,8 @@ export async function getLogs() {
|
|
|
182
227
|
return text.split("\n").filter(Boolean);
|
|
183
228
|
}
|
|
184
229
|
export async function getHistory(promptId) {
|
|
230
|
+
if (isCloudMode())
|
|
231
|
+
return cloudClient.getHistory(promptId);
|
|
185
232
|
const client = getClient();
|
|
186
233
|
const path = promptId ? `/history/${promptId}` : "/history";
|
|
187
234
|
const res = await client.fetchApi(path);
|
|
@@ -192,6 +239,8 @@ export async function getHistory(promptId) {
|
|
|
192
239
|
* Works over HTTP — no local filesystem access needed.
|
|
193
240
|
*/
|
|
194
241
|
export async function fetchImage(filename, type = "output", subfolder = "") {
|
|
242
|
+
if (isCloudMode())
|
|
243
|
+
return cloudClient.fetchImage(filename, type, subfolder);
|
|
195
244
|
const client = getClient();
|
|
196
245
|
const params = new URLSearchParams({ filename, type, subfolder });
|
|
197
246
|
const res = await client.fetchApi(`/view?${params.toString()}`);
|
|
@@ -209,6 +258,8 @@ export async function fetchImage(filename, type = "output", subfolder = "") {
|
|
|
209
258
|
* Works over HTTP — no local filesystem access needed.
|
|
210
259
|
*/
|
|
211
260
|
export async function uploadImageHttp(filename, data, mimeType = "image/png") {
|
|
261
|
+
if (isCloudMode())
|
|
262
|
+
return cloudClient.uploadImageHttp(filename, data, mimeType);
|
|
212
263
|
const client = getClient();
|
|
213
264
|
const formData = new FormData();
|
|
214
265
|
const blob = new Blob([data], { type: mimeType });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/comfyui/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/comfyui/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { HistoryEntry } from "./client.js";
|
|
2
|
+
import type { ObjectInfo, QueueStatus, SystemStats } from "./types.js";
|
|
3
|
+
export interface CloudJobStatus {
|
|
4
|
+
status: "pending" | "in_progress" | "completed" | "failed";
|
|
5
|
+
prompt_id?: string;
|
|
6
|
+
error?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function enqueuePrompt(workflow: Record<string, unknown>, extraData?: Record<string, unknown>): Promise<{
|
|
9
|
+
prompt_id: string;
|
|
10
|
+
queue_remaining?: number;
|
|
11
|
+
}>;
|
|
12
|
+
export declare function getHistory(promptId?: string): Promise<Record<string, HistoryEntry>>;
|
|
13
|
+
export declare function getSystemStats(): Promise<SystemStats>;
|
|
14
|
+
export declare function getQueue(): Promise<QueueStatus>;
|
|
15
|
+
export declare function interrupt(promptId?: string): Promise<void>;
|
|
16
|
+
export declare function deleteQueueItem(_id: string): Promise<void>;
|
|
17
|
+
export declare function clearQueue(): Promise<void>;
|
|
18
|
+
export declare function getJobStatus(promptId: string): Promise<CloudJobStatus>;
|
|
19
|
+
export declare function getObjectInfo(): Promise<ObjectInfo>;
|
|
20
|
+
export declare function getSamplers(): Promise<string[]>;
|
|
21
|
+
export declare function getSchedulers(): Promise<string[]>;
|
|
22
|
+
export declare function getCheckpoints(): Promise<string[]>;
|
|
23
|
+
export declare function getLoRAs(): Promise<string[]>;
|
|
24
|
+
export declare function getVAEs(): Promise<string[]>;
|
|
25
|
+
export declare function getUpscaleModels(): Promise<string[]>;
|
|
26
|
+
export declare function getLogs(): Promise<string[]>;
|
|
27
|
+
export declare function fetchImage(filename: string, type?: "output" | "input" | "temp", subfolder?: string): Promise<{
|
|
28
|
+
base64: string;
|
|
29
|
+
mimeType: string;
|
|
30
|
+
}>;
|
|
31
|
+
export declare function uploadImageHttp(filename: string, data: Buffer, mimeType?: string): Promise<{
|
|
32
|
+
name: string;
|
|
33
|
+
subfolder: string;
|
|
34
|
+
type: string;
|
|
35
|
+
}>;
|
|
36
|
+
export declare function getComfyUIPath(): string | undefined;
|
|
37
|
+
//# sourceMappingURL=cloud-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-client.d.ts","sourceRoot":"","sources":["../../src/comfyui/cloud-client.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA2CvE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAa1D;AAED,wBAAsB,UAAU,CAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAcvC;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CA0B3D;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAErD;AAED,wBAAsB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAShE;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhE;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAKhD;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAG5E;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAKzD;AAeD,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAErD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEvD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAKxD;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAKlD;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAKjD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAK1D;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAKjD;AAED,wBAAsB,UAAU,CAC9B,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,CAAA;CAAE,CAAC,CAiB/C;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAc,GACrB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAa5D;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// Comfy Cloud client — mirrors the surface of ./client.ts (`getSystemStats`,
|
|
2
|
+
// `getQueue`, `enqueuePrompt`, `getHistory`, `interrupt`, `fetchImage`,
|
|
3
|
+
// `uploadImageHttp`, etc.) but talks to https://cloud.comfy.org over HTTPS
|
|
4
|
+
// authenticated with `X-API-Key`. WebSocket / `/internal/logs` /
|
|
5
|
+
// `/object_info` have no cloud equivalents — those throw `CLOUD_UNSUPPORTED`
|
|
6
|
+
// so callers can degrade gracefully.
|
|
7
|
+
//
|
|
8
|
+
// Architecture (isCloudMode() dispatch + parallel cloud-client.ts) was
|
|
9
|
+
// originally shipped by @picoSols in `picoSols/comfyui-cloud-mcp@7a812069`
|
|
10
|
+
// (2026-03-25). This is a port adapted to our config helpers + error types,
|
|
11
|
+
// with `fetchImage` / `uploadImageHttp` added so our existing image tools
|
|
12
|
+
// keep working in cloud mode.
|
|
13
|
+
import { getApiKey, getCloudUrl } from "../config.js";
|
|
14
|
+
import { ComfyUIError, ConnectionError } from "../utils/errors.js";
|
|
15
|
+
import { logger } from "../utils/logger.js";
|
|
16
|
+
function cloudUrl(path) {
|
|
17
|
+
const base = getCloudUrl().replace(/\/+$/, "");
|
|
18
|
+
const p = path.startsWith("/") ? path : `/${path}`;
|
|
19
|
+
return `${base}${p}`;
|
|
20
|
+
}
|
|
21
|
+
function authHeaders(extra = {}) {
|
|
22
|
+
return { "X-API-Key": getApiKey(), ...extra };
|
|
23
|
+
}
|
|
24
|
+
async function cloudFetch(path, init) {
|
|
25
|
+
const url = cloudUrl(path);
|
|
26
|
+
const baseHeaders = init?.skipJsonContentType
|
|
27
|
+
? {}
|
|
28
|
+
: { "Content-Type": "application/json" };
|
|
29
|
+
const headers = {
|
|
30
|
+
...authHeaders(baseHeaders),
|
|
31
|
+
...(init?.headers ?? {}),
|
|
32
|
+
};
|
|
33
|
+
try {
|
|
34
|
+
const res = await fetch(url, { ...init, headers });
|
|
35
|
+
if (!res.ok) {
|
|
36
|
+
const body = await res.text().catch(() => "");
|
|
37
|
+
throw new ComfyUIError(`Cloud API error: ${res.status} ${res.statusText} — ${body.slice(0, 500)}`, "CLOUD_API_ERROR", { url, status: res.status });
|
|
38
|
+
}
|
|
39
|
+
return res;
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
if (err instanceof ComfyUIError)
|
|
43
|
+
throw err;
|
|
44
|
+
throw new ConnectionError(`Failed to reach Comfy Cloud at ${url}: ${err instanceof Error ? err.message : err}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export async function enqueuePrompt(workflow, extraData) {
|
|
48
|
+
logger.info("Cloud: submitting workflow to Comfy Cloud");
|
|
49
|
+
const body = { prompt: workflow };
|
|
50
|
+
if (extraData && Object.keys(extraData).length > 0) {
|
|
51
|
+
body.extra_data = extraData;
|
|
52
|
+
}
|
|
53
|
+
const res = await cloudFetch("/api/prompt", {
|
|
54
|
+
method: "POST",
|
|
55
|
+
body: JSON.stringify(body),
|
|
56
|
+
});
|
|
57
|
+
const data = (await res.json());
|
|
58
|
+
logger.info("Cloud: workflow submitted", { prompt_id: data.prompt_id });
|
|
59
|
+
return { prompt_id: data.prompt_id, queue_remaining: data.number };
|
|
60
|
+
}
|
|
61
|
+
export async function getHistory(promptId) {
|
|
62
|
+
if (!promptId) {
|
|
63
|
+
logger.warn("Cloud: getHistory() without prompt_id returns {} (no global history endpoint)");
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
const res = await cloudFetch(`/api/history_v2/${promptId}`);
|
|
67
|
+
const data = await res.json();
|
|
68
|
+
if (data && typeof data === "object") {
|
|
69
|
+
if (data[promptId]) {
|
|
70
|
+
return data;
|
|
71
|
+
}
|
|
72
|
+
return { [promptId]: data };
|
|
73
|
+
}
|
|
74
|
+
return {};
|
|
75
|
+
}
|
|
76
|
+
export async function getSystemStats() {
|
|
77
|
+
try {
|
|
78
|
+
const res = await cloudFetch("/system_stats");
|
|
79
|
+
return (await res.json());
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
logger.info("Cloud: /system_stats unavailable, returning placeholder");
|
|
83
|
+
return {
|
|
84
|
+
system: {
|
|
85
|
+
os: "cloud",
|
|
86
|
+
python_version: "cloud",
|
|
87
|
+
embedded_python: false,
|
|
88
|
+
comfyui_version: "cloud",
|
|
89
|
+
},
|
|
90
|
+
devices: [
|
|
91
|
+
{
|
|
92
|
+
name: "Comfy Cloud GPU",
|
|
93
|
+
type: "cloud",
|
|
94
|
+
index: 0,
|
|
95
|
+
vram_total: 0,
|
|
96
|
+
vram_free: 0,
|
|
97
|
+
torch_vram_total: 0,
|
|
98
|
+
torch_vram_free: 0,
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export async function getQueue() {
|
|
105
|
+
return { queue_running: [], queue_pending: [] };
|
|
106
|
+
}
|
|
107
|
+
export async function interrupt(promptId) {
|
|
108
|
+
if (!promptId) {
|
|
109
|
+
throw new ComfyUIError("Cancel requires a prompt_id in Comfy Cloud mode (no concept of 'current job').", "CLOUD_UNSUPPORTED");
|
|
110
|
+
}
|
|
111
|
+
await cloudFetch(`/api/job/${promptId}/cancel`, { method: "POST" });
|
|
112
|
+
logger.info("Cloud: job cancelled", { prompt_id: promptId });
|
|
113
|
+
}
|
|
114
|
+
export async function deleteQueueItem(_id) {
|
|
115
|
+
throw new ComfyUIError("delete_queue_item is not supported in Comfy Cloud mode. Use cancel_job with a prompt_id.", "CLOUD_UNSUPPORTED");
|
|
116
|
+
}
|
|
117
|
+
export async function clearQueue() {
|
|
118
|
+
throw new ComfyUIError("clear_queue is not supported in Comfy Cloud mode.", "CLOUD_UNSUPPORTED");
|
|
119
|
+
}
|
|
120
|
+
export async function getJobStatus(promptId) {
|
|
121
|
+
const res = await cloudFetch(`/api/job/${promptId}/status`);
|
|
122
|
+
return (await res.json());
|
|
123
|
+
}
|
|
124
|
+
export async function getObjectInfo() {
|
|
125
|
+
throw new ComfyUIError("get_node_info (object_info) is not available in Comfy Cloud mode.", "CLOUD_UNSUPPORTED");
|
|
126
|
+
}
|
|
127
|
+
const COMMON_SAMPLERS = [
|
|
128
|
+
"euler", "euler_ancestral", "heun", "heunpp2", "dpm_2", "dpm_2_ancestral",
|
|
129
|
+
"lms", "dpm_fast", "dpm_adaptive", "dpmpp_2s_ancestral", "dpmpp_sde",
|
|
130
|
+
"dpmpp_sde_gpu", "dpmpp_2m", "dpmpp_2m_sde", "dpmpp_2m_sde_gpu",
|
|
131
|
+
"dpmpp_3m_sde", "dpmpp_3m_sde_gpu", "ddpm", "lcm", "ddim", "uni_pc",
|
|
132
|
+
"uni_pc_bh2",
|
|
133
|
+
];
|
|
134
|
+
const COMMON_SCHEDULERS = [
|
|
135
|
+
"normal", "karras", "exponential", "sgm_uniform", "simple", "ddim_uniform",
|
|
136
|
+
"beta",
|
|
137
|
+
];
|
|
138
|
+
export async function getSamplers() {
|
|
139
|
+
return [...COMMON_SAMPLERS];
|
|
140
|
+
}
|
|
141
|
+
export async function getSchedulers() {
|
|
142
|
+
return [...COMMON_SCHEDULERS];
|
|
143
|
+
}
|
|
144
|
+
export async function getCheckpoints() {
|
|
145
|
+
throw new ComfyUIError("Listing local checkpoints is not supported in Comfy Cloud mode.", "CLOUD_UNSUPPORTED");
|
|
146
|
+
}
|
|
147
|
+
export async function getLoRAs() {
|
|
148
|
+
throw new ComfyUIError("Listing local LoRAs is not supported in Comfy Cloud mode.", "CLOUD_UNSUPPORTED");
|
|
149
|
+
}
|
|
150
|
+
export async function getVAEs() {
|
|
151
|
+
throw new ComfyUIError("Listing local VAEs is not supported in Comfy Cloud mode.", "CLOUD_UNSUPPORTED");
|
|
152
|
+
}
|
|
153
|
+
export async function getUpscaleModels() {
|
|
154
|
+
throw new ComfyUIError("Listing local upscale models is not supported in Comfy Cloud mode.", "CLOUD_UNSUPPORTED");
|
|
155
|
+
}
|
|
156
|
+
export async function getLogs() {
|
|
157
|
+
throw new ComfyUIError("Server logs are not available in Comfy Cloud mode.", "CLOUD_UNSUPPORTED");
|
|
158
|
+
}
|
|
159
|
+
export async function fetchImage(filename, type = "output", subfolder = "") {
|
|
160
|
+
const params = new URLSearchParams({ filename, type, subfolder });
|
|
161
|
+
const url = cloudUrl(`/api/view?${params.toString()}`);
|
|
162
|
+
// /api/view returns either bytes or a 302 to a signed URL.
|
|
163
|
+
const res = await fetch(url, { headers: authHeaders(), redirect: "follow" });
|
|
164
|
+
if (!res.ok) {
|
|
165
|
+
throw new ComfyUIError(`Cloud /api/view ${res.status} for "${filename}"`, "CLOUD_API_ERROR", { status: res.status });
|
|
166
|
+
}
|
|
167
|
+
const contentType = res.headers.get("content-type") ?? "image/png";
|
|
168
|
+
const mimeType = contentType.split(";")[0].trim();
|
|
169
|
+
const arrayBuffer = await res.arrayBuffer();
|
|
170
|
+
const base64 = Buffer.from(arrayBuffer).toString("base64");
|
|
171
|
+
return { base64, mimeType };
|
|
172
|
+
}
|
|
173
|
+
export async function uploadImageHttp(filename, data, mimeType = "image/png") {
|
|
174
|
+
const formData = new FormData();
|
|
175
|
+
const blob = new Blob([data], { type: mimeType });
|
|
176
|
+
formData.append("image", blob, filename);
|
|
177
|
+
formData.append("type", "input");
|
|
178
|
+
formData.append("overwrite", "true");
|
|
179
|
+
// multipart sets its own Content-Type; skip the JSON header.
|
|
180
|
+
const res = await cloudFetch("/upload/image", {
|
|
181
|
+
method: "POST",
|
|
182
|
+
body: formData,
|
|
183
|
+
skipJsonContentType: true,
|
|
184
|
+
});
|
|
185
|
+
return res.json();
|
|
186
|
+
}
|
|
187
|
+
export function getComfyUIPath() {
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=cloud-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-client.js","sourceRoot":"","sources":["../../src/comfyui/cloud-client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ declare const configSchema: z.ZodObject<{
|
|
|
4
4
|
comfyuiPort: z.ZodOptional<z.ZodNumber>;
|
|
5
5
|
comfyuiSsl: z.ZodDefault<z.ZodBoolean>;
|
|
6
6
|
comfyuiPath: z.ZodOptional<z.ZodString>;
|
|
7
|
+
comfyuiApiKey: z.ZodOptional<z.ZodString>;
|
|
8
|
+
comfyuiCloudUrl: z.ZodDefault<z.ZodString>;
|
|
7
9
|
huggingfaceToken: z.ZodOptional<z.ZodString>;
|
|
8
10
|
githubToken: z.ZodOptional<z.ZodString>;
|
|
9
11
|
civitaiApiToken: z.ZodOptional<z.ZodString>;
|
|
@@ -11,8 +13,10 @@ declare const configSchema: z.ZodObject<{
|
|
|
11
13
|
}, "strip", z.ZodTypeAny, {
|
|
12
14
|
comfyuiHost: string;
|
|
13
15
|
comfyuiSsl: boolean;
|
|
16
|
+
comfyuiCloudUrl: string;
|
|
14
17
|
comfyuiPort?: number | undefined;
|
|
15
18
|
comfyuiPath?: string | undefined;
|
|
19
|
+
comfyuiApiKey?: string | undefined;
|
|
16
20
|
huggingfaceToken?: string | undefined;
|
|
17
21
|
githubToken?: string | undefined;
|
|
18
22
|
civitaiApiToken?: string | undefined;
|
|
@@ -22,6 +26,8 @@ declare const configSchema: z.ZodObject<{
|
|
|
22
26
|
comfyuiPort?: number | undefined;
|
|
23
27
|
comfyuiSsl?: boolean | undefined;
|
|
24
28
|
comfyuiPath?: string | undefined;
|
|
29
|
+
comfyuiApiKey?: string | undefined;
|
|
30
|
+
comfyuiCloudUrl?: string | undefined;
|
|
25
31
|
huggingfaceToken?: string | undefined;
|
|
26
32
|
githubToken?: string | undefined;
|
|
27
33
|
civitaiApiToken?: string | undefined;
|
|
@@ -31,6 +37,11 @@ export type Config = z.infer<typeof configSchema> & {
|
|
|
31
37
|
resolvedPort: number;
|
|
32
38
|
};
|
|
33
39
|
export declare const config: Config;
|
|
40
|
+
export declare function isCloudMode(): boolean;
|
|
41
|
+
export declare function isRemoteMode(): boolean;
|
|
42
|
+
export declare function isLocalMode(): boolean;
|
|
43
|
+
export declare function getCloudUrl(): string;
|
|
44
|
+
export declare function getApiKey(): string;
|
|
34
45
|
export declare function getComfyUIApiHost(): string;
|
|
35
46
|
export declare function getComfyUIProtocol(): "http" | "https";
|
|
36
47
|
export {};
|