comfyui-mcp 0.49.0 → 0.49.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.
Files changed (98) hide show
  1. package/README.md +5 -10
  2. package/dist/comfyui/cloud-client.js +2 -2
  3. package/dist/comfyui/cloud-client.js.map +1 -1
  4. package/dist/orchestrator/call-tool-admission.js +160 -0
  5. package/dist/orchestrator/call-tool-admission.js.map +1 -0
  6. package/dist/orchestrator/index.js +169 -137
  7. package/dist/orchestrator/index.js.map +1 -1
  8. package/dist/orchestrator/panel-tools.js +545 -75
  9. package/dist/orchestrator/panel-tools.js.map +1 -1
  10. package/dist/orchestrator/session-store.js +22 -0
  11. package/dist/orchestrator/session-store.js.map +1 -1
  12. package/dist/services/civitai-resolver.js +22 -7
  13. package/dist/services/civitai-resolver.js.map +1 -1
  14. package/dist/services/comfy-cli.js +1 -1
  15. package/dist/services/download-jobs.js +1 -1
  16. package/dist/services/extra-paths.js +7 -7
  17. package/dist/services/extra-paths.js.map +1 -1
  18. package/dist/services/graph-query.js +10 -4
  19. package/dist/services/graph-query.js.map +1 -1
  20. package/dist/services/manager-config.js +11 -2
  21. package/dist/services/manager-config.js.map +1 -1
  22. package/dist/services/model-resolver.js +4 -4
  23. package/dist/services/model-resolver.js.map +1 -1
  24. package/dist/services/node-authoring.js +3 -3
  25. package/dist/services/node-authoring.js.map +1 -1
  26. package/dist/services/node-dev.js +3 -3
  27. package/dist/services/node-dev.js.map +1 -1
  28. package/dist/services/node-management.js +185 -9
  29. package/dist/services/node-management.js.map +1 -1
  30. package/dist/services/node-snapshots.js +117 -12
  31. package/dist/services/node-snapshots.js.map +1 -1
  32. package/dist/services/node-verify.js +1 -1
  33. package/dist/services/node-verify.js.map +1 -1
  34. package/dist/services/output-dir.js +1 -1
  35. package/dist/services/output-dir.js.map +1 -1
  36. package/dist/services/panel-installer.js +466 -6
  37. package/dist/services/panel-installer.js.map +1 -1
  38. package/dist/services/panel-pending-cancel.js +446 -0
  39. package/dist/services/panel-pending-cancel.js.map +1 -0
  40. package/dist/services/panel-pin-guard.js +50 -3
  41. package/dist/services/panel-pin-guard.js.map +1 -1
  42. package/dist/services/panel-sync.js +3 -20
  43. package/dist/services/panel-sync.js.map +1 -1
  44. package/dist/services/process-control.js +37 -8
  45. package/dist/services/process-control.js.map +1 -1
  46. package/dist/services/queue-manager.js +1 -1
  47. package/dist/services/queue-manager.js.map +1 -1
  48. package/dist/services/queue-monitor.js +1 -1
  49. package/dist/services/queue-monitor.js.map +1 -1
  50. package/dist/services/queue-monitor.self-attribution.test.js +1 -1
  51. package/dist/services/queue-monitor.self-attribution.test.js.map +1 -1
  52. package/dist/services/ui-bridge.js +180 -17
  53. package/dist/services/ui-bridge.js.map +1 -1
  54. package/dist/services/update-comfyui.js +29 -2
  55. package/dist/services/update-comfyui.js.map +1 -1
  56. package/dist/services/workspace-env.js +3 -3
  57. package/dist/services/workspace-env.js.map +1 -1
  58. package/dist/tools/api-nodes.js +1 -1
  59. package/dist/tools/api-nodes.js.map +1 -1
  60. package/dist/tools/batches.js +1 -1
  61. package/dist/tools/batches.js.map +1 -1
  62. package/dist/tools/compact.js +32 -6
  63. package/dist/tools/compact.js.map +1 -1
  64. package/dist/tools/extra-paths.js +1 -1
  65. package/dist/tools/extra-paths.js.map +1 -1
  66. package/dist/tools/generate-3d.js +2 -2
  67. package/dist/tools/generate-3d.js.map +1 -1
  68. package/dist/tools/install-panel.js +62 -22
  69. package/dist/tools/install-panel.js.map +1 -1
  70. package/dist/tools/model-explorer.js +175 -117
  71. package/dist/tools/model-explorer.js.map +1 -1
  72. package/dist/tools/queue-management.js +117 -135
  73. package/dist/tools/queue-management.js.map +1 -1
  74. package/dist/tools/run-template.js +4 -4
  75. package/dist/tools/run-template.js.map +1 -1
  76. package/dist/tools/vocabulary.js +123 -19
  77. package/dist/tools/vocabulary.js.map +1 -1
  78. package/dist/tools/workflow-autoload.js +5 -5
  79. package/dist/tools/workflow-autoload.js.map +1 -1
  80. package/dist/tools/workflow-execute.js +1 -1
  81. package/dist/tools/workflow-execute.js.map +1 -1
  82. package/dist/tools/workspace-env.js +53 -28
  83. package/dist/tools/workspace-env.js.map +1 -1
  84. package/docs/design/panel-surface.txt +1 -0
  85. package/docs/design/tool-surface.txt +3 -0
  86. package/package.json +1 -1
  87. package/plugin/commands/batch.md +1 -1
  88. package/plugin/commands/gen.md +2 -2
  89. package/plugin/scripts/monitor-progress.mjs +1 -1
  90. package/plugin/skills/comfyui-core/SKILL.md +15 -13
  91. package/plugin/skills/director/SKILL.md +1 -1
  92. package/plugin/skills/ltxv2-video/SKILL.md +1 -1
  93. package/plugin/skills/troubleshooting/SKILL.md +1 -1
  94. package/plugin/skills/video-extend/SKILL.md +1 -1
  95. package/plugin/skills/workflow-layout/SKILL.md +4 -5
  96. package/scripts/arena-scenarios.mjs +5 -5
  97. package/scripts/check-tool-vocabulary.mts +9 -0
  98. package/scripts/gen-tool-docs.ts +31 -10
package/README.md CHANGED
@@ -16,7 +16,7 @@ Works on **macOS**, **Linux**, and **Windows**. Auto-detects your ComfyUI instal
16
16
 
17
17
  **Stuck or have a question? [Join the Discord](https://discord.gg/cW9arBhzCu)** — help, model tips, and release announcements.
18
18
 
19
- **162 MCP tools** | **37 AI skills** (Flux · WAN · LTX 2.3 video · Qwen · Z-Image · Ideogram 4 · ERNIE · ANIMA · model registry · Civitai · node authoring · launch/perf flags) | **55 installer packs** | **11 slash commands** | **4 autonomous agents** | **3 hooks**
19
+ **151 MCP tools** | **37 AI skills** (Flux · WAN · LTX 2.3 video · Qwen · Z-Image · Ideogram 4 · ERNIE · ANIMA · model registry · Civitai · node authoring · launch/perf flags) | **55 installer packs** | **11 slash commands** | **4 autonomous agents** | **3 hooks**
20
20
 
21
21
  The plugin ships **expert skills that grow with every release** — model-specific generation guides with curated download URLs, workflow recipes, troubleshooting, and custom-node authoring — so Claude knows the right sampler, CFG, resolution, and model files for each architecture without trial and error.
22
22
 
@@ -154,7 +154,7 @@ This package also ships as a **Claude Code plugin**, providing slash commands, s
154
154
 
155
155
  | Script | Description |
156
156
  |--------|-------------|
157
- | `monitor-progress.mjs` | **Progress monitor** — connects to ComfyUI's WebSocket for real-time step progress (e.g., `step 5/14 (36%)`). Run as a background Bash task after enqueuing workflows. Reports completion with output filenames, errors with node details. Replaces polling `get_job_status` in a loop. |
157
+ | `monitor-progress.mjs` | **Progress monitor** — connects to ComfyUI's WebSocket for real-time step progress (e.g., `step 5/14 (36%)`). Run as a background Bash task after enqueuing workflows. Reports completion with output filenames, errors with node details. Replaces polling `queue` (action:"status") in a loop. |
158
158
 
159
159
  ---
160
160
 
@@ -248,7 +248,7 @@ for the port, the capability matrix, and the per-provider "clink" points, and th
248
248
 
249
249
  ## MCP Tools
250
250
 
251
- 162 tools across workflow execution, generation, iteration, composition, models, and more:
251
+ 151 tools across workflow execution, generation, iteration, composition, models, and more:
252
252
 
253
253
  ### Image Generation (high-level)
254
254
 
@@ -286,12 +286,7 @@ for the port, the capability matrix, and the per-provider "clink" points, and th
286
286
  | Tool | Description |
287
287
  |------|-------------|
288
288
  | `enqueue_workflow` | Submit a workflow (API format JSON) — returns `prompt_id` immediately, non-blocking |
289
- | `get_job_status` | Check execution status of a job by prompt ID |
290
- | `get_queue` | View the current execution queue (running + pending) |
291
- | `get_queued_workflow` | Inspect the full workflow payload for one pending queue item |
292
- | `move_queued_job` | Move a pending job to the front/back by requeueing it with a new prompt ID |
293
- | `edit_queued_job` | Patch or replace a pending queued workflow and requeue it with a new prompt ID |
294
- | `cancel_job` | Interrupt the currently running job — escalates (interrupt → verify → `/free`) and reports WEDGED if it won't die; `clear_pending: true` also drops all pending jobs in the same call |
289
+ | `queue` | One action-parameterized tool for the execution queue: `list` (running + pending), `status` (one job by prompt ID), `get_workflow` (a pending job's full payload), `move`/`edit` (requeue a pending job front/back, patched or replaced, with a new prompt ID), `cancel` (interrupt the running job — escalates interrupt → verify → `/free`, reports WEDGED if it won't die; `clear_pending: true` also drops all pending), `cancel_queued`, `clear` |
295
290
  | `get_system_stats` | Get system info — GPU, VRAM, Python version, OS |
296
291
 
297
292
  ### Workflow Visualization
@@ -621,7 +616,7 @@ npx -y comfyui-mcp@latest --comfyui-url http://localhost:8188 --force-remote
621
616
  | `COMFYUI_STARTUP_CHECK_INTERVAL_S` / `…_MAX_TRIES` | `1` / `20` | Readiness-probe interval + max tries when starting a local ComfyUI |
622
617
  | `COMFYUI_ALWAYS_RESTART` | `false` | Auto-restart a crashed local ComfyUI (bounded by `COMFYUI_RESTART_MAX_ATTEMPTS` / `COMFYUI_RESTART_WINDOW_S`) |
623
618
  | `COMFYUI_MCP_STALL_S` | `180` | Render-wedge watchdog: seconds a sampler step can re-emit the same progress before a STALL/BACKLOG note is prepended to the agent's next turn (clamped 15–3600s; live-tunable from the panel) |
624
- | `COMFYUI_MCP_INTERRUPT_S` | `30` | Seconds `cancel_job` waits for an interrupt to actually stop a job before escalating to `/free` and reporting it wedged |
619
+ | `COMFYUI_MCP_INTERRUPT_S` | `30` | Seconds `queue` (action:"cancel") waits for an interrupt to actually stop a job before escalating to `/free` and reporting it wedged |
625
620
  | `LOG_LEVEL` | `info` | Logging verbosity: `debug`, `info`, `warn`, `error` |
626
621
 
627
622
  ### Transports
@@ -112,10 +112,10 @@ export async function interrupt(promptId) {
112
112
  logger.info("Cloud: job cancelled", { prompt_id: promptId });
113
113
  }
114
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");
115
+ throw new ComfyUIError("delete_queue_item is not supported in Comfy Cloud mode. Use queue (action:\"cancel\") with a prompt_id.", "CLOUD_UNSUPPORTED");
116
116
  }
117
117
  export async function clearQueue() {
118
- throw new ComfyUIError("clear_queue is not supported in Comfy Cloud mode.", "CLOUD_UNSUPPORTED");
118
+ throw new ComfyUIError("queue (action:\"clear\") is not supported in Comfy Cloud mode.", "CLOUD_UNSUPPORTED");
119
119
  }
120
120
  export async function getJobStatus(promptId) {
121
121
  const res = await cloudFetch(`/api/job/${promptId}/status`);
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-client.js","sourceRoot":"","sources":["../../src/comfyui/cloud-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud-client.js","sourceRoot":"","sources":["../../src/comfyui/cloud-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Admission for the orchestrator's direct tool channel (call_tool frames from a
3
+ * mobile/canvas-less client). Extracted from src/orchestrator/index.ts so the
4
+ * decision is a pure, unit-testable function — the dispatcher is a one-line
5
+ * call site.
6
+ */
7
+ /** The direct tool channel: a mobile client can invoke these READ/DOWNLOAD backend
8
+ * tools without an agent turn (structured nav data + rig downloads). The
9
+ * bridge is already token-gated; this whitelist keeps call_tool to non-destructive
10
+ * tools (no restart/remove/clear/install). */
11
+ const CALL_TOOL_WHITELIST = new Set([
12
+ "list_workflows",
13
+ "get_workflow",
14
+ "analyze_workflow",
15
+ "query_workflow",
16
+ "workflow_from_image",
17
+ "list_output_images",
18
+ "get_image",
19
+ "list_local_models",
20
+ // Read-only CivitAI lookups (creator-search feature): let a client browse
21
+ // models/creators through the rig without an agent turn.
22
+ "search_civitai_models",
23
+ "search_civitai_creators",
24
+ "download_civitai_model",
25
+ "download_model",
26
+ "enqueue_workflow",
27
+ // Persist a workflow to the ComfyUI library (mobile "pull workflow from a
28
+ // CivitAI example" → save_workflow). Writes a workflow file (auto-converts
29
+ // API-format graphs to canvas-openable UI format); overwrites same-filename,
30
+ // so the client generates a unique name. No model/system mutation.
31
+ "save_workflow",
32
+ // One-tap cancel of the RUNNING render (the mobile queue monitor's stop
33
+ // button). User-initiated and narrowly scoped: the client passes the
34
+ // prompt_id it saw in `queue_status`, and action:"cancel" only interrupts
35
+ // when the running job still matches — it can never kill a job that started
36
+ // after the tap, and (without clear_pending, which the mobile client never
37
+ // sends) it never touches other pending jobs in a shared queue. 0.49.0
38
+ // slice 4 folded the eight queue/jobs tools into this one name, so admission
39
+ // is ACTION-scoped below to exactly what its retired single-purpose
40
+ // predecessor entry covered — see CALL_TOOL_ACTION_WHITELIST.
41
+ "queue",
42
+ // "Why did my render fail?" for canvas-less clients. The panel answers this from
43
+ // live canvas state (panel_get_errors); a phone has no canvas, so it reads
44
+ // the same story server-side from history + re-validating the graph that ran.
45
+ // Read-only.
46
+ "diagnose_run",
47
+ // Read-only training surface: flow/model discovery + progress polling +
48
+ // docker/GPU/image preflight for the panel/mobile Training tab, and the
49
+ // dataset/job-config/file readers behind its Jobs/Datasets views.
50
+ "train_list_flows",
51
+ "train_status",
52
+ "train_doctor",
53
+ "train_list_datasets",
54
+ "train_dataset_detail",
55
+ "train_job_config",
56
+ "train_file",
57
+ "train_preview_config",
58
+ "train_dataset_update",
59
+ "train_dataset_delete",
60
+ "train_caption_image",
61
+ "train_caption_dataset",
62
+ "train_delete_job",
63
+ // User-initiated training ops (panel/mobile Training wizard): stage a dataset,
64
+ // launch a GPU-container training run, cancel one. All validation lives in the
65
+ // tools themselves (dataset checks, docker/image preflight, liveness-verified
66
+ // cancel); the whitelist only gates reachability.
67
+ "train_prepare_dataset",
68
+ "train_start",
69
+ "train_cancel",
70
+ // RunPod control panel (desktop + mobile): the one-tap pod lifecycle + the
71
+ // local⇄pod host switch. Read-only status/list/troubleshoot, the COST-SAVING
72
+ // actions (stop/use_local), connect (retarget only — a pod must already be
73
+ // RUNNING, so it neither spins nor keeps one billing), watch/unwatch, and the
74
+ // referral deploy link. Each tool validates its own pod state; the whitelist
75
+ // only gates reachability from a canvas-less client.
76
+ // NOTE: runpod_pod_create AND runpod_pod_start are deliberately EXCLUDED
77
+ // (#269/#278) — both put a pod into a BILLING state (create deploys; start
78
+ // RESUMES billing on a stopped pod). A confirmation-less mirrored/foreign tab
79
+ // must not be able to spend money, so both go through an agent turn / explicit
80
+ // UI action. stop is kept (it SAVES money).
81
+ "runpod_pod_status",
82
+ "runpod_list_pods",
83
+ "runpod_pod_stop",
84
+ "runpod_pod_connect",
85
+ "runpod_pod_troubleshoot",
86
+ "runpod_use_local",
87
+ "runpod_watch",
88
+ "runpod_unwatch",
89
+ "runpod_deploy_link",
90
+ // Micro-Apps (panel "Apps" feature): the canvas-less client's list/run/poll
91
+ // surface, plus registry install. One tool since 0.49.0 slice 2, so the
92
+ // whitelist can no longer distinguish the actions — the risk posture is judged
93
+ // over the whole tool. Run queues a job the user explicitly tapped (same as
94
+ // enqueue_workflow, already whitelisted); list/get/run_status are read-only;
95
+ // import (mobile Explore) has the rig fetch a bundle from the public registry
96
+ // and write it locally, the same risk as save_workflow + download_model
97
+ // (already whitelisted) — no model/system mutation, and deps install stays a
98
+ // separate consented action.
99
+ "apps",
100
+ // App dependency side-panel (Explore/detail): the ✓/download panel reads what
101
+ // an app needs vs what's installed and offers per-item fetches. Reads are safe
102
+ // (missing-model detection + candidate resolution, node-pack presence); model
103
+ // downloads reuse the already-whitelisted download_civitai_model/download_model.
104
+ // install_custom_node is a MUTATION that runs the pack's code on install —
105
+ // reachable for the panel's "install missing node" button, gated behind an
106
+ // explicit themed confirm client-side. (Revisit if a canvas-less/foreign tab
107
+ // must not be able to trigger a node install.)
108
+ "resolve_missing_models",
109
+ "extract_workflow_dependencies",
110
+ "list_installed_nodes",
111
+ "install_custom_node",
112
+ ]);
113
+ /**
114
+ * ACTION-scoped admission, layered on top of the name whitelist.
115
+ *
116
+ * The whitelist predates the 0.49.0 consolidation, which folds tool FAMILIES
117
+ * into single action-parameterized names — and the call_tool dispatcher
118
+ * authorizes by tool NAME only, then forwards arbitrary action arguments.
119
+ * Whitelisting a consolidated name would therefore silently admit EVERY action
120
+ * the family folds, including ones the retired per-tool entry never covered. A
121
+ * tool listed here is admitted only when args.action names one of these
122
+ * actions; a tool NOT listed here keeps plain name-level admission (its
123
+ * whitelist entry was already judged over the whole tool).
124
+ *
125
+ * Wired ONLY where a slice's whitelist swap would otherwise broaden admission.
126
+ */
127
+ const CALL_TOOL_ACTION_WHITELIST = new Map([
128
+ // The `queue` entry above replaces the retired standalone cancel entry
129
+ // (0.49.0 slice 4), which admitted CANCEL semantics only: interrupt the
130
+ // running job, optionally prompt_id-matched, optionally with clear_pending —
131
+ // and that is exactly action:"cancel", clear_pending included (its
132
+ // wipe-all-pending effect the old entry already admitted). Every other
133
+ // action stays refused, because none was reachable before:
134
+ // move/edit/cancel_queued mutate pending
135
+ // jobs the old entry couldn't touch individually; clear drops pending while
136
+ // SPARING the running job, a combination the old entry could not express;
137
+ // and list/status/get_workflow, though read-only, were never whitelisted.
138
+ ["queue", new Set(["cancel"])],
139
+ ]);
140
+ /**
141
+ * The admission decision for one call_tool frame: null when admitted,
142
+ * otherwise the refusal reason (pushed as the tool_result error and logged).
143
+ *
144
+ * The name-level refusal string is byte-identical to what the dispatcher
145
+ * produced before this extraction, so a client that was refused for a
146
+ * non-whitelisted tool sees no change.
147
+ */
148
+ export function callToolAdmission(tool, args) {
149
+ if (!CALL_TOOL_WHITELIST.has(tool))
150
+ return `tool "${tool}" is not permitted`;
151
+ const actions = CALL_TOOL_ACTION_WHITELIST.get(tool);
152
+ if (actions !== undefined) {
153
+ const action = typeof args.action === "string" ? args.action : undefined;
154
+ if (action === undefined || !actions.has(action)) {
155
+ return `tool "${tool}" is not permitted for action "${action ?? "(missing)"}"`;
156
+ }
157
+ }
158
+ return null;
159
+ }
160
+ //# sourceMappingURL=call-tool-admission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-tool-admission.js","sourceRoot":"","sources":["../../src/orchestrator/call-tool-admission.ts"],"names":[],"mappings":"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"}