comfyui-mcp 0.13.0 → 0.14.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.
Files changed (175) hide show
  1. package/.beads/hooks/post-checkout +24 -0
  2. package/.beads/hooks/post-merge +24 -0
  3. package/.beads/hooks/pre-commit +24 -0
  4. package/.beads/hooks/pre-push +24 -0
  5. package/.beads/hooks/prepare-commit-msg +24 -0
  6. package/.gitattributes +4 -0
  7. package/CHANGELOG.md +90 -0
  8. package/README.md +6 -4
  9. package/dist/index.js +7 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/orchestrator/index.js +132 -0
  12. package/dist/orchestrator/index.js.map +1 -0
  13. package/dist/orchestrator/panel-agent.js +227 -0
  14. package/dist/orchestrator/panel-agent.js.map +1 -0
  15. package/dist/services/ui-bridge.js +137 -76
  16. package/dist/services/ui-bridge.js.map +1 -1
  17. package/dist/tools/workflow-compose.js +4 -4
  18. package/dist/tools/workflow-compose.js.map +1 -1
  19. package/dist/tools/workflow-deps.js +2 -2
  20. package/dist/tools/workflow-deps.js.map +1 -1
  21. package/dist/tools/workflow-library.js +1 -1
  22. package/dist/tools/workflow-library.js.map +1 -1
  23. package/dist/tools/workflow-validate.js +1 -1
  24. package/dist/tools/workflow-validate.js.map +1 -1
  25. package/dist/tools/workflow-visualize.js +2 -2
  26. package/dist/tools/workflow-visualize.js.map +1 -1
  27. package/dist/transport/cli.js +6 -1
  28. package/dist/transport/cli.js.map +1 -1
  29. package/package.json +8 -4
  30. package/packs/README.md +65 -0
  31. package/packs/anima/install-runpod.sh +49 -0
  32. package/packs/anima/install-windows.bat +55 -0
  33. package/packs/anima/manifest.yaml +72 -0
  34. package/packs/anima/pack.yaml +25 -0
  35. package/packs/anima/workflow.json +16026 -0
  36. package/packs/cozy-flow/install-runpod.sh +35 -0
  37. package/packs/cozy-flow/install-windows.bat +41 -0
  38. package/packs/cozy-flow/manifest.yaml +60 -0
  39. package/packs/cozy-flow/pack.yaml +69 -0
  40. package/packs/cozy-flow/workflow.json +2552 -0
  41. package/packs/ernie/install-runpod.sh +35 -0
  42. package/packs/ernie/install-windows.bat +41 -0
  43. package/packs/ernie/manifest.yaml +47 -0
  44. package/packs/ernie/pack.yaml +46 -0
  45. package/packs/ernie/workflow.json +16050 -0
  46. package/packs/ideogram/install-runpod.sh +29 -0
  47. package/packs/ideogram/install-windows.bat +35 -0
  48. package/packs/ideogram/manifest.yaml +29 -0
  49. package/packs/ideogram/pack.yaml +38 -0
  50. package/packs/ideogram/templates/01_Film_Poster.json +71 -0
  51. package/packs/ideogram/templates/02_TShirt_Graphic_Print.json +34 -0
  52. package/packs/ideogram/templates/03_Fantasy_Book_Cover.json +69 -0
  53. package/packs/ideogram/templates/04_Event_Flyer_Poster.json +82 -0
  54. package/packs/ideogram/templates/05_Comic_Book_Cover.json +84 -0
  55. package/packs/ideogram/templates/06_Company_Logo_Concept_Board.json +114 -0
  56. package/packs/ideogram/templates/07_Personal_Branding_Sheet.json +75 -0
  57. package/packs/ideogram/templates/08_Social_Media_Branding_Kit.json +92 -0
  58. package/packs/ideogram/templates/09_Mascot_Brand_Kit.json +89 -0
  59. package/packs/ideogram/templates/10_Luxury_Brand_Identity.json +120 -0
  60. package/packs/ideogram/templates/11_Food_Promo_Poster.json +156 -0
  61. package/packs/ideogram/templates/12_Real_Estate_Promotion.json +117 -0
  62. package/packs/ideogram/templates/13_Restaurant_Fast_Food_Menu.json +123 -0
  63. package/packs/ideogram/templates/14_Product_Advertisement.json +114 -0
  64. package/packs/ideogram/templates/15_Tech_Service_Promotion.json +132 -0
  65. package/packs/ideogram/templates/16_2D_Character_Sheet.json +71 -0
  66. package/packs/ideogram/templates/17_3D_Character_Sheet.json +63 -0
  67. package/packs/ideogram/templates/18_Game_Item_Asset_Sheet.json +135 -0
  68. package/packs/ideogram/templates/19_Magazine_Cover_Design.json +108 -0
  69. package/packs/ideogram/templates/20_Trading_Card_Design.json +108 -0
  70. package/packs/ideogram/templates/21_Painting_Style_Scene.json +51 -0
  71. package/packs/ideogram/templates/22_Anime_Magazine_Cover.json +114 -0
  72. package/packs/ideogram/templates/23_Anime_Poster.json +127 -0
  73. package/packs/ideogram/templates/24_Realistic_Photoshoot_Scene.json +18 -0
  74. package/packs/ideogram/templates/25_Cross_Style_Group_Photo.json +28 -0
  75. package/packs/ideogram/templates/README_IDEOGRAM4_TEMPLATE_PACK.txt +470 -0
  76. package/packs/ideogram/workflow.json +6472 -0
  77. package/packs/ltx-2.3/fix-ltxvideo-kornia.bat +122 -0
  78. package/packs/ltx-2.3/fix-ltxvideo-kornia.sh +91 -0
  79. package/packs/ltx-2.3/install-runpod.sh +44 -0
  80. package/packs/ltx-2.3/install-windows.bat +50 -0
  81. package/packs/ltx-2.3/manifest.yaml +58 -0
  82. package/packs/ltx-2.3/pack.yaml +48 -0
  83. package/packs/qwen-image/install-runpod.sh +42 -0
  84. package/packs/qwen-image/install-windows.bat +48 -0
  85. package/packs/qwen-image/manifest.yaml +77 -0
  86. package/packs/qwen-image/pack.yaml +45 -0
  87. package/packs/qwen-image-edit/install-runpod.sh +39 -0
  88. package/packs/qwen-image-edit/install-windows.bat +45 -0
  89. package/packs/qwen-image-edit/manifest.yaml +74 -0
  90. package/packs/qwen-image-edit/pack.yaml +45 -0
  91. package/packs/qwen-image-edit/workflow-inpainting.json +2351 -0
  92. package/packs/qwen-image-edit/workflow.json +2089 -0
  93. package/packs/wan-animate/install-runpod.sh +39 -0
  94. package/packs/wan-animate/install-windows.bat +45 -0
  95. package/packs/wan-animate/manifest.yaml +57 -0
  96. package/packs/wan-animate/pack.yaml +49 -0
  97. package/packs/wan-animate/workflow.json +6993 -0
  98. package/packs/wan-longer-videos/install-runpod.sh +39 -0
  99. package/packs/wan-longer-videos/install-windows.bat +45 -0
  100. package/packs/wan-longer-videos/manifest.yaml +71 -0
  101. package/packs/wan-longer-videos/pack.yaml +42 -0
  102. package/packs/wan-longer-videos/workflow.json +22538 -0
  103. package/packs/wan-transparent/expression-renamer.bat +21 -0
  104. package/packs/wan-transparent/install-runpod.sh +35 -0
  105. package/packs/wan-transparent/install-windows.bat +41 -0
  106. package/packs/wan-transparent/manifest.yaml +49 -0
  107. package/packs/wan-transparent/pack.yaml +49 -0
  108. package/packs/wan-transparent/workflow.json +2194 -0
  109. package/packs/z-image-base/install-runpod.sh +40 -0
  110. package/packs/z-image-base/install-windows.bat +46 -0
  111. package/packs/z-image-base/manifest.yaml +75 -0
  112. package/packs/z-image-base/pack.yaml +39 -0
  113. package/packs/z-image-base/workflow.json +15198 -0
  114. package/packs/z-image-turbo/install-runpod.sh +39 -0
  115. package/packs/z-image-turbo/install-windows.bat +45 -0
  116. package/packs/z-image-turbo/manifest.yaml +61 -0
  117. package/packs/z-image-turbo/pack.yaml +40 -0
  118. package/packs/z-image-turbo/workflow.json +12120 -0
  119. package/packs/z-image-xy-plot/install-runpod.sh +33 -0
  120. package/packs/z-image-xy-plot/install-windows.bat +39 -0
  121. package/packs/z-image-xy-plot/manifest.yaml +61 -0
  122. package/packs/z-image-xy-plot/pack.yaml +49 -0
  123. package/packs/z-image-xy-plot/workflow.json +5302 -0
  124. package/plugin/.claude-plugin/plugin.json +10 -0
  125. package/plugin/agents/debugger.md +171 -0
  126. package/plugin/agents/explorer.md +65 -0
  127. package/plugin/agents/optimizer.md +196 -0
  128. package/plugin/agents/researcher.md +56 -0
  129. package/plugin/commands/batch.md +90 -0
  130. package/plugin/commands/compare.md +83 -0
  131. package/plugin/commands/convert.md +78 -0
  132. package/plugin/commands/debug.md +72 -0
  133. package/plugin/commands/director.md +134 -0
  134. package/plugin/commands/gallery.md +61 -0
  135. package/plugin/commands/gen.md +110 -0
  136. package/plugin/commands/install.md +68 -0
  137. package/plugin/commands/node-skill.md +39 -0
  138. package/plugin/commands/recipe.md +125 -0
  139. package/plugin/commands/viz.md +39 -0
  140. package/plugin/hooks/hooks.json +36 -0
  141. package/plugin/hooks/job-complete-notify.mjs +110 -0
  142. package/plugin/hooks/open-latest-image.mjs +82 -0
  143. package/plugin/hooks/save-warning.mjs +21 -0
  144. package/plugin/hooks/vram-check.mjs +72 -0
  145. package/plugin/skills/ai-toolkit-trainer/SKILL.md +145 -0
  146. package/plugin/skills/anima-base/SKILL.md +240 -0
  147. package/plugin/skills/anima-lora-trainer/SKILL.md +162 -0
  148. package/plugin/skills/civitai/SKILL.md +107 -0
  149. package/plugin/skills/comfyui-core/SKILL.md +264 -0
  150. package/plugin/skills/comfyui-core/references/common-nodes.md +149 -0
  151. package/plugin/skills/comfyui-frontend-extensions/SKILL.md +502 -0
  152. package/plugin/skills/comfyui-frontend-extensions/references/migrate-v1-to-v2.md +222 -0
  153. package/plugin/skills/comfyui-node-registry/SKILL.md +218 -0
  154. package/plugin/skills/comfyui-node-registry/references/pyproject.toml +65 -0
  155. package/plugin/skills/director/SKILL.md +321 -0
  156. package/plugin/skills/ernie-image/SKILL.md +225 -0
  157. package/plugin/skills/flux-txt2img/SKILL.md +285 -0
  158. package/plugin/skills/ideogram-ultra/SKILL.md +337 -0
  159. package/plugin/skills/installer-packs/SKILL.md +74 -0
  160. package/plugin/skills/ltxv2-video/SKILL.md +515 -0
  161. package/plugin/skills/model-compatibility/SKILL.md +434 -0
  162. package/plugin/skills/model-registry/SKILL.md +101 -0
  163. package/plugin/skills/prompt-engineering/SKILL.md +304 -0
  164. package/plugin/skills/qwen-image-edit/SKILL.md +282 -0
  165. package/plugin/skills/qwen-txt2img/SKILL.md +332 -0
  166. package/plugin/skills/troubleshooting/SKILL.md +424 -0
  167. package/plugin/skills/wan-flf-video/SKILL.md +514 -0
  168. package/plugin/skills/wan-t2v-video/SKILL.md +322 -0
  169. package/plugin/skills/z-image-txt2img/SKILL.md +294 -0
  170. package/scripts/check-model-urls.mjs +160 -0
  171. package/scripts/gen-pack-installers.mjs +133 -0
  172. package/scripts/gen-tool-docs.ts +4 -8
  173. package/scripts/panel-sim.mjs +56 -0
  174. package/scripts/test-packs.sh +87 -0
  175. package/scripts/validate-manifests.mjs +29 -0
@@ -0,0 +1,227 @@
1
+ // Panel agent — one persistent Claude Agent SDK streaming session per ComfyUI
2
+ // panel tab. This is the autonomous background driver for the sidebar panel: the
3
+ // orchestrator (src/orchestrator/index.ts) owns the UI bridge and feeds each
4
+ // tab's user messages into that tab's session here; the agent's replies flow
5
+ // back out to the panel chat.
6
+ //
7
+ // Why the Agent SDK (not --sdk-url / CCR-v2): we need a persistent background
8
+ // agent with a live "channel in" (push messages over time), interrupt/inject,
9
+ // and SUBSCRIPTION auth with no API key — without patching the claude binary.
10
+ // `query({ prompt: <async generator> })` is exactly that: the generator stays
11
+ // open (the channel in), `Query.interrupt()` stops a live turn, and with
12
+ // ANTHROPIC_API_KEY unset the SDK reads the on-disk claude.ai OAuth login
13
+ // (verified: the session reports apiKeySource=none on this machine).
14
+ //
15
+ // The spawned agent runs THIS comfyui-mcp build as its MCP server in normal
16
+ // (non-channels) mode, so it talks to the live ComfyUI over COMFYUI_URL and
17
+ // never contends for the bridge port the orchestrator owns.
18
+ import { logger } from "../utils/logger.js";
19
+ // The Agent SDK is an OPTIONAL dependency (it pulls in ~100 packages and is only
20
+ // needed for the panel orchestrator), so load it lazily and fail with a clear
21
+ // message rather than at import time for everyone.
22
+ let queryFn = null;
23
+ async function loadQuery() {
24
+ if (queryFn)
25
+ return queryFn;
26
+ try {
27
+ const mod = await import("@anthropic-ai/claude-agent-sdk");
28
+ queryFn = mod.query;
29
+ }
30
+ catch {
31
+ throw new Error("The panel orchestrator requires the optional dependency @anthropic-ai/claude-agent-sdk. Install it with: npm i @anthropic-ai/claude-agent-sdk");
32
+ }
33
+ return queryFn;
34
+ }
35
+ function msgOf(err) {
36
+ return err instanceof Error ? err.message : String(err);
37
+ }
38
+ /**
39
+ * One persistent streaming session for a single panel tab. Messages typed in
40
+ * the panel are queued via `send()` and yielded into the live `query()` session
41
+ * as user turns; the session never closes until `stop()`.
42
+ */
43
+ export class PanelAgent {
44
+ tabId;
45
+ deps;
46
+ q = null;
47
+ queue = [];
48
+ waiting = null;
49
+ closed = false;
50
+ /** Captured from the session's init message; enables resume across restarts. */
51
+ sessionId = null;
52
+ title;
53
+ constructor(tabId, deps) {
54
+ this.tabId = tabId;
55
+ this.deps = deps;
56
+ }
57
+ short() {
58
+ return this.tabId.slice(0, 8);
59
+ }
60
+ /** Queue a panel message and wake the streaming generator (the "channel in"). */
61
+ send(text, title) {
62
+ if (title)
63
+ this.title = title;
64
+ this.queue.push(text);
65
+ const wake = this.waiting;
66
+ this.waiting = null;
67
+ wake?.();
68
+ }
69
+ /** Stop the current turn without ending the session (a "stop" button). */
70
+ async interrupt() {
71
+ try {
72
+ await this.q?.interrupt();
73
+ }
74
+ catch (err) {
75
+ logger.debug(`[panel-agent ${this.short()}] interrupt: ${msgOf(err)}`);
76
+ }
77
+ }
78
+ /** End the session and release the agent (tab closed / orchestrator shutdown). */
79
+ async stop() {
80
+ this.closed = true;
81
+ const wake = this.waiting;
82
+ this.waiting = null;
83
+ wake?.(); // let the generator observe `closed` and return
84
+ try {
85
+ await this.q?.interrupt();
86
+ }
87
+ catch {
88
+ // already winding down
89
+ }
90
+ }
91
+ // The streaming "channel in": an async generator that stays open and yields a
92
+ // user turn whenever the panel sends one. The session idles between messages
93
+ // and wakes the moment send() pushes — solving "can't wake an idle session".
94
+ async *channel() {
95
+ while (!this.closed) {
96
+ if (this.queue.length === 0) {
97
+ await new Promise((resolve) => {
98
+ this.waiting = resolve;
99
+ });
100
+ }
101
+ if (this.closed)
102
+ return;
103
+ const text = this.queue.shift();
104
+ if (text === undefined)
105
+ continue;
106
+ yield {
107
+ type: "user",
108
+ message: { role: "user", content: text },
109
+ parent_tool_use_id: null,
110
+ };
111
+ }
112
+ }
113
+ /**
114
+ * Start the persistent session. Resolves only when the session ends. Safe to
115
+ * call once; `send()` may be called before this resolves (messages queue).
116
+ */
117
+ async start(resumeSessionId) {
118
+ const query = await loadQuery();
119
+ const options = {
120
+ model: this.deps.model,
121
+ permissionMode: "bypassPermissions",
122
+ // Required alongside bypassPermissions (intentional, isolated background agent).
123
+ allowDangerouslySkipPermissions: true,
124
+ mcpServers: this.deps.mcpServers,
125
+ // Only our comfyui MCP — never inherit the user's project/user MCP config
126
+ // (which may run a second comfyui in --channels mode that grabs the port).
127
+ strictMcpConfig: true,
128
+ systemPrompt: {
129
+ type: "preset",
130
+ preset: "claude_code",
131
+ append: this.deps.systemAppend,
132
+ },
133
+ // Load the bundled comfyui-mcp plugin so the agent has model expertise
134
+ // (IDEOGRAM/WAN/LTX/Qwen/… skills) out of the box — "install the package
135
+ // = expert agent". Omitted if the plugin dir can't be found.
136
+ ...(this.deps.pluginPath
137
+ ? {
138
+ plugins: [{ type: "local", path: this.deps.pluginPath }],
139
+ skills: "all",
140
+ }
141
+ : {}),
142
+ ...(resumeSessionId ? { resume: resumeSessionId } : {}),
143
+ };
144
+ this.q = query({ prompt: this.channel(), options });
145
+ try {
146
+ for await (const message of this.q)
147
+ this.route(message);
148
+ }
149
+ catch (err) {
150
+ if (!this.closed) {
151
+ logger.error(`[panel-agent ${this.short()}] stream error: ${msgOf(err)}`);
152
+ }
153
+ }
154
+ finally {
155
+ logger.info(`[panel-agent ${this.short()}] session ended`);
156
+ }
157
+ }
158
+ route(message) {
159
+ switch (message.type) {
160
+ case "system":
161
+ if (message.subtype === "init") {
162
+ this.sessionId = message.session_id;
163
+ logger.info(`[panel-agent ${this.short()}] init model=${message.model} session=${message.session_id.slice(0, 8)} apiKeySource=${message.apiKeySource} skills=${message.skills?.length ?? 0}`);
164
+ }
165
+ break;
166
+ case "assistant": {
167
+ // Relay each text block into the panel chat — progress and final reply.
168
+ const content = (message.message?.content ?? []);
169
+ for (const block of content) {
170
+ if (block.type === "text" && typeof block.text === "string") {
171
+ const text = block.text.trim();
172
+ if (text)
173
+ this.deps.onSay(this.tabId, text);
174
+ }
175
+ }
176
+ break;
177
+ }
178
+ case "result":
179
+ logger.info(`[panel-agent ${this.short()}] turn done (subtype=${message.subtype})`);
180
+ break;
181
+ default:
182
+ break;
183
+ }
184
+ }
185
+ }
186
+ /** Owns one PanelAgent per tab id, spawned lazily on the tab's first message. */
187
+ export class PanelAgentManager {
188
+ agents = new Map();
189
+ opts;
190
+ constructor(opts) {
191
+ this.opts = opts;
192
+ }
193
+ /** Route a panel message to its tab's agent, creating the agent if needed. */
194
+ send(tabId, text, meta) {
195
+ let agent = this.agents.get(tabId);
196
+ if (!agent) {
197
+ agent = new PanelAgent(tabId, {
198
+ mcpServers: this.opts.mcpServers,
199
+ systemAppend: this.opts.systemAppend,
200
+ model: this.opts.model,
201
+ onSay: this.opts.onSay,
202
+ pluginPath: this.opts.pluginPath,
203
+ });
204
+ this.agents.set(tabId, agent);
205
+ logger.info(`[panel-orchestrator] spawning agent for tab ${tabId.slice(0, 8)} (${this.agents.size} active)`);
206
+ // Fire-and-forget: start() resolves only when the session ends.
207
+ void agent.start().catch((err) => {
208
+ this.agents.delete(tabId);
209
+ const m = msgOf(err);
210
+ logger.error(`[panel-agent ${tabId.slice(0, 8)}] failed to start: ${m}`);
211
+ this.opts.onSay(tabId, `⚠️ The panel agent could not start: ${m}`);
212
+ });
213
+ }
214
+ agent.send(text, meta?.title);
215
+ }
216
+ async interrupt(tabId) {
217
+ await this.agents.get(tabId)?.interrupt();
218
+ }
219
+ async stopAll() {
220
+ await Promise.all([...this.agents.values()].map((a) => a.stop()));
221
+ this.agents.clear();
222
+ }
223
+ count() {
224
+ return this.agents.size;
225
+ }
226
+ }
227
+ //# sourceMappingURL=panel-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-agent.js","sourceRoot":"","sources":["../../src/orchestrator/panel-agent.ts"],"names":[],"mappings":"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"}
@@ -19,112 +19,169 @@ import { WebSocketServer, WebSocket } from "ws";
19
19
  import { logger } from "../utils/logger.js";
20
20
  export const DEFAULT_BRIDGE_PORT = 9101;
21
21
  export class UiBridge {
22
+ /** Max EADDRINUSE retries before degrading to "panel unavailable". */
23
+ static MAX_BIND_ATTEMPTS = 5;
24
+ /** Backoff base; delays are 200, 400, 800, 1600, 3200ms (~6.2s total). */
25
+ static BIND_RETRY_BASE_MS = 200;
22
26
  wss = null;
23
27
  conns = new Map(); // tabId -> connection
24
28
  pending = new Map();
25
29
  portInUse = false;
30
+ bindRetryTimer = null;
26
31
  port;
27
32
  /** Tab the user most recently typed in — the default command target. */
28
33
  lastActiveTabId = null;
34
+ /** Resolves true once the port is bound, false if binding ultimately fails. */
35
+ readyPromise = null;
36
+ readyResolve = null;
29
37
  /** Called for panel-initiated frames (no rid): user messages, hellos. */
30
38
  onPanelMessage = null;
31
39
  constructor(port = DEFAULT_BRIDGE_PORT) {
32
40
  this.port = port;
33
41
  }
34
42
  start() {
43
+ this.portInUse = false;
44
+ this.readyPromise = new Promise((resolve) => {
45
+ this.readyResolve = resolve;
46
+ });
47
+ this.attemptListen(0);
48
+ }
49
+ /**
50
+ * Resolves true once the bridge port is bound, false if it ultimately can't
51
+ * bind (port held by another process). Lets a caller that *must* own the port
52
+ * — the panel orchestrator — fail loudly instead of running uselessly.
53
+ */
54
+ whenReady() {
55
+ return this.readyPromise ?? Promise.resolve(this.wss !== null);
56
+ }
57
+ /**
58
+ * Bind the loopback bridge port, retrying briefly on EADDRINUSE. A fast
59
+ * `/mcp` reconnect can race the previous session's bridge before the OS has
60
+ * released the port; rather than degrade immediately we back off and retry,
61
+ * so the common restart case self-heals. Non-blocking — this never delays
62
+ * MCP stdio startup, which is what matters for the client's init timeout.
63
+ */
64
+ attemptListen(attempt) {
35
65
  // Loopback only — this drives the user's live editor and must never be
36
66
  // reachable from the LAN.
37
67
  const wss = new WebSocketServer({ port: this.port, host: "127.0.0.1" });
68
+ wss.on("listening", () => {
69
+ this.portInUse = false;
70
+ this.wss = wss;
71
+ logger.info(`[ui-bridge] listening on ws://127.0.0.1:${this.port}`);
72
+ this.readyResolve?.(true);
73
+ this.readyResolve = null;
74
+ });
38
75
  wss.on("error", (err) => {
39
76
  if (err.code === "EADDRINUSE") {
40
- this.portInUse = true;
41
- logger.warn(`[ui-bridge] port ${this.port} in use — another comfyui-mcp session likely owns the panel`);
42
- }
43
- else {
44
- logger.error(`[ui-bridge] server error: ${err.message}`);
45
- }
46
- });
47
- wss.on("connection", (sock) => {
48
- // The connection is anonymous until its hello frame names a tab id.
49
- let tabId = null;
50
- sock.on("message", (buf) => {
51
- const raw = buf.toString();
52
- let msg;
77
+ // Discard this server; a fresh one is created per retry.
53
78
  try {
54
- msg = JSON.parse(raw);
79
+ wss.close();
55
80
  }
56
81
  catch {
57
- logger.warn("[ui-bridge] dropping malformed frame from panel");
58
- return;
82
+ // Nothing bound to clean up.
59
83
  }
60
- // Hello: register (or refresh) this connection under its tab id.
61
- if (msg.type === "hello" && typeof msg.tab_id === "string") {
62
- tabId = msg.tab_id;
63
- const existing = this.conns.get(tabId);
64
- if (existing && existing.sock !== sock) {
65
- // Same tab reconnected (reload) — supersede the stale socket.
66
- try {
67
- existing.sock.close();
68
- }
69
- catch {
70
- // Already gone.
71
- }
72
- }
73
- this.conns.set(tabId, {
74
- sock,
75
- tabId,
76
- title: typeof msg.title === "string" && msg.title ? msg.title : "untitled",
77
- connectedAt: existing?.connectedAt ?? new Date().toISOString(),
78
- });
79
- logger.info(`[ui-bridge] panel tab connected: ${tabId.slice(0, 8)} (“${this.conns.get(tabId)?.title}”) — ${this.conns.size} tab(s) total`);
80
- this.onPanelMessage?.(msg);
84
+ if (attempt < UiBridge.MAX_BIND_ATTEMPTS) {
85
+ const delay = UiBridge.BIND_RETRY_BASE_MS * 2 ** attempt;
86
+ logger.warn(`[ui-bridge] port ${this.port} in use — a previous session may still be releasing it; retrying in ${delay}ms (attempt ${attempt + 1}/${UiBridge.MAX_BIND_ATTEMPTS})`);
87
+ this.bindRetryTimer = setTimeout(() => {
88
+ this.bindRetryTimer = null;
89
+ this.attemptListen(attempt + 1);
90
+ }, delay);
81
91
  return;
82
92
  }
83
- const rid = typeof msg.rid === "string" ? msg.rid : undefined;
84
- if (rid) {
85
- const p = this.pending.get(rid);
86
- if (!p)
87
- return; // late reply for a timed-out command
88
- clearTimeout(p.timer);
89
- this.pending.delete(rid);
90
- if (msg.ok) {
91
- p.resolve(msg.result);
93
+ this.portInUse = true;
94
+ logger.warn(`[ui-bridge] port ${this.port} still in use after ${UiBridge.MAX_BIND_ATTEMPTS} attempts — another comfyui-mcp session likely owns the panel. This session's MCP tools still work, but panel_* commands are unavailable until that session exits.`);
95
+ this.readyResolve?.(false);
96
+ this.readyResolve = null;
97
+ }
98
+ else {
99
+ logger.error(`[ui-bridge] server error: ${err.message}`);
100
+ // If we never reached "listening", unblock any whenReady() waiter.
101
+ this.readyResolve?.(false);
102
+ this.readyResolve = null;
103
+ }
104
+ });
105
+ wss.on("connection", (sock) => this.handleConnection(sock));
106
+ }
107
+ handleConnection(sock) {
108
+ // The connection is anonymous until its hello frame names a tab id.
109
+ let tabId = null;
110
+ sock.on("message", (buf) => {
111
+ const raw = buf.toString();
112
+ let msg;
113
+ try {
114
+ msg = JSON.parse(raw);
115
+ }
116
+ catch {
117
+ logger.warn("[ui-bridge] dropping malformed frame from panel");
118
+ return;
119
+ }
120
+ // Hello: register (or refresh) this connection under its tab id.
121
+ if (msg.type === "hello" && typeof msg.tab_id === "string") {
122
+ tabId = msg.tab_id;
123
+ const existing = this.conns.get(tabId);
124
+ if (existing && existing.sock !== sock) {
125
+ // Same tab reconnected (reload) — supersede the stale socket.
126
+ try {
127
+ existing.sock.close();
92
128
  }
93
- else {
94
- p.reject(new Error(String(msg.error ?? "panel reported an error")));
129
+ catch {
130
+ // Already gone.
95
131
  }
96
- return;
97
132
  }
98
- // Panel-initiated event. Stamp the tab and track activity.
99
- if (typeof msg.type === "string") {
100
- if (tabId) {
101
- msg.tab_id = tabId;
102
- msg.title = this.conns.get(tabId)?.title;
103
- if (msg.type === "user_message")
104
- this.lastActiveTabId = tabId;
105
- }
106
- this.onPanelMessage?.(msg);
133
+ this.conns.set(tabId, {
134
+ sock,
135
+ tabId,
136
+ title: typeof msg.title === "string" && msg.title ? msg.title : "untitled",
137
+ connectedAt: existing?.connectedAt ?? new Date().toISOString(),
138
+ });
139
+ logger.info(`[ui-bridge] panel tab connected: ${tabId.slice(0, 8)} (“${this.conns.get(tabId)?.title}”) ${this.conns.size} tab(s) total`);
140
+ this.onPanelMessage?.(msg);
141
+ return;
142
+ }
143
+ const rid = typeof msg.rid === "string" ? msg.rid : undefined;
144
+ if (rid) {
145
+ const p = this.pending.get(rid);
146
+ if (!p)
147
+ return; // late reply for a timed-out command
148
+ clearTimeout(p.timer);
149
+ this.pending.delete(rid);
150
+ if (msg.ok) {
151
+ p.resolve(msg.result);
107
152
  }
108
- });
109
- sock.on("close", () => {
110
- if (tabId && this.conns.get(tabId)?.sock === sock) {
111
- this.conns.delete(tabId);
112
- if (this.lastActiveTabId === tabId)
113
- this.lastActiveTabId = null;
114
- logger.info(`[ui-bridge] panel tab disconnected: ${tabId.slice(0, 8)} — ${this.conns.size} tab(s) remain`);
153
+ else {
154
+ p.reject(new Error(String(msg.error ?? "panel reported an error")));
115
155
  }
116
- // Reject any in-flight commands that were bound to this socket.
117
- for (const [rid, p] of this.pending) {
118
- if (p.sock === sock) {
119
- clearTimeout(p.timer);
120
- p.reject(new Error("panel tab disconnected mid-command"));
121
- this.pending.delete(rid);
122
- }
156
+ return;
157
+ }
158
+ // Panel-initiated event. Stamp the tab and track activity.
159
+ if (typeof msg.type === "string") {
160
+ if (tabId) {
161
+ msg.tab_id = tabId;
162
+ msg.title = this.conns.get(tabId)?.title;
163
+ if (msg.type === "user_message")
164
+ this.lastActiveTabId = tabId;
123
165
  }
124
- });
166
+ this.onPanelMessage?.(msg);
167
+ }
168
+ });
169
+ sock.on("close", () => {
170
+ if (tabId && this.conns.get(tabId)?.sock === sock) {
171
+ this.conns.delete(tabId);
172
+ if (this.lastActiveTabId === tabId)
173
+ this.lastActiveTabId = null;
174
+ logger.info(`[ui-bridge] panel tab disconnected: ${tabId.slice(0, 8)} — ${this.conns.size} tab(s) remain`);
175
+ }
176
+ // Reject any in-flight commands that were bound to this socket.
177
+ for (const [rid, p] of this.pending) {
178
+ if (p.sock === sock) {
179
+ clearTimeout(p.timer);
180
+ p.reject(new Error("panel tab disconnected mid-command"));
181
+ this.pending.delete(rid);
182
+ }
183
+ }
125
184
  });
126
- this.wss = wss;
127
- logger.info(`[ui-bridge] listening on ws://127.0.0.1:${this.port}`);
128
185
  }
129
186
  connected() {
130
187
  return this.conns.size > 0;
@@ -139,7 +196,7 @@ export class UiBridge {
139
196
  }
140
197
  status() {
141
198
  if (this.portInUse) {
142
- return `port ${this.port} is held by another comfyui-mcp session — close it or free the port (lsof -ti:${this.port} | xargs kill)`;
199
+ return `port ${this.port} is held by another comfyui-mcp session — close that session (or whatever owns the port) and reconnect`;
143
200
  }
144
201
  if (this.conns.size === 0) {
145
202
  return "no panel connected — open ComfyUI with the comfyui-mcp-panel pack installed and check the Agent sidebar tab";
@@ -224,6 +281,10 @@ export class UiBridge {
224
281
  return sent;
225
282
  }
226
283
  async stop() {
284
+ if (this.bindRetryTimer) {
285
+ clearTimeout(this.bindRetryTimer);
286
+ this.bindRetryTimer = null;
287
+ }
227
288
  for (const [rid, p] of this.pending) {
228
289
  clearTimeout(p.timer);
229
290
  p.reject(new Error("bridge stopped"));
@@ -1 +1 @@
1
- {"version":3,"file":"ui-bridge.js","sourceRoot":"","sources":["../../src/services/ui-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui-bridge.js","sourceRoot":"","sources":["../../src/services/ui-bridge.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ const operationSchema = z.discriminatedUnion("op", [
33
33
  z.object({
34
34
  op: z.literal("add_node"),
35
35
  class_type: z.string(),
36
- inputs: z.record(z.any()).optional(),
36
+ inputs: z.record(z.string(), z.any()).optional(),
37
37
  id: z.string().optional(),
38
38
  }),
39
39
  z.object({
@@ -54,7 +54,7 @@ const operationSchema = z.discriminatedUnion("op", [
54
54
  target_id: z.string(),
55
55
  input_name: z.string(),
56
56
  new_class_type: z.string(),
57
- new_inputs: z.record(z.any()).optional(),
57
+ new_inputs: z.record(z.string(), z.any()).optional(),
58
58
  }),
59
59
  ]);
60
60
  export function registerWorkflowComposeTools(server) {
@@ -64,7 +64,7 @@ export function registerWorkflowComposeTools(server) {
64
64
  .enum(TEMPLATE_NAMES)
65
65
  .describe("Template name: txt2img, img2img, upscale, or inpaint"),
66
66
  params: z
67
- .record(z.any())
67
+ .record(z.string(), z.any())
68
68
  .optional()
69
69
  .default({})
70
70
  .describe("Template parameters; recognized keys depend on the template. txt2img: checkpoint, positive_prompt, negative_prompt, width, height, steps, cfg, seed, sampler_name, scheduler. img2img/inpaint add image_path (and mask_path for inpaint) and denoise. upscale adds upscale_model. Unknown keys are ignored; omitted keys use template defaults."),
@@ -88,7 +88,7 @@ export function registerWorkflowComposeTools(server) {
88
88
  // 2. modify_workflow
89
89
  server.tool("modify_workflow", "Apply modification operations to an existing ComfyUI workflow. Supports: set_input, add_node, remove_node, connect, insert_between. Returns the modified workflow JSON and IDs of any newly added nodes.", {
90
90
  workflow: z
91
- .union([z.string(), z.record(z.any())])
91
+ .union([z.string(), z.record(z.string(), z.any())])
92
92
  .describe("ComfyUI workflow JSON (as a JSON string or object)"),
93
93
  operations: z
94
94
  .array(operationSchema)
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-compose.js","sourceRoot":"","sources":["../../src/tools/workflow-compose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-compose.js","sourceRoot":"","sources":["../../src/tools/workflow-compose.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export function registerWorkflowDepsTools(server) {
27
27
  "server's installed node definitions, reporting which packs are installed vs missing. " +
28
28
  "Works remotely (HTTP only) — mirrors `comfy-cli node deps-in-workflow`.", {
29
29
  workflow: z
30
- .union([z.string(), z.record(z.any())])
30
+ .union([z.string(), z.record(z.string(), z.any())])
31
31
  .describe("ComfyUI workflow in API format (JSON string or object)"),
32
32
  }, async (args) => {
33
33
  try {
@@ -76,7 +76,7 @@ export function registerWorkflowDepsTools(server) {
76
76
  "target); a ComfyUI restart is typically needed before new nodes load. Mirrors " +
77
77
  "`comfy-cli node install-deps`.", {
78
78
  workflow: z
79
- .union([z.string(), z.record(z.any())])
79
+ .union([z.string(), z.record(z.string(), z.any())])
80
80
  .describe("ComfyUI workflow in API format (JSON string or object)"),
81
81
  }, async (args) => {
82
82
  try {