comfyui-mcp 0.50.40 → 0.50.41

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.
@@ -1,6 +1,7 @@
1
1
  import { enqueuePrompt as clientEnqueuePrompt, getSystemStats as clientGetSystemStats, getObjectInfo as clientGetObjectInfo, } from "../comfyui/client.js";
2
2
  import { logger } from "../utils/logger.js";
3
3
  import { JobWatcher } from "./job-watcher.js";
4
+ import { convertApiToUi, isUiFormat } from "./workflow-converter.js";
4
5
  const SEED_INPUT_NAMES = ["seed", "noise_seed"];
5
6
  /**
6
7
  * Fallback draw range when a node's declared seed bounds are unavailable
@@ -88,6 +89,52 @@ async function randomizeSeeds(workflow, preserveInputs) {
88
89
  }
89
90
  return copy;
90
91
  }
92
+ function isRecord(value) {
93
+ return value !== null && typeof value === "object" && !Array.isArray(value);
94
+ }
95
+ async function withWorkflowMetadata(workflow, extraData) {
96
+ // Present but not an object (an array, a string) — we cannot merge into it,
97
+ // and spreading it would DISCARD whatever the caller put there. Attaching this
98
+ // metadata is an enhancement; silently dropping a field the caller set would be
99
+ // a regression, so leave the request exactly as it came.
100
+ if (extraData?.extra_pnginfo !== undefined && !isRecord(extraData.extra_pnginfo)) {
101
+ logger.debug("extra_pnginfo is not an object; leaving it untouched (no UI metadata attached)", {
102
+ type: Array.isArray(extraData.extra_pnginfo) ? "array" : typeof extraData.extra_pnginfo,
103
+ });
104
+ return extraData;
105
+ }
106
+ const extraPngInfo = isRecord(extraData?.extra_pnginfo)
107
+ ? extraData.extra_pnginfo
108
+ : {};
109
+ // A valid caller-provided canvas is authoritative. Do not spend time fetching
110
+ // object_info or replace layout/provenance the caller already supplied.
111
+ if (isUiFormat(extraPngInfo.workflow))
112
+ return extraData;
113
+ try {
114
+ // Reuse the client's existing TTL cache and single-flight request. Seed
115
+ // randomization may already have warmed this exact snapshot.
116
+ const objectInfo = await clientGetObjectInfo();
117
+ const { workflow: uiWorkflow, warnings } = convertApiToUi(workflow, objectInfo);
118
+ if (warnings.length > 0) {
119
+ logger.warn("Workflow UI metadata conversion completed with warnings", {
120
+ warnings,
121
+ });
122
+ }
123
+ return {
124
+ ...(extraData ?? {}),
125
+ extra_pnginfo: {
126
+ ...extraPngInfo,
127
+ workflow: uiWorkflow,
128
+ },
129
+ };
130
+ }
131
+ catch (err) {
132
+ logger.warn("Workflow UI metadata conversion failed; enqueueing without it", {
133
+ error: err instanceof Error ? err.message : String(err),
134
+ });
135
+ return extraData;
136
+ }
137
+ }
91
138
  /**
92
139
  * Fire-and-forget workflow enqueue. Returns prompt_id immediately
93
140
  * without waiting for execution to complete.
@@ -96,8 +143,9 @@ export async function enqueueWorkflow(workflowJson, options) {
96
143
  const workflow = options?.disable_random_seed
97
144
  ? workflowJson
98
145
  : await randomizeSeeds(workflowJson, new Set(options?.preserve_seed_inputs ?? []));
146
+ const extraData = await withWorkflowMetadata(workflow, options?.extra_data);
99
147
  logger.info("Enqueueing workflow (fire-and-forget)");
100
- const result = await clientEnqueuePrompt(workflow, options?.extra_data);
148
+ const result = await clientEnqueuePrompt(workflow, extraData);
101
149
  logger.info("Workflow enqueued", {
102
150
  prompt_id: result.prompt_id,
103
151
  queue_remaining: result.queue_remaining,
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-executor.js","sourceRoot":"","sources":["../../src/services/workflow-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,mBAAmB,EACpC,cAAc,IAAI,oBAAoB,EACtC,aAAa,IAAI,mBAAmB,GACrC,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiB9C,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,YAAY,CAAU,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,WAAW;AAEjD;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,UAAkC,EAClC,SAAiB,EACjB,SAAiB;IAEjB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,IAAI,GACR,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,MAAM,WAAW,GACf,MAAM,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QACrE,CAAC,CAAC,MAAM,CAAC,GAAG;QACZ,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,WAAW,GACf,MAAM,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QACrE,CAAC,CAAC,MAAM,CAAC,GAAG;QACZ,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,GAAG,GAAG,WAAW,IAAI,iBAAiB,CAAC;IAC7C,wEAAwE;IACxE,0EAA0E;IAC1E,4DAA4D;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChF,wEAAwE;IACxE,6DAA6D;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,OAAO,GAAG,OAAO;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,cAAc,CAC3B,QAAsB,EACtB,cAAoC;IAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAiB,CAAC;IAClE,wEAAwE;IACxE,uDAAuD;IACvD,IAAI,UAAkC,CAAC;IACvC,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CACV,qEAAqE,EACrE,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5D,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;gBACnC,IAAI,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACvC,IACE,GAAG,IAAI,IAAI,CAAC,MAAM;oBAClB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EACpC,CAAC;oBACD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;oBAC/D,gEAAgE;oBAChE,wDAAwD;oBACxD,IAAI,CAAC,KAAK;wBAAE,SAAS;oBACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,YAA0B,EAC1B,OAAgC;IAEhC,MAAM,QAAQ,GAAG,OAAO,EAAE,mBAAmB;QAC3C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,MAAM,cAAc,CAClB,YAAY,EACZ,IAAI,GAAG,CAAC,OAAO,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAC7C,CAAC;IAEN,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,QAAmC,EACnC,OAAO,EAAE,UAAU,CACpB,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC,CAAC,CAAC;IACH,6EAA6E;IAC7E,+EAA+E;IAC/E,wEAAwE;IACxE,gFAAgF;IAChF,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,0EAA0E;IAC1E,4EAA4E;IAC5E,iFAAiF;IACjF,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"workflow-executor.js","sourceRoot":"","sources":["../../src/services/workflow-executor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "comfyui-mcp",
3
- "version": "0.50.40",
3
+ "version": "0.50.41",
4
4
  "mcpName": "io.github.artokun/comfyui-mcp",
5
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",