comfyui-mcp 0.51.14 → 0.51.15
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.
|
@@ -98,6 +98,34 @@ const WORKFLOW_MUTATORS = new Set([
|
|
|
98
98
|
"workflow_rename",
|
|
99
99
|
"workflow_close",
|
|
100
100
|
]);
|
|
101
|
+
/** Workflow NAVIGATION/creation. Deliberately not in ACTIVE_WORKFLOW_MUTATORS — they
|
|
102
|
+
* carry their own explicit or new target rather than mutating active content, so the
|
|
103
|
+
* fence treats them differently. The question HERE is evidence, not fencing — and the
|
|
104
|
+
* evidence for these is NOT the workflow list itself, which is where the first attempt
|
|
105
|
+
* went wrong.
|
|
106
|
+
*
|
|
107
|
+
* Found by running the LIVE panel's registered command names through this classifier
|
|
108
|
+
* after the fix merged — these two fell to the default branch, which names no tool.
|
|
109
|
+
*
|
|
110
|
+
* The first attempt sent them to `panel_list_workflows` on the reasoning that an opened
|
|
111
|
+
* workflow appears there. Codex caught it, and the panel had already written the
|
|
112
|
+
* rebuttal: `active` matching your target is NOT proof your open ran, because after a
|
|
113
|
+
* backend reconnect the frontend restores a tab BY ITSELF (#433). Naming that reader
|
|
114
|
+
* would have been the exact defect this module exists to remove — a confident check
|
|
115
|
+
* that cannot answer — for the one command class that already has a purpose-built
|
|
116
|
+
* correct mechanism.
|
|
117
|
+
*
|
|
118
|
+
* That mechanism is the panel's OPEN RECEIPTS (#402): every workflow_open/workflow_new
|
|
119
|
+
* that RAN is journaled with the selector it was asked for, the identity it resolved
|
|
120
|
+
* to, and whether it applied. The latest one rides in the workflow-list reply as
|
|
121
|
+
* `last_open` — that is the reply KEY; the panel's local variable is `lastOpenReceipt`,
|
|
122
|
+
* and naming THAT is how the first version of this shipped a field no reply carries
|
|
123
|
+
* (codex round 2), which is the very defect this module exists to remove. It answers
|
|
124
|
+
* ONLY for the command whose id equals its `rid` —
|
|
125
|
+
* so an EARLIER successful open of the same file is not evidence about a later dropped
|
|
126
|
+
* one. The message says both halves, because the receipt is over-readable without the
|
|
127
|
+
* rule that comes with it. */
|
|
128
|
+
const WORKFLOW_NAVIGATION = new Set(["workflow_open", "workflow_new"]);
|
|
101
129
|
export function midCommandVerifyClause(cmd) {
|
|
102
130
|
if (isInteractiveCommand(cmd)) {
|
|
103
131
|
// WAITING IS NOT A RECOVERY, and an earlier draft of this said it was
|
|
@@ -129,6 +157,17 @@ export function midCommandVerifyClause(cmd) {
|
|
|
129
157
|
`(action:"list_outputs")) instead of re-issuing it blindly — a second run costs ` +
|
|
130
158
|
`GPU time and produces a duplicate output.`);
|
|
131
159
|
}
|
|
160
|
+
if (WORKFLOW_NAVIGATION.has(cmd)) {
|
|
161
|
+
return (`Verify with panel_list_workflows and read its \`last_open\` — the panel's own ` +
|
|
162
|
+
`execution record for opens (#402). It answers ONLY for the command whose id equals ` +
|
|
163
|
+
`its \`rid\`: \`applied:true\` means it completed, \`applied:false\` means nothing was ` +
|
|
164
|
+
`applied and it is safe to re-issue, \`applied:"unknown"\` means it may have taken ` +
|
|
165
|
+
`effect and must NOT be blindly retried. Do NOT conclude anything from \`active\` ` +
|
|
166
|
+
`matching your target, and do not read an EARLIER receipt for the same file as ` +
|
|
167
|
+
`evidence about this one — after a backend reconnect the frontend restores a tab by ` +
|
|
168
|
+
`itself, which explains a matching \`active\` without your command ever running. A ` +
|
|
169
|
+
`blind retry costs: a second workflow_new leaves the user with two empty tabs.`);
|
|
170
|
+
}
|
|
132
171
|
if (WORKFLOW_MUTATORS.has(cmd)) {
|
|
133
172
|
return (`Verify with panel_list_workflows before retrying — these change which workflows ` +
|
|
134
173
|
`exist or are open, which a canvas read does not see. Re-issuing blindly can save ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mid-command-remedy.js","sourceRoot":"","sources":["../../src/services/mid-command-remedy.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gBAAgB;AAChB,EAAE;AACF,iFAAiF;AACjF,yDAAyD;AACzD,EAAE;AACF,6DAA6D;AAC7D,yEAAyE;AACzE,EAAE;AACF,kFAAkF;AAClF,+EAA+E;AAC/E,oEAAoE;AACpE,EAAE;AACF,gFAAgF;AAChF,4EAA4E;AAC5E,gFAAgF;AAChF,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,iFAAiF;AACjF,aAAa;AACb,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,yEAAyE;AACzE,0DAA0D;AAE1D,sEAAsE;AACtE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAErE,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,6EAA6E;AAC7E,MAAM,WAAW,GAAG,WAAW,CAAC;AAEhC;;;;8BAI8B;AAC9B,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAElE;;;;kDAIkD;AAClD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEjE;;;;uDAIuD;AACvD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS;IACxC,eAAe;IACf,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,sEAAsE;QACtE,yEAAyE;QACzE,6EAA6E;QAC7E,yEAAyE;QACzE,4EAA4E;QAC5E,4EAA4E;QAC5E,oEAAoE;QACpE,MAAM,OAAO,GACX,GAAG,KAAK,gBAAgB;YACtB,CAAC,CAAC,mEAAmE;gBACnE,qEAAqE;gBACrE,iEAAiE;gBACjE,uCAAuC;gBACvC,0FAA0F;oBAC1F,wFAAwF;oBACxF,gEAAgE;YAClE,CAAC,CAAC,oFAAoF,CAAC;QAC3F,OAAO,CACL,+CAA+C;YAC/C,sFAAsF;YACtF,4FAA4F;YAC5F,4BAA4B,OAAO,oDAAoD;YACvF,2FAA2F;YAC3F,kDAAkD,CACnD,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACxB,kEAAkE;QAClE,OAAO,CACL,gEAAgE;YAChE,iFAAiF;YACjF,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CACL,kFAAkF;YAClF,mFAAmF;YACnF,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CACL,kFAAkF;YAClF,oFAAoF;YACpF,oFAAoF;YACpF,gEAAgE,CACjE,CAAC;IACJ,CAAC;IACD,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CACL,sFAAsF;YACtF,wFAAwF;YACxF,sFAAsF;YACtF,0DAA0D,CAC3D,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CACL,mFAAmF;YACnF,oFAAoF;YACpF,oFAAoF;YACpF,gFAAgF;YAChF,mFAAmF;YACnF,mFAAmF;YACnF,+EAA+E,CAChF,CAAC;IACJ,CAAC;IACD,6EAA6E;IAC7E,gFAAgF;IAChF,OAAO,CACL,kFAAkF;QAClF,2DAA2D,CAC5D,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,2BAA2B,CAAC,IAAoC;IAC9E,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,WAAW;QACzB,CAAC,CAAC,oEAAoE;QACtE,CAAC,CAAC,8GAA8G,CAAC;IACnH,OAAO,CACL,aAAa,IAAI,CAAC,KAAK,+BAA+B,IAAI,CAAC,GAAG,wBAAwB;QACtF,GAAG,OAAO,KAAK,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAClD,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"mid-command-remedy.js","sourceRoot":"","sources":["../../src/services/mid-command-remedy.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.51.
|
|
3
|
+
"version": "0.51.15",
|
|
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",
|