comfyui-mcp 0.50.19 → 0.50.21

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.
@@ -6006,6 +6006,20 @@ export function buildPanelToolDefs() {
6006
6006
  isRetryableRunToNodeStampRace(res, rejection)) {
6007
6007
  scopeRebuilt = true;
6008
6008
  try {
6009
+ // #1050 — SETTLE before re-issuing. The panel refuses this race when the
6010
+ // graph changed between dispatch and apply, and re-dispatching in the
6011
+ // same tick lands in the SAME window: a reporter's retry raced
6012
+ // identically and instantly, so the one re-issue was spent for nothing
6013
+ // and the run was refused twice with nothing queued.
6014
+ //
6015
+ // This is a SETTLE PAUSE, not the mutation-quiescence barrier the report
6016
+ // asked for. The panel exposes no such signal, and inventing a
6017
+ // graph-is-quiet reading from out here would be guessing at the
6018
+ // frontend's state. It buys pending edits a moment to land — exactly
6019
+ // what the reconnect retry already does for a dropped socket — and
6020
+ // nothing more. A graph still moving after it (a user actively editing)
6021
+ // races again and is SURFACED, never re-raced.
6022
+ await sleep(retrySettleMs());
6009
6023
  res = await ctx.call(runCmd, 20000);
6010
6024
  rejection = detectRunRejection(res);
6011
6025
  }
@@ -6033,9 +6047,11 @@ export function buildPanelToolDefs() {
6033
6047
  return rejection;
6034
6048
  return appendToolResultText(rejection, `\n\n(Dispatch history: the first graph_run was refused by the panel's run-to-node ` +
6035
6049
  `graph-stamp race, which CERTIFIED that nothing was queued, so the scoped run was ` +
6036
- `re-issued exactly once. The failure above is that SECOND dispatch; it was not ` +
6037
- `retried again. Judge whether anything was queued from that message alone — the ` +
6038
- `first dispatch definitely queued nothing.)`);
6050
+ `re-issued exactly once — after a short pause to let pending graph edits land ` +
6051
+ `(#1050). The failure above is that SECOND dispatch; it was not retried again. ` +
6052
+ `Judge whether anything was queued from that message alone — the first dispatch ` +
6053
+ `definitely queued nothing. Racing AGAIN after the pause means the graph is still ` +
6054
+ `changing under the run: let the canvas settle, then re-run.)`);
6039
6055
  }
6040
6056
  // Attribute this genuine queue to ourselves so a later panel_run in the
6041
6057
  // same batch recognizes the in-flight job as our own and doesn't false-warn