comfyui-mcp 0.25.2 → 0.26.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.
@@ -3,7 +3,7 @@ import { readFile } from "node:fs/promises";
3
3
  import { getClient, getObjectInfo, backfillObjectInfo } from "../comfyui/client.js";
4
4
  import { errorToToolResult, ValidationError } from "../utils/errors.js";
5
5
  import { logger } from "../utils/logger.js";
6
- import { isUiFormat, convertUiToApi, collectNodeTypes } from "../services/workflow-converter.js";
6
+ import { isUiFormat, isApiFormat, convertUiToApi, convertApiToUi, collectNodeTypes, } from "../services/workflow-converter.js";
7
7
  import { sliceWorkflow } from "../services/workflow-slicer.js";
8
8
  import { detectSections } from "../services/workflow-sections.js";
9
9
  import { generateOverview, generateSectionDetail, listSections, generateSummary, } from "../services/hierarchical-mermaid.js";
@@ -235,21 +235,57 @@ export function registerWorkflowLibraryTools(server) {
235
235
  return errorToToolResult(err);
236
236
  }
237
237
  });
238
- server.tool("save_workflow", "Save a workflow JSON to the connected ComfyUI server's user library so it appears in the ComfyUI web UI. Requires a running ComfyUI server; this writes to that server's userdata and overwrites any existing file with the same filename without confirmation. IMPORTANT: pass Web-UI-format JSON ({ nodes: [], links: [] }) so the saved workflow opens and edits in the ComfyUI canvas — when re-saving an existing workflow, load it with get_workflow format='ui' and modify THAT. API-format graphs are accepted and stored verbatim, but the canvas CANNOT open them (users see a broken/blank load), so only save API format for headless re-queueing. Returns a confirmation message (with a warning when the input was API format), or the HTTP status and error text on failure.", {
238
+ server.tool("save_workflow", "Save a workflow JSON to the connected ComfyUI server's user library so it appears in the ComfyUI web UI. Requires a running ComfyUI server; this writes to that server's userdata and overwrites any existing file with the same filename without confirmation. Web-UI-format JSON ({ nodes: [], links: [] }) is saved as-is and is the preferred input — when re-saving an existing workflow, load it with get_workflow format='ui' and modify THAT. API-format graphs ({ '1': { class_type, inputs } }) are AUTO-CONVERTED to Web UI format with a generated layout so the saved file always opens in the ComfyUI canvas (the canvas cannot open raw API format). Returns a confirmation message (noting the conversion and any warnings), or the HTTP status and error text on failure.", {
239
239
  filename: z
240
240
  .string()
241
241
  .describe("Filename to save as (e.g. 'my_workflow.json'). Will overwrite if it already exists."),
242
242
  workflow: z
243
243
  .record(z.string(), z.any())
244
- .describe("Workflow JSON to save. Prefer Web UI format ({ nodes: [], links: [] }) so it stays editable in ComfyUI's canvas; API format is accepted but the frontend cannot open it. Stored verbatim; not validated before saving."),
244
+ .describe("Workflow JSON to save. Web UI format ({ nodes: [], links: [] }) is stored verbatim; API format ({ '1': { class_type, inputs } }) is auto-converted to Web UI format (generated layout) so it stays openable in ComfyUI's canvas. Not validated against the server before saving."),
245
245
  }, async (args) => {
246
246
  try {
247
247
  const client = getClient();
248
248
  const encoded = encodeURIComponent(`workflows/${args.filename}`);
249
- const body = JSON.stringify(args.workflow);
249
+ // API-format graphs can't be opened by the canvas — the #1 way agents
250
+ // strand users with workflows that "exist" in the library yet load
251
+ // blank. Auto-convert them to UI format with a generated layout; fall
252
+ // back to a verbatim save (with the loud warning) only if conversion
253
+ // itself fails.
254
+ let toSave = args.workflow;
255
+ let note = "";
256
+ if (!isUiFormat(args.workflow) && isApiFormat(args.workflow)) {
257
+ try {
258
+ const apiGraph = args.workflow;
259
+ const bulk = await getObjectInfo();
260
+ const objectInfo = await backfillObjectInfo(bulk, Object.values(apiGraph).map((n) => n.class_type));
261
+ const { workflow: ui, warnings } = convertApiToUi(apiGraph, objectInfo);
262
+ toSave = ui;
263
+ note =
264
+ `\n\nℹ️ Input was API format — auto-converted to Web UI format (generated layout) ` +
265
+ `so it opens in the ComfyUI canvas.`;
266
+ if (warnings.length > 0) {
267
+ note += `\nConversion warnings (${warnings.length}):\n${warnings.map((w) => `- ${w}`).join("\n")}`;
268
+ }
269
+ }
270
+ catch (convErr) {
271
+ note =
272
+ `\n\n⚠️ Input was API format and auto-conversion to Web UI format failed ` +
273
+ `(${convErr instanceof Error ? convErr.message : String(convErr)}) — saved verbatim. ` +
274
+ `The ComfyUI canvas CANNOT open or edit this file. If it is meant to be reopened in ` +
275
+ `the UI, rebuild it in Web UI format ({ nodes: [], links: [] }) — e.g. load the ` +
276
+ `on-canvas graph or an existing file via get_workflow format="ui", apply your ` +
277
+ `changes to that, and save again.`;
278
+ }
279
+ }
280
+ else if (!isUiFormat(args.workflow)) {
281
+ note =
282
+ `\n\n⚠️ This JSON is neither Web UI format ({ nodes: [], links: [] }) nor API format ` +
283
+ `({ '1': { class_type, inputs } }) — saved verbatim, but the ComfyUI canvas likely ` +
284
+ `cannot open it.`;
285
+ }
250
286
  const res = await client.fetchApi(`/api/userdata/${encoded}`, {
251
287
  method: "POST",
252
- body,
288
+ body: JSON.stringify(toSave),
253
289
  });
254
290
  if (!res.ok) {
255
291
  const errText = await res.text().catch(() => "");
@@ -262,21 +298,11 @@ export function registerWorkflowLibraryTools(server) {
262
298
  ],
263
299
  };
264
300
  }
265
- // API-format saves are legal (headless re-queue) but the canvas can't
266
- // open them — the #1 way agents strand users with workflows that "exist"
267
- // in the library yet load blank, so they keep creating new ones instead
268
- // of navigating back. Warn loudly until auto-conversion ships.
269
- const apiFormatWarning = isUiFormat(args.workflow)
270
- ? ""
271
- : `\n\n⚠️ This was saved in API format — the ComfyUI canvas CANNOT open or edit it. ` +
272
- `If this workflow is meant to be reopened in the UI, rebuild it in Web UI format ` +
273
- `({ nodes: [], links: [] }) — e.g. load the on-canvas graph or an existing file via ` +
274
- `get_workflow format="ui", apply your changes to that, and save again.`;
275
301
  return {
276
302
  content: [
277
303
  {
278
304
  type: "text",
279
- text: `Workflow saved as "${args.filename}" in the ComfyUI user library.${apiFormatWarning}`,
305
+ text: `Workflow saved as "${args.filename}" in the ComfyUI user library.${note}`,
280
306
  },
281
307
  ],
282
308
  };
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-library.js","sourceRoot":"","sources":["../../src/tools/workflow-library.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-library.js","sourceRoot":"","sources":["../../src/tools/workflow-library.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "comfyui-mcp",
3
- "version": "0.25.2",
3
+ "version": "0.26.0",
4
4
  "mcpName": "io.github.artokun/comfyui-mcp",
5
- "description": "Local-first, agent-native control plane for ComfyUI MCP server + autonomous sidebar agent that drives your live graph in natural language on ANY LLM: Claude/ChatGPT/Gemini on your subscription (no API key), free local models via Ollama (fully offline), or any hosted model via an OpenAI-compatible endpoint (DeepSeek, GLM, MiMo, OpenRouter). Generate images, video & audio, author and run workflows, manage models and custom nodes; a compact tool-router mode keeps even 4B models effective, and a built-in LLM Arena benchmarks them on real ComfyUI tasks. Also a Claude Code plugin with skills, slash commands, and installer packs. Local, LAN, VPS, or Comfy Cloud.",
5
+ "description": "Local-first, agent-native control plane for ComfyUI — MCP server + autonomous sidebar agent that drives your live graph in natural language on ANY LLM: Claude/ChatGPT/Gemini on your subscription (no API key), free local models via Ollama (fully offline), or any hosted model via an OpenAI-compatible endpoint (DeepSeek, GLM, MiMo, OpenRouter). Generate images, video & audio, author and run workflows, manage models and custom nodes; a compact tool-router mode keeps even 4B models effective, and a built-in LLM Arena benchmarks them on real ComfyUI tasks. Also a Claude Code plugin with skills, slash commands, and installer packs. Local, LAN, VPS, or Comfy Cloud.",
6
6
  "homepage": "https://comfyui-mcp.artokun.io/docs",
7
7
  "type": "module",
8
8
  "main": "dist/index.js",
@@ -34,6 +34,7 @@
34
34
  "lint": "tsc --noEmit",
35
35
  "docs:gen": "cross-env COMFYUI_URL=http://127.0.0.1:8188 tsx scripts/gen-tool-docs.ts",
36
36
  "runpod:release": "node scripts/runpod-release.mjs",
37
+ "runpod:release:major": "node scripts/runpod-release.mjs major",
37
38
  "packs:gen": "node scripts/gen-pack-installers.mjs",
38
39
  "packs:validate": "node scripts/validate-manifests.mjs",
39
40
  "packs:test": "bash scripts/test-packs.sh",
@@ -1,29 +1,88 @@
1
1
  #!/usr/bin/env node
2
- // Build + push the FULL (fat) RunPod template image to Docker Hub.
2
+ // npm-publish-style release of the RunPod template image to Docker Hub.
3
3
  //
4
- // npm run runpod:release # auto-increments the 1.x tag
5
- // npm run runpod:release -- 2.0 # explicit tag
4
+ // npm run runpod:release # minor bump: 1.6 -> 1.7
5
+ // npm run runpod:release -- major # major bump: 1.6 -> 2.0
6
+ // npm run runpod:release -- 2.3 # explicit tag
6
7
  //
7
- // This is the image the RunPod template pulls (artokun/comfyui-mcp-runpod on
8
- // Docker Hub) — the GitHub Actions workflow only builds the LEAN variant to
9
- // ghcr.io (standard runners can't hold the 63 GB donor pull), so the fat
10
- // template image is released from a dev machine with Docker + the layer cache.
8
+ // Like `npm publish`, nothing reaches the registry unverified. The flow:
11
9
  //
12
- // The panel git-clone layer is cache-busted with the CURRENT panel main SHA so
13
- // every release bakes the latest panel (boot auto-update then keeps it fresh).
10
+ // 1. VERSION — resolve the next tag from what Docker Hub actually serves
11
+ // (two-part MAJOR.MINOR scheme; hub is the source of truth,
12
+ // not local docker tags).
13
+ // 2. BUILD — fat image (extras + spotcheck). The extras donor defaults to
14
+ // the PREVIOUS release (it carries the same three artifacts),
15
+ // so no 63 GB aitrepreneur pull; the panel clone layer is
16
+ // cache-busted to the panel repo's current main SHA. The build
17
+ // itself ends in the Dockerfile §9.5 integrity gate.
18
+ // 3. GATE — docker/runpod/deploy-dockerhub.sh runs test_image.sh (static
19
+ // + boot suite: fresh volume, redeploy persistence, ENOSPC
20
+ // self-heal). Any failure aborts before anything is pushed.
21
+ // 4. PUBLISH — push :<version> + :latest, then verify_image_remote.py
22
+ // checks what the registry ACTUALLY serves.
23
+ // 5. TEMPLATE — pin the RunPod template to the new VERSION tag via the
24
+ // GraphQL API (RUNPOD_API_KEY env or .env). NOT runpodctl:
25
+ // its `template update` sends a registry-credentials field
26
+ // that RunPod rejects for PUBLIC templates ("public templates
27
+ // cannot have Registry Credentials", verified 2026-07 on
28
+ // runpodctl 2.6.1). Pods must pull by version tag: RunPod
29
+ // hosts cache per-tag, so a template left on :latest can
30
+ // silently serve a stale build.
31
+ //
32
+ // Env knobs: RUNPOD_DONOR (extras donor image; set to aitrepreneur/comfyui:2.3.5
33
+ // for a from-scratch bootstrap), RUNPOD_TEMPLATE_ID (default bnqtkvcer3),
34
+ // RUNPOD_API_KEY (or .env), SKIP_TEMPLATE=1 to stop after publishing.
14
35
  import { execFileSync, execSync } from "node:child_process";
36
+ import { readFileSync, existsSync } from "node:fs";
15
37
  import { fileURLToPath } from "node:url";
16
38
  import { dirname, join } from "node:path";
17
39
 
18
40
  const REPO = "artokun/comfyui-mcp-runpod";
41
+ const TEMPLATE_ID = process.env.RUNPOD_TEMPLATE_ID || "bnqtkvcer3";
19
42
  const ROOT = join(dirname(fileURLToPath(import.meta.url)), "..");
20
43
  const CTX = join(ROOT, "docker", "runpod");
44
+ const DONOR = process.env.RUNPOD_DONOR || `${REPO}:latest`;
21
45
 
22
46
  const run = (cmd, args, opts = {}) =>
23
47
  execFileSync(cmd, args, { stdio: "inherit", ...opts });
24
48
  const capture = (cmd) => execSync(cmd, { encoding: "utf8" }).trim();
25
49
 
26
- // current panel main SHA (no local clone needed)
50
+ // ---- 1. VERSION -------------------------------------------------------------
51
+ const arg = process.argv[2] || "minor";
52
+ if (!/^\d+\.\d+$/.test(arg) && !["major", "minor", "patch"].includes(arg)) {
53
+ console.error(`usage: npm run runpod:release [-- major|minor|<X.Y>] (got "${arg}")`);
54
+ process.exit(1);
55
+ }
56
+
57
+ const hubTags = await (async () => {
58
+ const res = await fetch(
59
+ `https://hub.docker.com/v2/repositories/${REPO}/tags?page_size=100`,
60
+ );
61
+ if (!res.ok) throw new Error(`Docker Hub tag list failed: ${res.status}`);
62
+ return (await res.json()).results.map((t) => t.name);
63
+ })();
64
+ const versions = hubTags
65
+ .map((t) => /^(\d+)\.(\d+)$/.exec(t))
66
+ .filter(Boolean)
67
+ .map((m) => [Number(m[1]), Number(m[2])])
68
+ .sort((a, b) => a[0] - b[0] || a[1] - b[1]);
69
+ const cur = versions.at(-1) ?? [1, 0];
70
+
71
+ let tag;
72
+ if (/^\d+\.\d+$/.test(arg)) {
73
+ if (hubTags.includes(arg)) {
74
+ console.error(`refusing: ${REPO}:${arg} already exists on Docker Hub`);
75
+ process.exit(1);
76
+ }
77
+ tag = arg;
78
+ } else if (arg === "major") {
79
+ tag = `${cur[0] + 1}.0`;
80
+ } else {
81
+ tag = `${cur[0]}.${cur[1] + 1}`; // minor (and patch alias — two-part scheme)
82
+ }
83
+ console.log(`current hub release: ${cur.join(".")} -> releasing: ${tag}`);
84
+
85
+ // current panel main SHA (cache-busts the panel clone layer; no local clone needed)
27
86
  const panelSha = capture(
28
87
  "git ls-remote https://github.com/artokun/comfyui-mcp-panel.git refs/heads/main",
29
88
  ).split(/\s+/)[0];
@@ -32,27 +91,58 @@ if (!/^[0-9a-f]{40}$/.test(panelSha)) {
32
91
  process.exit(1);
33
92
  }
34
93
 
35
- // tag: explicit arg, or auto-increment the highest local 1.x
36
- let tag = process.argv[2];
37
- if (!tag) {
38
- const tags = capture(`docker images ${REPO} --format "{{.Tag}}"`)
39
- .split(/\r?\n/)
40
- .map((t) => /^(\d+)\.(\d+)$/.exec(t))
41
- .filter(Boolean)
42
- .map((m) => [Number(m[1]), Number(m[2])])
43
- .sort((a, b) => a[0] - b[0] || a[1] - b[1]);
44
- const last = tags.at(-1) ?? [1, 0];
45
- tag = `${last[0]}.${last[1] + 1}`;
46
- }
47
-
48
- console.log(`building ${REPO}:${tag} (+latest) — panel @ ${panelSha.slice(0, 8)}, fat (extras + spotcheck)`);
94
+ // ---- 2. BUILD (fat: extras + spotcheck; donor = previous release) -----------
95
+ console.log(`building ${REPO}:build panel @ ${panelSha.slice(0, 8)}, extras donor: ${DONOR}`);
49
96
  run("docker", [
50
97
  "build",
51
98
  "--build-arg", `PANEL_CACHEBUST=${panelSha}`,
52
- "-t", `${REPO}:${tag}`,
53
- "-t", `${REPO}:latest`,
99
+ "--build-arg", `RUNPOD_SRC_IMAGE=${DONOR}`,
100
+ "--build-arg", "INCLUDE_RUNPOD_EXTRAS=1",
101
+ "--build-arg", "BAKE_SPOTCHECK_MODEL=1",
102
+ "-t", `${REPO}:build`,
54
103
  CTX,
55
104
  ]);
56
- run("docker", ["push", `${REPO}:${tag}`]);
57
- run("docker", ["push", `${REPO}:latest`]);
58
- console.log(`\nreleased ${REPO}:${tag} and :latest — new RunPod pods pick it up on creation.`);
105
+
106
+ // ---- 3+4. GATE, PUBLISH, VERIFY (deploy-dockerhub.sh refuses unverified pushes)
107
+ run("bash", [join(CTX, "deploy-dockerhub.sh"), tag, `${REPO}:build`]);
108
+
109
+ // ---- 5. TEMPLATE — pin the RunPod template to the immutable version tag -----
110
+ if (process.env.SKIP_TEMPLATE === "1") {
111
+ console.log(`SKIP_TEMPLATE=1 — remember to point the template at ${REPO}:${tag}`);
112
+ process.exit(0);
113
+ }
114
+ const image = `${REPO}:${tag}`;
115
+ // saveTemplate needs the full field set, so fetch-and-echo everything except
116
+ // imageName. (runpodctl deliberately not used here — see the header note.)
117
+ let key = process.env.RUNPOD_API_KEY;
118
+ if (!key && existsSync(join(ROOT, ".env"))) {
119
+ key = /^RUNPOD_API_KEY=(.+)$/m.exec(readFileSync(join(ROOT, ".env"), "utf8"))?.[1]?.trim();
120
+ }
121
+ if (!key) {
122
+ console.error(`released ${image}, but RUNPOD_API_KEY is not set — update the template manually:`);
123
+ console.error(` console.runpod.io -> Templates -> ${TEMPLATE_ID} -> Container Image -> ${image}`);
124
+ process.exit(1);
125
+ }
126
+ const gql = async (query, variables) => {
127
+ const res = await fetch(`https://api.runpod.io/graphql?api_key=${key}`, {
128
+ method: "POST",
129
+ headers: { "content-type": "application/json" },
130
+ body: JSON.stringify({ query, variables }),
131
+ });
132
+ const body = await res.json();
133
+ if (body.errors) throw new Error(JSON.stringify(body.errors));
134
+ return body.data;
135
+ };
136
+ const { podTemplates } = await gql(
137
+ "query { podTemplates { id name imageName containerDiskInGb volumeInGb volumeMountPath ports dockerArgs env { key value } readme } }",
138
+ );
139
+ const t = podTemplates.find((x) => x.id === TEMPLATE_ID);
140
+ if (!t) throw new Error(`template ${TEMPLATE_ID} not found on this account`);
141
+ await gql(
142
+ "mutation Save($input: SaveTemplateInput!) { saveTemplate(input: $input) { id imageName } }",
143
+ { input: { ...t, imageName: image } },
144
+ );
145
+ console.log(`template ${TEMPLATE_ID} -> ${image} (via GraphQL)`);
146
+
147
+ console.log(`\nreleased ${image} (+ :latest), registry-verified, template pinned.`);
148
+ console.log("New pods pull the pinned version tag — stale host caches of :latest can no longer bite.");