comfyui-mcp 0.6.0 → 0.7.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/.codex/hooks.json +15 -0
- package/CHANGELOG.md +64 -0
- package/README.md +45 -1
- package/ROADMAP.md +120 -0
- package/TODO.md +75 -0
- package/blog/comfyui-mcp-tdqs-case-study.md +102 -0
- package/design/embedded-agent-panel.md +118 -0
- package/dist/experimental/agent-poc.d.ts +30 -0
- package/dist/experimental/agent-poc.d.ts.map +1 -0
- package/dist/experimental/agent-poc.js +210 -0
- package/dist/experimental/agent-poc.js.map +1 -0
- package/dist/experimental/chat-handler.d.ts +34 -0
- package/dist/experimental/chat-handler.d.ts.map +1 -0
- package/dist/experimental/chat-handler.js +60 -0
- package/dist/experimental/chat-handler.js.map +1 -0
- package/dist/experimental/provider-registry.d.ts +8 -0
- package/dist/experimental/provider-registry.d.ts.map +1 -0
- package/dist/experimental/provider-registry.js +50 -0
- package/dist/experimental/provider-registry.js.map +1 -0
- package/dist/experimental/run.d.ts +3 -0
- package/dist/experimental/run.d.ts.map +1 -0
- package/dist/experimental/run.js +34 -0
- package/dist/experimental/run.js.map +1 -0
- package/dist/services/download-auth.d.ts +23 -0
- package/dist/services/download-auth.d.ts.map +1 -0
- package/dist/services/download-auth.js +78 -0
- package/dist/services/download-auth.js.map +1 -0
- package/dist/services/download-cache.d.ts +26 -0
- package/dist/services/download-cache.d.ts.map +1 -0
- package/dist/services/download-cache.js +167 -0
- package/dist/services/download-cache.js.map +1 -0
- package/dist/services/image-management.d.ts +14 -0
- package/dist/services/image-management.d.ts.map +1 -1
- package/dist/services/image-management.js +57 -0
- package/dist/services/image-management.js.map +1 -1
- package/dist/services/job-history.d.ts +28 -0
- package/dist/services/job-history.d.ts.map +1 -0
- package/dist/services/job-history.js +130 -0
- package/dist/services/job-history.js.map +1 -0
- package/dist/services/job-watcher.d.ts +8 -0
- package/dist/services/job-watcher.d.ts.map +1 -1
- package/dist/services/job-watcher.js +16 -20
- package/dist/services/job-watcher.js.map +1 -1
- package/dist/services/model-resolver.d.ts +2 -1
- package/dist/services/model-resolver.d.ts.map +1 -1
- package/dist/services/model-resolver.js +11 -18
- package/dist/services/model-resolver.js.map +1 -1
- package/dist/services/node-authoring.d.ts +112 -0
- package/dist/services/node-authoring.d.ts.map +1 -0
- package/dist/services/node-authoring.js +418 -0
- package/dist/services/node-authoring.js.map +1 -0
- package/dist/services/node-management.d.ts +7 -0
- package/dist/services/node-management.d.ts.map +1 -1
- package/dist/services/node-management.js +123 -8
- package/dist/services/node-management.js.map +1 -1
- package/dist/services/process-control.d.ts +45 -0
- package/dist/services/process-control.d.ts.map +1 -1
- package/dist/services/process-control.js +262 -54
- package/dist/services/process-control.js.map +1 -1
- package/dist/services/queue-manager.d.ts +8 -3
- package/dist/services/queue-manager.d.ts.map +1 -1
- package/dist/services/queue-manager.js +25 -2
- package/dist/services/queue-manager.js.map +1 -1
- package/dist/services/tunnel.d.ts +23 -0
- package/dist/services/tunnel.d.ts.map +1 -0
- package/dist/services/tunnel.js +151 -0
- package/dist/services/tunnel.js.map +1 -0
- package/dist/tools/image-management.d.ts.map +1 -1
- package/dist/tools/image-management.js +57 -1
- package/dist/tools/image-management.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/model-management.d.ts.map +1 -1
- package/dist/tools/model-management.js +26 -1
- package/dist/tools/model-management.js.map +1 -1
- package/dist/tools/node-authoring.d.ts +3 -0
- package/dist/tools/node-authoring.d.ts.map +1 -0
- package/dist/tools/node-authoring.js +96 -0
- package/dist/tools/node-authoring.js.map +1 -0
- package/dist/tools/node-management.d.ts.map +1 -1
- package/dist/tools/node-management.js +5 -1
- package/dist/tools/node-management.js.map +1 -1
- package/dist/tools/process-control.js +2 -2
- package/dist/tools/process-control.js.map +1 -1
- package/dist/tools/queue-management.js +1 -1
- package/dist/tools/queue-management.js.map +1 -1
- package/infra/cloudflare/docs-proxy.js +45 -0
- package/infra/cloudflare/wrangler.jsonc +19 -0
- package/package.json +11 -2
- package/scripts/gen-tool-docs.ts +357 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { getClient, getQueue as clientGetQueue, interrupt as clientInterrupt, deleteQueueItem as clientDeleteQueueItem, clearQueue as clientClearQueue, } from "../comfyui/client.js";
|
|
1
|
+
import { getClient, getHistory, getQueue as clientGetQueue, interrupt as clientInterrupt, deleteQueueItem as clientDeleteQueueItem, clearQueue as clientClearQueue, } from "../comfyui/client.js";
|
|
2
2
|
import { logger } from "../utils/logger.js";
|
|
3
|
+
import { analyzeHistoryEntry } from "./job-history.js";
|
|
3
4
|
function extractJobInfo(items) {
|
|
4
5
|
return items.map((item) => ({
|
|
5
6
|
number: item[0],
|
|
@@ -17,7 +18,29 @@ export async function getQueueSummary() {
|
|
|
17
18
|
}
|
|
18
19
|
export async function getJobStatus(promptId) {
|
|
19
20
|
const client = getClient();
|
|
20
|
-
|
|
21
|
+
const status = await client.getPromptStatus(promptId);
|
|
22
|
+
if (!status.done)
|
|
23
|
+
return status;
|
|
24
|
+
try {
|
|
25
|
+
const history = await getHistory(promptId);
|
|
26
|
+
const entry = history[promptId];
|
|
27
|
+
if (!entry)
|
|
28
|
+
return status;
|
|
29
|
+
const analysis = analyzeHistoryEntry(entry);
|
|
30
|
+
return {
|
|
31
|
+
...status,
|
|
32
|
+
status_str: entry.status.status_str,
|
|
33
|
+
error: analysis.error,
|
|
34
|
+
execution_stats: analysis.execution_stats,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
logger.warn("Could not enrich job status from history", {
|
|
39
|
+
prompt_id: promptId,
|
|
40
|
+
error: err instanceof Error ? err.message : err,
|
|
41
|
+
});
|
|
42
|
+
return status;
|
|
43
|
+
}
|
|
21
44
|
}
|
|
22
45
|
export async function cancelRunningJob(promptId) {
|
|
23
46
|
await clientInterrupt(promptId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../../src/services/queue-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,QAAQ,IAAI,cAAc,EAC1B,SAAS,IAAI,eAAe,EAC5B,eAAe,IAAI,qBAAqB,EACxC,UAAU,IAAI,gBAAgB,GAC/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../../src/services/queue-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,IAAI,cAAc,EAC1B,SAAS,IAAI,eAAe,EAC5B,eAAe,IAAI,qBAAqB,EACxC,UAAU,IAAI,gBAAgB,GAC/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAmD,MAAM,kBAAkB,CAAC;AAkBxG,SAAS,cAAc,CAAC,KAAkB;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACf,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;KACnB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;IACrC,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM;QACnC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM;QACnC,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC;QACjD,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB;IAEhB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO;YACL,GAAG,MAAM;YACT,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;YACnC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,eAAe,EAAE,QAAQ,CAAC,eAAe;SAC1C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE;YACtD,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;SAChD,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAiB;IACtD,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,gBAAgB,EAAE,CAAC;IACzB,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type TunnelStatus = "stopped" | "starting" | "installing" | "running" | "error";
|
|
2
|
+
export interface TunnelState {
|
|
3
|
+
status: TunnelStatus;
|
|
4
|
+
url: string | null;
|
|
5
|
+
error: string | null;
|
|
6
|
+
}
|
|
7
|
+
export interface QuickTunnel {
|
|
8
|
+
/** Public https://<rand>.trycloudflare.com URL. */
|
|
9
|
+
url: string;
|
|
10
|
+
/** Reactive view of the tunnel lifecycle state. */
|
|
11
|
+
getState(): TunnelState;
|
|
12
|
+
/** Tear the tunnel down. Idempotent. */
|
|
13
|
+
stop(): void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Start a Cloudflare quick tunnel that exposes http://localhost:<port> on a
|
|
17
|
+
* public HTTPS URL. Resolves once the `url` event fires; rejects if the
|
|
18
|
+
* cloudflared process errors or exits before becoming ready.
|
|
19
|
+
*
|
|
20
|
+
* @param port Local port to expose (e.g. the POC chat server's port).
|
|
21
|
+
*/
|
|
22
|
+
export declare function startQuickTunnel(port: number): Promise<QuickTunnel>;
|
|
23
|
+
//# sourceMappingURL=tunnel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/services/tunnel.ts"],"names":[],"mappings":"AAuCA,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,UAAU,GACV,YAAY,GACZ,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,QAAQ,IAAI,WAAW,CAAC;IACxB,wCAAwC;IACxC,IAAI,IAAI,IAAI,CAAC;CACd;AA2BD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAoGzE"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { bin, install, use, Tunnel } from "cloudflared";
|
|
5
|
+
import { logger } from "../utils/logger.js";
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// Cloudflared quick-tunnel helper.
|
|
8
|
+
//
|
|
9
|
+
// The binary-ensure + `Tunnel.quick(...)` mechanic is adapted (nearly verbatim)
|
|
10
|
+
// from the MIT-licensed Ungate project's tunnel-manager:
|
|
11
|
+
// https://github.com/orchidfiles/ungate
|
|
12
|
+
// apps/extension/src/tunnel-manager.ts
|
|
13
|
+
//
|
|
14
|
+
// This is part of the experimental embedded-agent-panel POC (see
|
|
15
|
+
// design/embedded-agent-panel.md). It is NOT wired into the default MCP
|
|
16
|
+
// stdio/HTTP startup path — it is only reached behind the
|
|
17
|
+
// COMFYUI_MCP_AGENT_POC flag via src/experimental/agent-poc.ts.
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Where we cache a downloaded cloudflared binary when the bundled `bin` is
|
|
20
|
+
// missing (mirrors Ungate's `~/.ungate/bin` location).
|
|
21
|
+
const CLOUDFLARED_BIN_DIR = path.join(os.homedir(), ".comfyui-mcp", "bin");
|
|
22
|
+
function getCloudflaredBinPath() {
|
|
23
|
+
return path.join(CLOUDFLARED_BIN_DIR, process.platform === "win32" ? "cloudflared.exe" : "cloudflared");
|
|
24
|
+
}
|
|
25
|
+
// Quick tunnels do not use a config file. Pointing --config at the platform
|
|
26
|
+
// null device prevents cloudflared from picking up an ambient config.
|
|
27
|
+
function getCloudflaredConfigArg() {
|
|
28
|
+
return process.platform === "win32" ? "NUL" : "/dev/null";
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Ensure a cloudflared binary is available for the `cloudflared` package to
|
|
32
|
+
* spawn. If the bundled `bin` exists we use it as-is; otherwise we reuse a
|
|
33
|
+
* previously-downloaded binary in CLOUDFLARED_BIN_DIR, or download one.
|
|
34
|
+
*
|
|
35
|
+
* Ported from Ungate's `ensureBinary` (simplified — no legacy-path rename).
|
|
36
|
+
*/
|
|
37
|
+
async function ensureBinary() {
|
|
38
|
+
if (fs.existsSync(bin)) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const userBinPath = getCloudflaredBinPath();
|
|
42
|
+
if (fs.existsSync(userBinPath)) {
|
|
43
|
+
use(userBinPath);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
logger.info("[tunnel] Downloading cloudflared binary...");
|
|
47
|
+
fs.mkdirSync(CLOUDFLARED_BIN_DIR, { recursive: true });
|
|
48
|
+
const installedPath = await install(userBinPath);
|
|
49
|
+
use(installedPath);
|
|
50
|
+
logger.info("[tunnel] cloudflared installed successfully");
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Start a Cloudflare quick tunnel that exposes http://localhost:<port> on a
|
|
54
|
+
* public HTTPS URL. Resolves once the `url` event fires; rejects if the
|
|
55
|
+
* cloudflared process errors or exits before becoming ready.
|
|
56
|
+
*
|
|
57
|
+
* @param port Local port to expose (e.g. the POC chat server's port).
|
|
58
|
+
*/
|
|
59
|
+
export async function startQuickTunnel(port) {
|
|
60
|
+
const state = { status: "starting", url: null, error: null };
|
|
61
|
+
await ensureBinary();
|
|
62
|
+
const t = Tunnel.quick(`http://localhost:${port}`, {
|
|
63
|
+
"--config": getCloudflaredConfigArg(),
|
|
64
|
+
"--edge-ip-version": "4",
|
|
65
|
+
});
|
|
66
|
+
return await new Promise((resolve, reject) => {
|
|
67
|
+
let settled = false;
|
|
68
|
+
// Detach all listeners so nothing leaks once we've settled the promise
|
|
69
|
+
// (especially on the pre-ready failure paths, where the caller never gets
|
|
70
|
+
// a handle to call stop()).
|
|
71
|
+
const teardownListeners = () => {
|
|
72
|
+
t.off("url", onUrl);
|
|
73
|
+
t.off("stderr", onStderr);
|
|
74
|
+
t.off("error", onError);
|
|
75
|
+
t.off("exit", onExit);
|
|
76
|
+
};
|
|
77
|
+
const stop = () => {
|
|
78
|
+
try {
|
|
79
|
+
t.stop();
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// Process already gone — fine.
|
|
83
|
+
}
|
|
84
|
+
teardownListeners();
|
|
85
|
+
state.status = "stopped";
|
|
86
|
+
state.url = null;
|
|
87
|
+
state.error = null;
|
|
88
|
+
};
|
|
89
|
+
function onUrl(url) {
|
|
90
|
+
logger.info(`[tunnel] URL: ${url}`);
|
|
91
|
+
state.status = "running";
|
|
92
|
+
state.url = url;
|
|
93
|
+
state.error = null;
|
|
94
|
+
if (!settled) {
|
|
95
|
+
settled = true;
|
|
96
|
+
resolve({
|
|
97
|
+
url,
|
|
98
|
+
getState: () => ({ ...state }),
|
|
99
|
+
stop,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function onStderr(data) {
|
|
104
|
+
for (const line of data.split("\n")) {
|
|
105
|
+
if (line.trim())
|
|
106
|
+
logger.info(`[tunnel] ${line}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function onError(err) {
|
|
110
|
+
const message = err.message;
|
|
111
|
+
logger.error(`[tunnel] error: ${message}`);
|
|
112
|
+
state.status = "error";
|
|
113
|
+
state.url = null;
|
|
114
|
+
state.error = message;
|
|
115
|
+
if (!settled) {
|
|
116
|
+
settled = true;
|
|
117
|
+
// Pre-ready failure: stop the process and detach listeners so a
|
|
118
|
+
// cloudflared that errors without exiting can't leak.
|
|
119
|
+
try {
|
|
120
|
+
t.stop();
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Already gone — fine.
|
|
124
|
+
}
|
|
125
|
+
teardownListeners();
|
|
126
|
+
reject(err);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function onExit(code, signal) {
|
|
130
|
+
logger.warn(`[tunnel] exited code=${code} signal=${signal}`);
|
|
131
|
+
// An exit before the `url` event means the tunnel never came up.
|
|
132
|
+
if (!settled) {
|
|
133
|
+
settled = true;
|
|
134
|
+
state.status = "error";
|
|
135
|
+
state.url = null;
|
|
136
|
+
state.error = `cloudflared exited before tunnel was ready (code=${code})`;
|
|
137
|
+
teardownListeners();
|
|
138
|
+
reject(new Error(state.error));
|
|
139
|
+
}
|
|
140
|
+
else if (state.status !== "stopped") {
|
|
141
|
+
state.status = "stopped";
|
|
142
|
+
state.url = null;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
t.on("url", onUrl);
|
|
146
|
+
t.on("stderr", onStderr);
|
|
147
|
+
t.on("error", onError);
|
|
148
|
+
t.on("exit", onExit);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=tunnel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/services/tunnel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-management.d.ts","sourceRoot":"","sources":["../../src/tools/image-management.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"image-management.d.ts","sourceRoot":"","sources":["../../src/tools/image-management.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsTpE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { writeFile, mkdir } from "node:fs/promises";
|
|
3
3
|
import { join, basename } from "node:path";
|
|
4
|
-
import { uploadImage, extractWorkflowFromImage, listOutputImages, getOutputImage, uploadImageAuto, } from "../services/image-management.js";
|
|
4
|
+
import { uploadImage, extractWorkflowFromImage, listOutputImages, getOutputImage, uploadImageAuto, uploadVideoAuto, uploadVideoLocal, uploadAudioAuto, uploadAudioLocal, } from "../services/image-management.js";
|
|
5
5
|
import { errorToToolResult } from "../utils/errors.js";
|
|
6
6
|
export function registerImageManagementTools(server) {
|
|
7
7
|
// ── get_image ────────────────────────────────────────────────────────────
|
|
@@ -104,6 +104,62 @@ export function registerImageManagementTools(server) {
|
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
});
|
|
107
|
+
// ── upload_video / upload_audio ────────────────────────────────────────────
|
|
108
|
+
// Same HTTP-first, filesystem-fallback mechanism as upload_image.
|
|
109
|
+
const registerMediaUpload = (name, description, autoFn, localFn, nodeHint) => {
|
|
110
|
+
server.tool(name, description, {
|
|
111
|
+
source_path: z
|
|
112
|
+
.string()
|
|
113
|
+
.describe("Absolute path to the local file to upload"),
|
|
114
|
+
filename: z
|
|
115
|
+
.string()
|
|
116
|
+
.optional()
|
|
117
|
+
.describe("Override the filename in ComfyUI's input/ directory. " +
|
|
118
|
+
"Auto-detected from source path if omitted."),
|
|
119
|
+
}, async (args) => {
|
|
120
|
+
try {
|
|
121
|
+
const result = await autoFn(args.source_path, args.filename);
|
|
122
|
+
return {
|
|
123
|
+
content: [
|
|
124
|
+
{
|
|
125
|
+
type: "text",
|
|
126
|
+
text: `Uploaded successfully via HTTP.\n\nFilename: ${result.filename}\n\n` +
|
|
127
|
+
`Use "${result.filename}" ${nodeHint}.`,
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
catch (httpErr) {
|
|
133
|
+
try {
|
|
134
|
+
const result = await localFn(args.source_path, args.filename);
|
|
135
|
+
return {
|
|
136
|
+
content: [
|
|
137
|
+
{
|
|
138
|
+
type: "text",
|
|
139
|
+
text: `Uploaded successfully via filesystem.\n\nFilename: ${result.filename}\nPath: ${result.path}\n\n` +
|
|
140
|
+
`Use "${result.filename}" ${nodeHint}.`,
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
catch (fsErr) {
|
|
146
|
+
return errorToToolResult(new Error(`HTTP upload failed: ${httpErr instanceof Error ? httpErr.message : httpErr}\n` +
|
|
147
|
+
`Filesystem fallback also failed: ${fsErr instanceof Error ? fsErr.message : fsErr}`));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
registerMediaUpload("upload_video", "Upload a local video file (.mp4, .mov, .webm, .avi, .mkv, .m4v) to the connected " +
|
|
153
|
+
"ComfyUI's input/ directory for use in video-loading nodes such as VHS_LoadVideo " +
|
|
154
|
+
"(ComfyUI-VideoHelperSuite). Tries an HTTP multipart upload first (works against a " +
|
|
155
|
+
"remote --comfyui-url instance), then falls back to a local filesystem copy when " +
|
|
156
|
+
"COMFYUI_PATH is set. Returns the stored filename. Use upload_image for images or " +
|
|
157
|
+
"upload_audio for audio.", uploadVideoAuto, uploadVideoLocal, "as the video file input in VHS_LoadVideo (or similar) nodes");
|
|
158
|
+
registerMediaUpload("upload_audio", "Upload a local audio file (.wav, .mp3, .flac, .ogg, .m4a, .aac) to the connected " +
|
|
159
|
+
"ComfyUI's input/ directory for use in audio-conditioned workflows (e.g. LoadAudio). " +
|
|
160
|
+
"Tries an HTTP multipart upload first (works against a remote --comfyui-url instance), " +
|
|
161
|
+
"then falls back to a local filesystem copy when COMFYUI_PATH is set. Returns the stored " +
|
|
162
|
+
"filename. Use upload_image for images or upload_video for video.", uploadAudioAuto, uploadAudioLocal, "as the audio file input in LoadAudio (or similar) nodes");
|
|
107
163
|
// ── workflow_from_image ───────────────────────────────────────────────────
|
|
108
164
|
server.tool("workflow_from_image", "Extract embedded ComfyUI workflow metadata from a PNG file. " +
|
|
109
165
|
"ComfyUI stores the full workflow (API format) and prompt data in PNG tEXt chunks. " +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-management.js","sourceRoot":"","sources":["../../src/tools/image-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,eAAe,
|
|
1
|
+
{"version":3,"file":"image-management.js","sourceRoot":"","sources":["../../src/tools/image-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,4EAA4E;IAC5E,yDAAyD;IACzD,wDAAwD;IACxD,MAAM,CAAC,IAAI,CACT,WAAW,EACX,yEAAyE;QACvE,uEAAuE;QACvE,+CAA+C,EACjD;QACE,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,CAAC,oDAAoD,CAAC;QACjE,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aACjC,QAAQ,EAAE;aACV,OAAO,CAAC,QAAQ,CAAC;aACjB,QAAQ,CAAC,mDAAmD,CAAC;QAChE,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,wCAAwC,CAAC;QACrD,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,2EAA2E,CAC5E;KACJ,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAC/C,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,IAAI,QAAQ,EACrB,IAAI,CAAC,SAAS,IAAI,EAAE,CACrB,CAAC;YAEF,qBAAqB;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAC/C,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC9C,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;YAEzD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,aAAa,QAAQ,EAAE;qBAC9B;oBACD;wBACE,IAAI,EAAE,OAAgB;wBACtB,IAAI,EAAE,MAAM;wBACZ,QAAQ;qBACT;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,4EAA4E;IAC5E,yEAAyE;IACzE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,uEAAuE;QACrE,qEAAqE;QACrE,0EAA0E,EAC5E;QACE,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,uDAAuD;YACrD,4CAA4C,CAC/C;KACJ,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,mDAAmD;YACnD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EACF,2CAA2C;4BAC3C,aAAa,MAAM,CAAC,QAAQ,MAAM;4BAClC,QAAQ,MAAM,CAAC,QAAQ,8CAA8C;qBACxE;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,qEAAqE;YACrE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClE,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EACF,iDAAiD;gCACjD,aAAa,MAAM,CAAC,QAAQ,WAAW,MAAM,CAAC,IAAI,MAAM;gCACxD,QAAQ,MAAM,CAAC,QAAQ,8CAA8C;yBACxE;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mCAAmC;gBACnC,OAAO,iBAAiB,CACtB,IAAI,KAAK,CACP,uBAAuB,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI;oBAC7E,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CACvF,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,kEAAkE;IAClE,MAAM,mBAAmB,GAAG,CAC1B,IAAY,EACZ,WAAmB,EACnB,MAAgE,EAChE,OAA+E,EAC/E,QAAgB,EACV,EAAE;QACR,MAAM,CAAC,IAAI,CACT,IAAI,EACJ,WAAW,EACX;YACE,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,2CAA2C,CAAC;YACxD,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,uDAAuD;gBACrD,4CAA4C,CAC/C;SACJ,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7D,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EACF,gDAAgD,MAAM,CAAC,QAAQ,MAAM;gCACrE,QAAQ,MAAM,CAAC,QAAQ,KAAK,QAAQ,GAAG;yBAC1C;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC9D,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EACF,sDAAsD,MAAM,CAAC,QAAQ,WAAW,MAAM,CAAC,IAAI,MAAM;oCACjG,QAAQ,MAAM,CAAC,QAAQ,KAAK,QAAQ,GAAG;6BAC1C;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,iBAAiB,CACtB,IAAI,KAAK,CACP,uBAAuB,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI;wBAC7E,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CACvF,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,mBAAmB,CACjB,cAAc,EACd,mFAAmF;QACjF,kFAAkF;QAClF,oFAAoF;QACpF,kFAAkF;QAClF,mFAAmF;QACnF,yBAAyB,EAC3B,eAAe,EACf,gBAAgB,EAChB,6DAA6D,CAC9D,CAAC;IAEF,mBAAmB,CACjB,cAAc,EACd,mFAAmF;QACjF,sFAAsF;QACtF,wFAAwF;QACxF,0FAA0F;QAC1F,kEAAkE,EACpE,eAAe,EACf,gBAAgB,EAChB,yDAAyD,CAC1D,CAAC;IAEF,6EAA6E;IAC7E,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,8DAA8D;QAC5D,oFAAoF;QACpF,mEAAmE,EACrE;QACE,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,CAAC,+CAA+C,CAAC;KAC7D,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CACX,8EAA8E;oBAC5E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oBACtC,OAAO,CACV,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,QAAQ,CAAC,IAAI,CACX,2FAA2F;oBACzF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxC,OAAO,CACV,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,6BAA6B,IAAI,CAAC,UAAU,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;qBACjF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,6EAA6E;IAC7E,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,iWAAiW,EACjW;QACE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,oCAAoC,CAAC;QACjD,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,+DAA+D,CAAC;KAC7E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,OAAO;gCAChB,CAAC,CAAC,oCAAoC,IAAI,CAAC,OAAO,IAAI;gCACtD,CAAC,CAAC,yBAAyB;yBAC9B;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE,CAAC;gBACrD,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,QAAQ,OAAO,MAAM,UAAU,IAAI,EAAE,CAAC;YAClE,CAAC,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAChE;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkCzE,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCvE"}
|
package/dist/tools/index.js
CHANGED
|
@@ -22,6 +22,7 @@ import { registerWorkflowDslTools } from "./workflow-dsl.js";
|
|
|
22
22
|
import { registerNodeSnapshotsTools } from "./node-snapshots.js";
|
|
23
23
|
import { registerNodeBisectTools } from "./node-bisect.js";
|
|
24
24
|
import { registerNodeManagementTools } from "./node-management.js";
|
|
25
|
+
import { registerNodeAuthoringTools } from "./node-authoring.js";
|
|
25
26
|
import { registerWorkflowDepsTools } from "./workflow-deps.js";
|
|
26
27
|
import { registerInstallComfyUITools } from "./install-comfyui.js";
|
|
27
28
|
import { registerUpdateComfyUITools } from "./update-comfyui.js";
|
|
@@ -62,6 +63,7 @@ export async function registerAllTools(server) {
|
|
|
62
63
|
registerWorkspaceEnvTools(server);
|
|
63
64
|
registerApiNodesTools(server);
|
|
64
65
|
registerManagerConfigTools(server);
|
|
66
|
+
registerNodeAuthoringTools(server);
|
|
65
67
|
await registerAutoloadedWorkflows(server);
|
|
66
68
|
}
|
|
67
69
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-management.d.ts","sourceRoot":"","sources":["../../src/tools/model-management.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"model-management.d.ts","sourceRoot":"","sources":["../../src/tools/model-management.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiCzE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkIpE"}
|
|
@@ -2,6 +2,27 @@ import { z } from "zod";
|
|
|
2
2
|
import { searchHuggingFaceModels, listLocalModels, downloadModel, MODEL_SUBDIRS, } from "../services/model-resolver.js";
|
|
3
3
|
import { errorToToolResult } from "../utils/errors.js";
|
|
4
4
|
const modelTypeEnum = z.enum(MODEL_SUBDIRS);
|
|
5
|
+
const downloadAuthSchema = z.discriminatedUnion("type", [
|
|
6
|
+
z.object({
|
|
7
|
+
type: z.literal("bearer"),
|
|
8
|
+
token: z.string().min(1).describe("Bearer token value"),
|
|
9
|
+
}),
|
|
10
|
+
z.object({
|
|
11
|
+
type: z.literal("basic"),
|
|
12
|
+
username: z.string().describe("Basic auth username"),
|
|
13
|
+
password: z.string().describe("Basic auth password"),
|
|
14
|
+
}),
|
|
15
|
+
z.object({
|
|
16
|
+
type: z.literal("header"),
|
|
17
|
+
header_name: z.string().min(1).describe("HTTP header name"),
|
|
18
|
+
header_value: z.string().describe("HTTP header value"),
|
|
19
|
+
}),
|
|
20
|
+
z.object({
|
|
21
|
+
type: z.literal("query"),
|
|
22
|
+
query_param: z.string().min(1).describe("Query parameter name"),
|
|
23
|
+
query_value: z.string().describe("Query parameter value"),
|
|
24
|
+
}),
|
|
25
|
+
]);
|
|
5
26
|
export function registerModelManagementTools(server) {
|
|
6
27
|
server.tool("search_models", "Search HuggingFace Hub for models usable in ComfyUI (checkpoints, LoRAs, VAEs, ControlNets, etc.). Read-only and network-only: queries HuggingFace over HTTP, does NOT require a running ComfyUI or COMFYUI_PATH and does not download anything. Returns a ranked list with modelId, author, downloads, likes, and tags. Pick a result's download URL and pass it to download_model to install it locally. For packs of custom nodes (not models) use search_custom_nodes.", {
|
|
7
28
|
query: z.string().describe("Search query (e.g. 'SDXL', 'flux', 'controlnet')"),
|
|
@@ -42,9 +63,13 @@ export function registerModelManagementTools(server) {
|
|
|
42
63
|
.string()
|
|
43
64
|
.optional()
|
|
44
65
|
.describe("Override filename (auto-detected from URL if omitted)"),
|
|
66
|
+
auth: downloadAuthSchema
|
|
67
|
+
.optional()
|
|
68
|
+
.describe("Optional per-request authentication for private/gated model URLs. " +
|
|
69
|
+
"When provided it overrides built-in HuggingFace/CivitAI token handling."),
|
|
45
70
|
}, async (args) => {
|
|
46
71
|
try {
|
|
47
|
-
const savedPath = await downloadModel(args.url, args.target_subfolder, args.filename);
|
|
72
|
+
const savedPath = await downloadModel(args.url, args.target_subfolder, args.filename, args.auth);
|
|
48
73
|
return {
|
|
49
74
|
content: [
|
|
50
75
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-management.js","sourceRoot":"","sources":["../../src/tools/model-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAE5C,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,IAAI,CACT,eAAe,EACf,4cAA4c,EAC5c;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QAC9E,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,kGAAkG,CAAC;QAC/G,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,QAAQ,CAAC,oCAAoC,CAAC;KAClD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE;gBACxD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC;gBAC/B,CAAC,CAAC,wBAAwB,IAAI,CAAC,KAAK,IAAI;gBACxC,CAAC,CAAC,OAAO;qBACJ,GAAG,CACF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,IAAI,SAAS,IAAI;oBAC1D,iBAAiB,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,KAAK,IAAI;oBACrE,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CACxD;qBACA,IAAI,CAAC,MAAM,CAAC,CAAC;YAEpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,+FAA+F,EAC/F;QACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACxE,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CACtC,6EAA6E,CAC9E;QACD,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,uDAAuD,CAAC;
|
|
1
|
+
{"version":3,"file":"model-management.js","sourceRoot":"","sources":["../../src/tools/model-management.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-authoring.d.ts","sourceRoot":"","sources":["../../src/tools/node-authoring.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwGlE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { scaffoldCustomNode, publishCustomNode, } from "../services/node-authoring.js";
|
|
3
|
+
import { errorToToolResult } from "../utils/errors.js";
|
|
4
|
+
export function registerNodeAuthoringTools(server) {
|
|
5
|
+
server.tool("scaffold_custom_node", "Generate a new ComfyUI custom-node pack from a template into " +
|
|
6
|
+
"<COMFYUI_PATH>/custom_nodes/<name>/. Writes pyproject.toml (with the " +
|
|
7
|
+
"[tool.comfy] PublisherId/DisplayName/Icon table the Comfy Registry " +
|
|
8
|
+
"requires), __init__.py exporting NODE_CLASS_MAPPINGS / " +
|
|
9
|
+
"NODE_DISPLAY_NAME_MAPPINGS, and src/nodes.py containing a runnable sample " +
|
|
10
|
+
"node (INPUT_TYPES/RETURN_TYPES/FUNCTION/CATEGORY). Optionally emits a " +
|
|
11
|
+
"web/js frontend stub and wires WEB_DIRECTORY. This is the FIRST step of " +
|
|
12
|
+
"the author loop: scaffold here, then restart_comfyui to load it, test it, " +
|
|
13
|
+
"and finally publish_custom_node. LOCAL-ONLY: it writes to your local " +
|
|
14
|
+
"ComfyUI install and requires COMFYUI_PATH (it does nothing for a remote " +
|
|
15
|
+
"--comfyui-url target). Names must be a safe lowercase slug and cannot " +
|
|
16
|
+
"escape custom_nodes/; an existing non-empty directory is left untouched " +
|
|
17
|
+
"unless overwrite is true. Use this to CREATE a pack you author — to " +
|
|
18
|
+
"install someone else's pack use install_custom_node instead.", {
|
|
19
|
+
name: z
|
|
20
|
+
.string()
|
|
21
|
+
.describe("Pack folder name — a safe lowercase slug (letters, digits, hyphens, underscores), e.g. 'my-cool-nodes'. Becomes the directory under custom_nodes/ and the pyproject [project].name."),
|
|
22
|
+
display_name: z
|
|
23
|
+
.string()
|
|
24
|
+
.describe("Human-readable name shown in the ComfyUI node menu and the registry listing."),
|
|
25
|
+
category: z
|
|
26
|
+
.string()
|
|
27
|
+
.optional()
|
|
28
|
+
.describe("Node menu category for the sample node (default 'custom')."),
|
|
29
|
+
description: z
|
|
30
|
+
.string()
|
|
31
|
+
.optional()
|
|
32
|
+
.describe("Short description written to pyproject [project].description."),
|
|
33
|
+
publisher_id: z
|
|
34
|
+
.string()
|
|
35
|
+
.optional()
|
|
36
|
+
.describe("Your Comfy Registry publisher id, stamped into [tool.comfy].PublisherId. If omitted a placeholder is written that you must replace before publishing."),
|
|
37
|
+
with_frontend: z
|
|
38
|
+
.boolean()
|
|
39
|
+
.optional()
|
|
40
|
+
.describe("If true, also generate a web/js/<name>.js extension stub and set WEB_DIRECTORY (default false)."),
|
|
41
|
+
overwrite: z
|
|
42
|
+
.boolean()
|
|
43
|
+
.optional()
|
|
44
|
+
.describe("If true, overwrite template files in an existing pack directory instead of refusing (default false)."),
|
|
45
|
+
}, async (args) => {
|
|
46
|
+
try {
|
|
47
|
+
const result = scaffoldCustomNode({
|
|
48
|
+
name: args.name,
|
|
49
|
+
displayName: args.display_name,
|
|
50
|
+
category: args.category,
|
|
51
|
+
description: args.description,
|
|
52
|
+
publisherId: args.publisher_id,
|
|
53
|
+
withFrontend: args.with_frontend,
|
|
54
|
+
overwrite: args.overwrite,
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
return errorToToolResult(err);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
server.tool("publish_custom_node", "Publish a local custom-node pack to the public Comfy Registry " +
|
|
65
|
+
"(registry.comfy.org) by running `comfy node publish` inside the pack " +
|
|
66
|
+
"directory. First validates the pack's pyproject.toml has the required " +
|
|
67
|
+
"[project].name, [project].version and [tool.comfy].PublisherId (refusing " +
|
|
68
|
+
"the scaffold placeholder), then publishes using the API key from the " +
|
|
69
|
+
"REGISTRY_ACCESS_TOKEN environment variable (passed to comfy-cli via the " +
|
|
70
|
+
"environment, never via logged arguments). This is the LAST step of the " +
|
|
71
|
+
"author loop and an IRREVERSIBLE, EXTERNAL action: it creates/updates a " +
|
|
72
|
+
"PUBLIC registry version that this tool cannot undo. Requires comfy-cli " +
|
|
73
|
+
"installed and REGISTRY_ACCESS_TOKEN set. LOCAL-ONLY: it reads and runs " +
|
|
74
|
+
"against a pack on the local filesystem and is meaningless for a remote " +
|
|
75
|
+
"--comfyui-url target. To create a pack first, use scaffold_custom_node.", {
|
|
76
|
+
name: z
|
|
77
|
+
.string()
|
|
78
|
+
.optional()
|
|
79
|
+
.describe("Pack folder name under <COMFYUI_PATH>/custom_nodes/ to publish. Provide this or `path`."),
|
|
80
|
+
path: z
|
|
81
|
+
.string()
|
|
82
|
+
.optional()
|
|
83
|
+
.describe("Explicit absolute path to the pack directory to publish. Overrides `name` when both are given."),
|
|
84
|
+
}, async (args) => {
|
|
85
|
+
try {
|
|
86
|
+
const result = publishCustomNode({ name: args.name, path: args.path });
|
|
87
|
+
return {
|
|
88
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
return errorToToolResult(err);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=node-authoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-authoring.js","sourceRoot":"","sources":["../../src/tools/node-authoring.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-management.d.ts","sourceRoot":"","sources":["../../src/tools/node-management.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgDzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"node-management.d.ts","sourceRoot":"","sources":["../../src/tools/node-management.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgDzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwJnE"}
|
|
@@ -40,7 +40,11 @@ export function registerNodeManagementTools(server) {
|
|
|
40
40
|
version: z
|
|
41
41
|
.string()
|
|
42
42
|
.optional()
|
|
43
|
-
.describe("Version to install (e.g. 'latest', 'nightly', or a semver). Registry installs
|
|
43
|
+
.describe("Version to install (e.g. 'latest', 'nightly', or a semver). For git installs, this is treated as a git ref unless `ref` is also provided. Registry installs default to 'latest'."),
|
|
44
|
+
ref: z
|
|
45
|
+
.string()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("Git ref (commit SHA, branch, or tag) to pin when installing a git URL. Overrides any ref parsed from the URL and any `version` value. Ignored for registry-id installs."),
|
|
44
48
|
mode: modeSchema,
|
|
45
49
|
channel: channelSchema,
|
|
46
50
|
useCmCli: useCmCliSchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-management.js","sourceRoot":"","sources":["../../src/tools/node-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GAErB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,GAAG,CAAC;KACjB,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAClC,QAAQ,EAAE;KACV,QAAQ,CACP,oIAAoI,CACrI,CAAC;AAEJ,MAAM,cAAc,GAAG,CAAC;KACrB,OAAO,EAAE;KACT,QAAQ,EAAE;KACV,QAAQ,CACP,+JAA+J,CAChK,CAAC;AAEJ,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,QAAQ,CAAC,mDAAmD,CAAC,CAAC;AAEjE,SAAS,oBAAoB,CAAC,KAAsB;IAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,4BAA4B,CAAC;IAC5D,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG;YACd,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;YACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;SAClC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,CACL,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,IAAI;YACjC,eAAe,CAAC,CAAC,OAAO,IAAI,SAAS,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAChF,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,4RAA4R,EAC5R;QACE,EAAE,EAAE,CAAC;aACF,MAAM,EAAE;aACR,QAAQ,CAAC,qDAAqD,CAAC;QAClE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;aACjC,QAAQ,EAAE;aACV,QAAQ,CACP,iFAAiF,CAClF;QACH,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,
|
|
1
|
+
{"version":3,"file":"node-management.js","sourceRoot":"","sources":["../../src/tools/node-management.ts"],"names":[],"mappings":"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"}
|