comfyui-mcp 0.52.184 → 0.52.185

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.
@@ -475,17 +475,18 @@ function abortReasonOf(signal) {
475
475
  /**
476
476
  * Reject as soon as `signal` aborts, even if `work` is still running.
477
477
  *
478
- * `AbortSignal.timeout` on `fetch` only cancels the HTTP exchange. Once headers
479
- * have arrived, `Response.text()` / `JSON.parse` can keep the caller pending for
480
- * as long as the body takes to finish and a ComfyUI that is mid-decode
481
- * (VAEDecodeAudio, a long VAE, …) often accepts `/system_stats` and then stalls
482
- * on the body. The abort event IS fired; the decode does not observe it. Racing
483
- * the abort against the whole fetch+decode is what lets `call_tool` settle
484
- * instead of hanging until the decode ends or the process is killed (#1672).
478
+ * Bounds an enclosing promise whose inner work may not settle. On supported
479
+ * Node (`engines` is >=22) undici errors the response body stream when the
480
+ * `fetch` signal fires, so a pending `Response.text()` rejects at the deadline
481
+ * the quoted "headers-only" story is false here. `raceAbort` still earns its
482
+ * place by bounding everything ELSE in `work`: a test double that ignores abort,
483
+ * a consumer that does not pass the signal through, or the enclosing `call_tool`
484
+ * cell. #1672's inner read DID reject ("The operation was aborted due to
485
+ * timeout"); the outer cell is what stayed pending. `JSON.parse` is genuinely
486
+ * unabortable, and racing it cannot preempt it because it blocks the same thread.
485
487
  *
486
- * The inner promise is attached so a late rejection (the decode finally
487
- * noticing the abort) cannot become an unhandledRejection after we already
488
- * settled.
488
+ * The inner promise is attached so a late rejection cannot become an
489
+ * unhandledRejection after we already settled.
489
490
  */
490
491
  export function raceAbort(signal, work) {
491
492
  if (!signal)
@@ -512,6 +513,30 @@ export function raceAbort(signal, work) {
512
513
  });
513
514
  });
514
515
  }
516
+ /** GET/HEAD learned nothing; a mutation that timed out is OUTCOME UNKNOWN. */
517
+ function timeoutRetryClause(method) {
518
+ if (method === "GET" || method === "HEAD") {
519
+ return (`Nothing was learned about the server from this — a timeout is not a refusal and not a ` +
520
+ `"not found". `);
521
+ }
522
+ return (`OUTCOME UNKNOWN: this request may already have been received and acted on, so do NOT ` +
523
+ `blindly re-issue it — check the server's state first (for a queued prompt, queue ` +
524
+ `(action:"list") and get_history (action:"list")). `);
525
+ }
526
+ /**
527
+ * Named diagnosis for a stall AFTER headers: `comfyuiFetch` has already returned,
528
+ * so its transport rewrite never runs and a raw `TimeoutError` would escape with
529
+ * no URL and no method (#2773). Distinct from the transport-timeout formatter:
530
+ * the connection DID happen; only the body failed to finish.
531
+ */
532
+ export function describeComfyBodyTimeout(target, method) {
533
+ const seconds = comfyHttpTimeoutSeconds();
534
+ const err = new Error(`No reply from ComfyUI within ${seconds}s — while reading the response body of ${target} (${method}). ` +
535
+ `Headers had already arrived; the body did not finish. ` +
536
+ timeoutRetryClause(method));
537
+ err.code = "COMFYUI_HTTP_BODY_TIMEOUT";
538
+ return err;
539
+ }
515
540
  /**
516
541
  * Say what the ceiling did and did NOT establish.
517
542
  *
@@ -525,7 +550,6 @@ function describeComfyTimeout(input, init) {
525
550
  const target = targetOf(input);
526
551
  const method = methodOf(input, init);
527
552
  const seconds = comfyHttpTimeoutSeconds();
528
- const mutating = method !== "GET" && method !== "HEAD";
529
553
  // #1896 — the comparison the TRANSPORT path has made since #1553, on the path
530
554
  // that shares its cause.
531
555
  //
@@ -543,12 +567,7 @@ function describeComfyTimeout(input, init) {
543
567
  // is more common, and a slow server that never answers lands here too.
544
568
  const drift = classifyTargetDrift(target);
545
569
  const err = new Error(`No reply from ComfyUI within ${seconds}s — while requesting ${target} (${method}). ` +
546
- (mutating
547
- ? `OUTCOME UNKNOWN: this request may already have been received and acted on, so do NOT ` +
548
- `blindly re-issue it — check the server's state first (for a queued prompt, queue ` +
549
- `(action:"list") and get_history (action:"list")). `
550
- : `Nothing was learned about the server from this — a timeout is not a refusal and not a ` +
551
- `"not found". `) +
570
+ timeoutRetryClause(method) +
552
571
  // #1896 — this asserted "The connection was accepted but no answer arrived
553
572
  // in time". The ceiling covers the WHOLE exchange, connecting included, so
554
573
  // a black-holed SYN times out here having established no connection at all
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/comfyui/fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/comfyui/fetch.ts"],"names":[],"mappings":"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"}
@@ -450,6 +450,100 @@ function unwrapParametersWrapper(args, inputSchema) {
450
450
  return args;
451
451
  return inner;
452
452
  }
453
+ const PANEL_ROUTER_NAMES = new Set([
454
+ "panel_list_tools",
455
+ "panel_describe_tool",
456
+ "panel_call_tool",
457
+ ]);
458
+ function isPanelRouterName(name) {
459
+ return PANEL_ROUTER_NAMES.has(name);
460
+ }
461
+ function asPlainObject(value) {
462
+ if (value !== null && typeof value === "object" && !Array.isArray(value)) {
463
+ return value;
464
+ }
465
+ return undefined;
466
+ }
467
+ function stringArg(obj, key) {
468
+ const v = obj[key];
469
+ return typeof v === "string" ? v.trim() : "";
470
+ }
471
+ /**
472
+ * Envelope keys that name the inner tool; leftover keys are that tool's args.
473
+ *
474
+ * `undefined` means the envelope carried an args value that is NOT an argument
475
+ * object — a string, an array, a number. The keyed branch at the call site already
476
+ * refuses that shape via `asPlainObject`; this path returned it as `unknown` and
477
+ * handed it on, so the two halves of the same decision disagreed. Same treatment
478
+ * for both now.
479
+ */
480
+ function payloadMinusNameKeys(obj) {
481
+ if ("args" in obj || "arguments" in obj || "parameters" in obj) {
482
+ const supplied = obj.args ?? obj.arguments ?? obj.parameters;
483
+ if (supplied === undefined || supplied === null)
484
+ return {};
485
+ return asPlainObject(supplied);
486
+ }
487
+ const rest = {};
488
+ for (const [k, v] of Object.entries(obj)) {
489
+ if (k === "name" || k === "tool_name" || k === "tool")
490
+ continue;
491
+ rest[k] = v;
492
+ }
493
+ return rest;
494
+ }
495
+ /**
496
+ * #2717 — when `panel_call_tool` is named as its own inner tool, recover a
497
+ * unique real panel tool from name-shaped keys (`tool_name` / `tool` / nested
498
+ * `name`) or a unique panel-tool-named key. Several inner names, a router name,
499
+ * an unknown name, or a non-object keyed payload stay refused.
500
+ */
501
+ function recoverPanelRouterSelfCall(outer, inner, nested, isPanelTool) {
502
+ const names = [];
503
+ const push = (v) => {
504
+ if (v && !isPanelRouterName(v))
505
+ names.push(v);
506
+ };
507
+ push(stringArg(outer, "tool_name"));
508
+ push(stringArg(outer, "tool"));
509
+ if (typeof inner === "string" && !nested)
510
+ push(inner.trim());
511
+ if (nested) {
512
+ push(stringArg(nested, "name"));
513
+ push(stringArg(nested, "tool_name"));
514
+ push(stringArg(nested, "tool"));
515
+ const keyHits = Object.keys(nested).filter((k) => isPanelTool(k) && !isPanelRouterName(k));
516
+ for (const k of keyHits)
517
+ push(k);
518
+ }
519
+ const unique = [...new Set(names)];
520
+ if (unique.length > 1) {
521
+ return { kind: "refuse", hint: "", ambiguous: unique.join(", ") };
522
+ }
523
+ const candidate = unique[0] ?? "";
524
+ if (!candidate || !isPanelTool(candidate)) {
525
+ return { kind: "refuse", hint: "", ambiguous: "" };
526
+ }
527
+ if (nested && Object.prototype.hasOwnProperty.call(nested, candidate)) {
528
+ const keyed = nested[candidate];
529
+ const keyedObj = asPlainObject(keyed);
530
+ if (keyed !== undefined && keyedObj === undefined) {
531
+ return { kind: "refuse", hint: candidate, ambiguous: "" };
532
+ }
533
+ if (keyedObj)
534
+ return { kind: "unwrap", wanted: candidate, inner: keyedObj };
535
+ }
536
+ if (nested) {
537
+ const stripped = payloadMinusNameKeys(nested);
538
+ if (!stripped)
539
+ return { kind: "refuse", hint: candidate, ambiguous: "" };
540
+ return { kind: "unwrap", wanted: candidate, inner: stripped };
541
+ }
542
+ if (typeof inner === "string" && inner.trim() === candidate) {
543
+ return { kind: "unwrap", wanted: candidate, inner: {} };
544
+ }
545
+ return { kind: "unwrap", wanted: candidate, inner };
546
+ }
453
547
  /** Does this id look like a model this backend can run? PanelAgent
454
548
  * unconditionally passes the panel's Claude model as opts.model — this guard
455
549
  * keeps the configured model in charge unless the panel explicitly picked one
@@ -838,8 +932,11 @@ export class OllamaBackend {
838
932
  parameters: {
839
933
  type: "object",
840
934
  properties: {
841
- name: { type: "string", description: "Exact panel tool name." },
842
- args: { description: "The tool's parameters as an object (JSON-encoded string also accepted)." },
935
+ name: {
936
+ type: "string",
937
+ description: "Inner panel tool to run (e.g. panel_graph_outline). Never panel_call_tool / panel_list_tools / panel_describe_tool — those are this router.",
938
+ },
939
+ args: { description: "The inner tool's parameters as an object (JSON-encoded string also accepted)." },
843
940
  },
844
941
  required: ["name"],
845
942
  },
@@ -898,7 +995,13 @@ export class OllamaBackend {
898
995
  if (name === "panel_call_tool") {
899
996
  if (!this.panel)
900
997
  return { text: "panel tools are unavailable in this session.", isError: true };
901
- let wanted = typeof args.name === "string" ? args.name : typeof args.tool_name === "string" ? args.tool_name : "";
998
+ let wanted = typeof args.name === "string"
999
+ ? args.name
1000
+ : typeof args.tool_name === "string"
1001
+ ? args.tool_name
1002
+ : typeof args.tool === "string"
1003
+ ? args.tool
1004
+ : "";
902
1005
  // #1937 — `parameters` is the THIRD accepted spelling of the payload, for
903
1006
  // the same reason #1824 added it to the headless `call_tool`: ChatGPT's
904
1007
  // multi_tool_use.parallel names each recipient's payload `parameters`, and
@@ -908,17 +1011,15 @@ export class OllamaBackend {
908
1011
  // error … received undefined at node_id`, an error about arguments the
909
1012
  // model had in fact written, one key away. `args` still wins a collision.
910
1013
  let inner = args.args ?? args.arguments ?? args.parameters ?? {};
911
- // #1297 — ROUTER SELF-NESTING: a malformed call wraps the real invocation
912
- // in a second router envelope (panel_call_tool {"name": "panel_call_tool",
913
- // "args": {"name": "<tool>", "args": {...}}}). The old reply "Unknown
914
- // panel tool 'panel_call_tool'" was doubly unhelpful: the name IS known
915
- // (it is this router itself), and the answer discarded a call whose inner
916
- // tool and args were fully spelled out. Peek one envelope deep: when it
917
- // carries a real panel tool, unwrap it and run exactly that; otherwise
918
- // refuse with the correct shape. ONE level only — a deeper nest fails
919
- // closed through the same refusal.
1014
+ // #1297 / #2717 — ROUTER SELF-NESTING: a malformed call wraps the real
1015
+ // invocation in a second router envelope, or names this router as `name`
1016
+ // while the inner panel tool sits on `tool` / `tool_name` / a nested key.
1017
+ // Peek one envelope deep: a unique real panel tool is unwrapped and run;
1018
+ // several names, a router name, or an unknown name refuse with the
1019
+ // correct shape (and name the inner tool when it is unique). ONE level
1020
+ // only a deeper nest fails closed through the same refusal.
920
1021
  let unwrapped = false;
921
- if (wanted === "panel_call_tool" || wanted === "panel_list_tools" || wanted === "panel_describe_tool") {
1022
+ if (isPanelRouterName(wanted)) {
922
1023
  let peek = inner;
923
1024
  if (typeof peek === "string") {
924
1025
  try {
@@ -930,18 +1031,26 @@ export class OllamaBackend {
930
1031
  peek = undefined;
931
1032
  }
932
1033
  }
933
- const nested = peek !== null && typeof peek === "object" && !Array.isArray(peek) ? peek : undefined;
934
- const nestedName = nested && typeof nested.name === "string" ? nested.name : "";
935
- if (wanted === "panel_call_tool" && nested && this.panelTools.some((t) => t.name === nestedName)) {
936
- wanted = nestedName;
937
- inner = nested.args ?? nested.arguments ?? nested.parameters ?? {};
1034
+ const nested = asPlainObject(peek);
1035
+ const recovered = recoverPanelRouterSelfCall(args, inner, nested, (n) => this.panelTools.some((t) => t.name === n));
1036
+ // Only `name: "panel_call_tool"` is a nested envelope we unwrap. A
1037
+ // self-call of panel_list_tools / panel_describe_tool stays refused
1038
+ // (those are sibling routers) but if args uniquely name a real
1039
+ // inner tool, the refusal cites that name instead of "<panel tool>".
1040
+ if (wanted === "panel_call_tool" && recovered.kind === "unwrap") {
1041
+ wanted = recovered.wanted;
1042
+ inner = recovered.inner;
938
1043
  unwrapped = true;
939
1044
  }
940
1045
  else {
1046
+ const example = recovered.kind === "unwrap" ? recovered.wanted : recovered.hint || "<panel tool>";
1047
+ const extra = recovered.kind === "refuse" && recovered.ambiguous
1048
+ ? ` This call named more than one inner tool (${recovered.ambiguous}); pick one.`
1049
+ : "";
941
1050
  return {
942
1051
  text: `'${wanted}' is this router itself, not a panel tool — the router cannot run its own ` +
943
1052
  `panel_list_tools / panel_describe_tool / panel_call_tool. Pass the inner tool directly: ` +
944
- `panel_call_tool {"name": "<panel tool>", "args": {...}}. Use panel_list_tools to see the tools.`,
1053
+ `panel_call_tool {"name": "${example}", "args": {...}}.${extra} Use panel_list_tools to see the tools.`,
945
1054
  isError: true,
946
1055
  };
947
1056
  }