comfyui-mcp 0.52.7 → 0.52.13

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 (53) hide show
  1. package/README.md +2 -1
  2. package/dist/boot.js +1 -1
  3. package/dist/boot.js.map +1 -1
  4. package/dist/comfyui/fetch.js +2 -2
  5. package/dist/config.js +11 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/orchestrator/index.js +46 -2
  8. package/dist/orchestrator/index.js.map +1 -1
  9. package/dist/orchestrator/panel-tools.js +218 -18
  10. package/dist/orchestrator/panel-tools.js.map +1 -1
  11. package/dist/orchestrator/run-completion-journal.js +38 -0
  12. package/dist/orchestrator/run-completion-journal.js.map +1 -1
  13. package/dist/orchestrator/run-completion-watchdog.js +189 -0
  14. package/dist/orchestrator/run-completion-watchdog.js.map +1 -0
  15. package/dist/services/comfy-cli.js +23 -10
  16. package/dist/services/comfy-cli.js.map +1 -1
  17. package/dist/services/env-capabilities.js +69 -11
  18. package/dist/services/env-capabilities.js.map +1 -1
  19. package/dist/services/extra-paths.js +211 -14
  20. package/dist/services/extra-paths.js.map +1 -1
  21. package/dist/services/live-interpreter.js +197 -11
  22. package/dist/services/live-interpreter.js.map +1 -1
  23. package/dist/services/manifest.js +50 -71
  24. package/dist/services/manifest.js.map +1 -1
  25. package/dist/services/node-management.js +30 -24
  26. package/dist/services/node-management.js.map +1 -1
  27. package/dist/services/node-snapshots.js +22 -8
  28. package/dist/services/node-snapshots.js.map +1 -1
  29. package/dist/services/panel-launcher.js +198 -33
  30. package/dist/services/panel-launcher.js.map +1 -1
  31. package/dist/services/panel-secrets.js +8 -0
  32. package/dist/services/panel-secrets.js.map +1 -1
  33. package/dist/services/skill-generator.js +3 -2
  34. package/dist/services/skill-generator.js.map +1 -1
  35. package/dist/services/ui-bridge.js +5 -4
  36. package/dist/services/ui-bridge.js.map +1 -1
  37. package/dist/services/update-comfyui.js +9 -10
  38. package/dist/services/update-comfyui.js.map +1 -1
  39. package/dist/services/workflow-lock.js +24 -21
  40. package/dist/services/workflow-lock.js.map +1 -1
  41. package/dist/services/workspace-env.js +158 -10
  42. package/dist/services/workspace-env.js.map +1 -1
  43. package/dist/tools/comfy-cli.js +1 -1
  44. package/dist/tools/comfy-cli.js.map +1 -1
  45. package/dist/tools/install-comfyui.js +2 -2
  46. package/dist/tools/install-comfyui.js.map +1 -1
  47. package/dist/tools/manifest.js +1 -1
  48. package/dist/tools/manifest.js.map +1 -1
  49. package/dist/tools/skills-access.js +5 -3
  50. package/dist/tools/skills-access.js.map +1 -1
  51. package/dist/tools/workflow-library.js +2 -2
  52. package/dist/tools/workflow-library.js.map +1 -1
  53. package/package.json +1 -1
@@ -20,7 +20,7 @@ import { join } from "node:path";
20
20
  import { comfyuiFetch } from "../comfyui/fetch.js";
21
21
  import { platform, release, totalmem, cpus } from "node:os";
22
22
  import { isForceRemoteFlagSet } from "../config.js";
23
- import { resolveComfyuiPython, pythonVersionsAgree } from "./workspace-env.js";
23
+ import { resolveComfyuiPython, pythonVersionsAgree, torchVersionsAgree } from "./workspace-env.js";
24
24
  import { resolveLiveInterpreter } from "./live-interpreter.js";
25
25
  import { parsePyproject } from "./node-authoring.js";
26
26
  import { detectInstallMode } from "./self-update.js";
@@ -289,6 +289,30 @@ async function detectAttentionFromComfyLog(comfyuiUrl, timeoutMs) {
289
289
  export function findComfyuiPython(comfyuiPath, statsArgv) {
290
290
  return resolveComfyuiPython(comfyuiPath, statsArgv).python;
291
291
  }
292
+ /**
293
+ * The exact python source the capability probe runs. Exported so a test can assert
294
+ * on the SOURCE: the guarantee that matters most here is a NEGATIVE one — that we
295
+ * never import torch inside a 5s budget — and no behavioural assertion can notice a
296
+ * future edit that quietly puts the import back.
297
+ */
298
+ export const TRITON_PROBE_SOURCE = [
299
+ "import importlib.util as u, sys",
300
+ "print('python', ' '.join(sys.version.split()))",
301
+ "print('triton', u.find_spec('triton') is not None)",
302
+ "print('sageattention', u.find_spec('sageattention') is not None)",
303
+ "ts = u.find_spec('torch')",
304
+ "print('torch', ts is not None)",
305
+ "tv = ''",
306
+ "if ts is not None:",
307
+ " try:",
308
+ " import importlib.metadata as md",
309
+ " tv = md.version('torch')",
310
+ " except Exception:",
311
+ // torch present but with no dist-info (a hand-copied tree). "installed" still
312
+ // stands; only the version comparison is skipped.
313
+ " tv = ''",
314
+ "print('torch_version', tv)",
315
+ ].join("\n");
292
316
  /**
293
317
  * Probe whether triton + sageattention are importable in the ComfyUI python.
294
318
  * Best-effort, hard ~5s timeout. Returns one tri-state per package:
@@ -299,7 +323,7 @@ export function findComfyuiPython(comfyuiPath, statsArgv) {
299
323
  export function probeTritonSage(pythonExe, timeoutMs = 5000) {
300
324
  return new Promise((resolve) => {
301
325
  if (!pythonExe) {
302
- resolve({ triton: "unknown", sageattention: "unknown" });
326
+ resolve({ triton: "unknown", sageattention: "unknown", torch: "unknown" });
303
327
  return;
304
328
  }
305
329
  // Print a clear per-package marker so we can tell which imported, even if one
@@ -310,19 +334,33 @@ export function probeTritonSage(pythonExe, timeoutMs = 5000) {
310
334
  // Print the FULL `sys.version` banner (single line) — the same string
311
335
  // /system_stats reports — so the caller can spot a build/compiler disagreement,
312
336
  // not just a major.minor one (#401 review).
313
- const code = "import importlib.util as u,sys;" +
314
- "print('python', ' '.join(sys.version.split()));" +
315
- "print('triton', u.find_spec('triton') is not None);" +
316
- "print('sageattention', u.find_spec('sageattention') is not None)";
337
+ // torch is the 0.52.1 discriminator: a venv and its Homebrew/uv base share a
338
+ // python banner, but only the venv has the torch /system_stats reports.
339
+ //
340
+ // The version comes from DIST METADATA, never `import torch`. Importing torch
341
+ // initializes CUDA/MPS and loads a stack of native libraries: measured at 1.89s
342
+ // warm on a local NVMe RTX box, i.e. 38% of this probe's entire 5s budget, and
343
+ // multiples of that cold or on a network-mounted venv. Blowing the budget is not
344
+ // a partial loss — CPython block-buffers stdout when it is a pipe, so the kill
345
+ // discards the triton/sageattention lines that had ALREADY been computed, and
346
+ // the caller's `if (!out.trim())` branch reports everything as "unknown". That
347
+ // would degrade a working `Triton: installed` to unknown on exactly the
348
+ // heavy-CUDA machines #401 is about. `importlib.metadata.version` returns the
349
+ // identical string ("2.10.0+cu130" both ways, measured) for 43ms.
350
+ //
351
+ // Written with real newlines because the metadata lookup needs a try/except,
352
+ // which has no inline form. `-u` keeps stdout unbuffered so that if the child
353
+ // is killed anyway, the lines printed before the kill still reach us.
354
+ const code = TRITON_PROBE_SOURCE;
317
355
  let done = false;
318
- const child = execFile(pythonExe, ["-c", code], { timeout: timeoutMs, windowsHide: true }, (err, stdout) => {
356
+ const child = execFile(pythonExe, ["-u", "-c", code], { timeout: timeoutMs, windowsHide: true }, (err, stdout) => {
319
357
  if (done)
320
358
  return;
321
359
  done = true;
322
360
  // Spawn failure (ENOENT) or non-import error with no output → unknown.
323
361
  const out = (stdout || "").toString();
324
362
  if (!out.trim()) {
325
- resolve({ triton: "unknown", sageattention: "unknown" });
363
+ resolve({ triton: "unknown", sageattention: "unknown", torch: "unknown" });
326
364
  return;
327
365
  }
328
366
  const read = (name) => {
@@ -332,12 +370,15 @@ export function probeTritonSage(pythonExe, timeoutMs = 5000) {
332
370
  return m[1] === "True" ? "installed" : "not-installed";
333
371
  };
334
372
  const pyMatch = out.match(/^python\s+(.+)$/m);
373
+ const torchVer = out.match(/^torch_version\s+(\S+)/m)?.[1];
335
374
  // If python ran but errored AFTER printing partial output, still trust
336
375
  // whatever lines we got; missing lines stay "unknown".
337
376
  void err;
338
377
  resolve({
339
378
  triton: read("triton"),
340
379
  sageattention: read("sageattention"),
380
+ torch: read("torch"),
381
+ torchVersion: torchVer || undefined,
341
382
  pythonVersion: pyMatch ? pyMatch[1].trim() : undefined,
342
383
  });
343
384
  });
@@ -345,7 +386,7 @@ export function probeTritonSage(pythonExe, timeoutMs = 5000) {
345
386
  if (done)
346
387
  return;
347
388
  done = true;
348
- resolve({ triton: "unknown", sageattention: "unknown" });
389
+ resolve({ triton: "unknown", sageattention: "unknown", torch: "unknown" });
349
390
  });
350
391
  });
351
392
  }
@@ -408,13 +449,26 @@ export function packagesProvenByServerArgv(argv) {
408
449
  * that produces a wrong-environment probe, and "versions agree" was read as corroboration
409
450
  * when it carried no information at all.
410
451
  */
411
- export function contradictedPackage(probe, proven) {
452
+ export function contradictedPackage(probe, proven, serverTorch) {
412
453
  if (!probe)
413
454
  return undefined;
414
455
  for (const pkg of proven) {
415
456
  if (probe[pkg] === "not-installed")
416
457
  return pkg;
417
458
  }
459
+ // /system_stats.pytorch_version is what the RUNNING server imported. A probe
460
+ // that finds no torch — or a different build — is looking at the base
461
+ // interpreter, not the venv. Python versions agree in that case by
462
+ // construction, so this is the discriminator the version check cannot be
463
+ // (#401 recurrence, 0.52.1). An honest "unknown" (we could not ask) is not
464
+ // a contradiction.
465
+ const reported = serverTorch?.trim();
466
+ if (reported) {
467
+ if (probe.torch === "not-installed")
468
+ return "torch";
469
+ if (probe.torchVersion && !torchVersionsAgree(probe.torchVersion, reported))
470
+ return "torch";
471
+ }
418
472
  return undefined;
419
473
  }
420
474
  /**
@@ -610,11 +664,15 @@ export async function gatherEnvCapabilities(opts) {
610
664
  // RAW sys.version banner — caps.python is truncated to major.minor for DISPLAY, so
611
665
  // the contradiction check needs the untruncated string (#401 review).
612
666
  let statsPythonRaw;
667
+ // RAW pytorch_version — caps.torch is cleaned for DISPLAY; contradiction needs
668
+ // the string the server actually reported (#401 recurrence, 0.52.1).
669
+ let statsTorchRaw;
613
670
  if (stats) {
614
671
  applyStats(caps, stats);
615
672
  statsArgv = stats.system?.argv;
616
673
  statsCwd = stats.system?.cwd;
617
674
  statsPythonRaw = stats.system?.python_version?.trim() || undefined;
675
+ statsTorchRaw = stats.system?.pytorch_version?.trim() || undefined;
618
676
  statsEmbedded =
619
677
  typeof stats.system?.embedded_python === "boolean"
620
678
  ? stats.system.embedded_python
@@ -678,7 +736,7 @@ export async function gatherEnvCapabilities(opts) {
678
736
  // The genuinely observed positives survive anyway: the argv-proven flag is re-applied
679
737
  // immediately below, and the ComfyUI-log markers after it.
680
738
  const provenByArgv = packagesProvenByServerArgv(statsArgv);
681
- const contradicted = contradictedPackage(ts, provenByArgv);
739
+ const contradicted = contradictedPackage(ts, provenByArgv, statsTorchRaw);
682
740
  if (contradicted) {
683
741
  logger.info("Discarding this interpreter's capability results entirely: it contradicts the running ComfyUI's own launch flags", {
684
742
  contradicted,
@@ -1 +1 @@
1
- {"version":3,"file":"env-capabilities.js","sourceRoot":"","sources":["../../src/services/env-capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-capabilities.js","sourceRoot":"","sources":["../../src/services/env-capabilities.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { existsSync, realpathSync, statSync } from "node:fs";
2
2
  import { mkdir, readFile, writeFile } from "node:fs/promises";
3
3
  import { homedir, platform } from "node:os";
4
- import { dirname, join, isAbsolute, resolve } from "node:path";
4
+ import { basename, dirname, join, isAbsolute, resolve } from "node:path";
5
5
  import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
6
6
  import { config, isRemoteMode } from "../config.js";
7
7
  import { normalizeInstallPathEnv } from "../utils/install-path-env.js";
@@ -237,6 +237,76 @@ function samePath(a, b) {
237
237
  return false;
238
238
  }
239
239
  }
240
+ /**
241
+ * Do these two spellings name the SAME config file? Used only by the #1788 divergence
242
+ * disclosure, where the harmful direction is the opposite of `samePath`'s.
243
+ *
244
+ * `samePath` is deliberately lexical, and its false negatives are safe there: they demote
245
+ * a root from "explicit" to "inferred", i.e. more checking. Here a false negative would
246
+ * declare a file the server DOES read to be inert and tell the user their edit will not
247
+ * apply — a confident wrong answer on a correct action. A junction, an 8.3 short name, or
248
+ * a UNC-vs-mapped-drive spelling of one file is ordinary on the platform this was
249
+ * reported from, so the comparison is collapsed through `realpath` as well.
250
+ *
251
+ * WHICH realpath is load-bearing, and the previous version of this comment was simply
252
+ * WRONG about it: `fs.realpathSync` collapses junctions and symlinks but does NOT expand
253
+ * a Windows 8.3 short name — only `fs.realpathSync.native` asks the OS and gets back the
254
+ * long, real-case path. This repo already learned that (`panel-installer.ts`,
255
+ * `node-dev.ts` both use `.native` for exactly this). With the JS binding, pinning the
256
+ * server's OWN config by its short spelling produced "the running ComfyUI does NOT read
257
+ * `…\AVERYL~1\instance.yaml`" for a file it demonstrably reads (gate round 2, P1) —
258
+ * the disqualifying direction, on the platform this was reported from. `.native` first,
259
+ * with the JS binding as a fallback so an environment where the native call is
260
+ * unavailable still collapses junctions rather than nothing.
261
+ *
262
+ * `realpath` on the FILE is not enough either, and that gap is not academic: it throws
263
+ * on a path that does not exist, and "does not exist yet" is the ordinary state here —
264
+ * the implicit `<root>/extra_model_paths.yaml` a caller is about to CREATE. In that
265
+ * state the file-level collapse silently degrades to the lexical compare it was added to
266
+ * fix, so a junctioned `COMFYUI_PATH` naming the very file the server reads was declared
267
+ * inert (gate round 1, P1, reproduced with a real Windows junction).
268
+ *
269
+ * So resolve the DIRECTORY and rejoin the basename when the file itself does not
270
+ * resolve. The aliasing that matters lives in the parent — a junctioned/symlinked
271
+ * install root, an 8.3 short name, a mapped drive — and the parent of a config a caller
272
+ * can write to normally exists. Only when even the parent does not resolve does this
273
+ * fall back to the lexical form, i.e. to exactly what `samePath` already compared.
274
+ */
275
+ function sameConfigFile(a, b) {
276
+ if (samePath(a, b))
277
+ return true;
278
+ /** Canonicalize one path, or `undefined` if it cannot be resolved at all. `.native`
279
+ * is FIRST and is the only binding that expands a Windows 8.3 short name; the JS
280
+ * binding is a fallback that still collapses junctions/symlinks. Returning
281
+ * `undefined` rather than the input keeps "could not resolve" distinguishable from
282
+ * "resolved to itself", so the caller can try the parent instead of silently
283
+ * comparing an unresolved path against a resolved one. */
284
+ const canon = (p) => {
285
+ try {
286
+ return realpathSync.native(p);
287
+ }
288
+ catch {
289
+ // Native unavailable, or the path is absent/unreadable — try the JS binding.
290
+ }
291
+ try {
292
+ return realpathSync(p);
293
+ }
294
+ catch {
295
+ return undefined;
296
+ }
297
+ };
298
+ const real = (p) => {
299
+ const direct = canon(p);
300
+ if (direct !== undefined)
301
+ return direct;
302
+ // Absent/unreadable — and absent is the ORDINARY state, since pinning a config is
303
+ // how a caller creates it. The aliasing lives in the parent, so resolve the
304
+ // directory and rejoin the basename.
305
+ const parent = canon(dirname(p));
306
+ return parent === undefined ? p : join(parent, basename(p));
307
+ };
308
+ return samePath(real(a), real(b));
309
+ }
240
310
  function standaloneRoot() {
241
311
  const root = resolveEffectiveComfyUIBase();
242
312
  if (!root) {
@@ -409,7 +479,19 @@ function summarize(target, path, raw, extraNotes = [], serverResolved = false,
409
479
  * failure of that second lookup (a transient sharing violation, a mount hiccup) would
410
480
  * be reported as `exists: false` about a file we had just finished reading.
411
481
  */
412
- exists = false) {
482
+ exists = false,
483
+ /**
484
+ * Set when this file was PINNED and the running server provably reads elsewhere
485
+ * (#1788). The headline `message` is not the only place that promised an effect: the
486
+ * generic "Restart ComfyUI after editing this file" note below is appended to EVERY
487
+ * summary, and it is the same promise in different words — different enough that the
488
+ * `message`-level assertions did not see it (gate round 1, P1). An agent reads `notes`
489
+ * and acts on it, so the promise is withdrawn HERE too, keyed on the same structured
490
+ * observation `inertEditSuffix` uses rather than on re-read prose. Nothing is lost:
491
+ * the divergence warning already in `extraNotes` states what a restart will and will
492
+ * not do, so the two can never disagree.
493
+ */
494
+ divergesFromLive) {
413
495
  const groups = [];
414
496
  for (const [name, value] of Object.entries(raw)) {
415
497
  const group = readGroup(value, name);
@@ -430,7 +512,9 @@ exists = false) {
430
512
  : "Standalone/manual installs use extra_model_paths.yaml in the ComfyUI root.",
431
513
  ]),
432
514
  "Categories are generic ComfyUI search-path keys, so model folders and custom_nodes can both be represented when supported by the running ComfyUI build.",
433
- "Restart ComfyUI after editing this file so startup path registration is rebuilt.",
515
+ ...(divergesFromLive
516
+ ? []
517
+ : ["Restart ComfyUI after editing this file so startup path registration is rebuilt."]),
434
518
  ];
435
519
  return { target, path, exists, groups, notes };
436
520
  }
@@ -520,6 +604,10 @@ function implicitLiveTarget(liveRoot, opts, unresolvableFlag) {
520
604
  serverResolved: true,
521
605
  createParents: false, // the root is proven; only the YAML itself may be missing
522
606
  guard: { path: liveRoot, identity: seen.identity, source: "live-root" },
607
+ // With no flag at all this IS the server's whole set. With an UNRESOLVABLE relative
608
+ // flag there is a second file we cannot name, so the set is incomplete and a pinned
609
+ // path's absence from it concludes nothing.
610
+ liveLoaded: { paths: [path], complete: unresolvableFlag === undefined },
523
611
  };
524
612
  }
525
613
  /**
@@ -565,9 +653,11 @@ function implicitLiveTarget(liveRoot, opts, unresolvableFlag) {
565
653
  * the deliberate escape hatch, and both short-circuit above this.
566
654
  */
567
655
  async function resolveTargetPathPreferServer(opts = {}, allowUnprovenLocalListFallback = false) {
568
- // Explicit config_path or an explicit non-auto target: honor the caller.
656
+ // Explicit config_path or an explicit non-auto target: honor the caller — and then
657
+ // say so honestly when the running server reads somewhere else (#1788). The write
658
+ // target is UNCHANGED by that check; only the reporting is.
569
659
  if (opts.configPath || (opts.target && opts.target !== "auto")) {
570
- return { ...resolveTargetPath(opts), serverResolved: false };
660
+ return await notePinnedDivergence({ ...resolveTargetPath(opts), serverResolved: false });
571
661
  }
572
662
  const snapshot = await getLiveServerSnapshot(); // remote/unreachable → reachable:false
573
663
  if (!snapshot.reachable) {
@@ -825,6 +915,17 @@ async function resolveTargetPathPreferServer(opts = {}, allowUnprovenLocalListFa
825
915
  catch {
826
916
  // No static guess available — the server-resolved path stands on its own.
827
917
  }
918
+ // The COMPARISON set for the #1788 divergence disclosure — deliberately NOT the
919
+ // `alsoLoaded` display list. Two differences, both load-bearing:
920
+ // • the implicit `<root>/extra_model_paths.yaml` is included even when it does not
921
+ // exist yet. Pinning it is how a user CREATES it, and the next restart then loads
922
+ // it — calling that edit inert would be exactly backwards.
923
+ // • `unlocatable` relative flags make the set INCOMPLETE, so a pinned path's absence
924
+ // proves nothing and no divergence may be claimed.
925
+ const liveLoadedPaths = [serverConfig, ...alsoLoaded];
926
+ if (implicitConfig && !liveLoadedPaths.some((p) => sameConfigFile(p, implicitConfig))) {
927
+ liveLoadedPaths.push(implicitConfig);
928
+ }
828
929
  const isDesktop = looksLikeDesktopConfig(serverConfig);
829
930
  if (isDesktopGeneratedConfig(serverConfig)) {
830
931
  notes.push("WARNING: this file is auto-generated by ComfyUI Desktop ('do not edit manually') and will be overwritten by the Desktop app. For a durable model path, place or symlink the models under the server's --base-directory models dir instead of editing this YAML.");
@@ -836,6 +937,82 @@ async function resolveTargetPathPreferServer(opts = {}, allowUnprovenLocalListFa
836
937
  serverResolved: true,
837
938
  // The live server told us this file, so its directory exists by construction.
838
939
  createParents: true,
940
+ liveLoaded: { paths: liveLoadedPaths, complete: unlocatable.length === 0 },
941
+ };
942
+ }
943
+ /**
944
+ * #1788 — a PINNED target (`target: "desktop"` / `"standalone"` / an explicit
945
+ * `config_path`) deliberately bypasses the live resolution above: it is the documented
946
+ * escape hatch, and it must keep writing exactly where the caller said.
947
+ *
948
+ * What it must NOT keep doing is reporting that edit as though the running server will
949
+ * pick it up. The reporter called `list_local_models action:"add_path" target:"desktop"`
950
+ * on ComfyUI Desktop; the static heuristic wrote
951
+ * `%APPDATA%/ComfyUI/extra_models_config.yaml` and answered "Added … Restart ComfyUI to
952
+ * apply it", while the very same tool's `action:"list_paths"` had already reported the
953
+ * DIFFERENT file the running server was launched with. Two code paths, one question,
954
+ * two answers — and only the one that was right said so. Every live-anchored branch
955
+ * above pushes a divergence note when the STATIC guess would have differed; the pinned
956
+ * branch, which is the direction that actually loses data, pushed none.
957
+ *
958
+ * So: still write where the caller pinned, but ASK the same canonical resolver what the
959
+ * running server reads and disclose the divergence. Deliberately conservative — it can
960
+ * only ever ADD a note:
961
+ * • the resolver is re-entered with NO pin, so this is the ONE canonical live
962
+ * resolution, not a second copy of it that could drift (one level of recursion only:
963
+ * `{}` cannot re-enter this branch);
964
+ * • anything short of `serverResolved` proof — unreachable, remote, an unproven tree,
965
+ * the #764 display fallbacks — yields NO note. Silence is the honest answer to "we
966
+ * could not establish what the server reads";
967
+ * • an INCOMPLETE loaded set yields no note either (see LiveLoadedConfigs);
968
+ * • a pinned path that IS one of the server's configs yields no note — a caller
969
+ * pinning the second `--extra-model-paths-config` file is editing a live one.
970
+ */
971
+ async function notePinnedDivergence(pinned) {
972
+ // Reachability is checked FIRST, before any resolution work. Without a reachable
973
+ // local server no note is possible, and the full resolution is not free: it stats the
974
+ // caller's own guarded root, and that root's TOCTOU revalidation counts every stat it
975
+ // takes (#648). Burning one there to learn nothing would turn a stable root into a
976
+ // spurious "REPLACED while this call was running" refusal.
977
+ //
978
+ // This is a second /system_stats read, and it is deliberately only a GATE — the inner
979
+ // resolution takes its own authoritative snapshot. A server that stops or starts
980
+ // between the two can therefore only ever SUPPRESS the note (gate says unreachable, or
981
+ // the inner call finds nothing proven); it can never manufacture one from a state the
982
+ // resolver did not itself observe.
983
+ if (!(await getLiveServerSnapshot()).reachable)
984
+ return pinned;
985
+ let live;
986
+ try {
987
+ live = await resolveTargetPathPreferServer({});
988
+ }
989
+ catch {
990
+ return pinned; // the server established nothing — the pin is all there is
991
+ }
992
+ // `liveLoaded` IS the proof of anchoring: only the two server-anchored branches
993
+ // produce it (see its declaration), and it is the predicate this decision actually
994
+ // needs — the complete set of files the running server reads. An additional
995
+ // `serverResolved` check beside it was redundant by construction: a mutation deleting
996
+ // it killed zero tests, because no input can make the two disagree. An untestable
997
+ // guard is not defence in depth, it is an unpinned claim, so the invariant lives on
998
+ // the field's contract where a future branch has to read it.
999
+ const loaded = live.liveLoaded;
1000
+ if (!loaded?.complete)
1001
+ return pinned;
1002
+ if (loaded.paths.some((p) => sameConfigFile(p, pinned.path)))
1003
+ return pinned;
1004
+ return {
1005
+ ...pinned,
1006
+ notes: [
1007
+ ...pinned.notes,
1008
+ `WARNING: the RUNNING ComfyUI does not read this file. You pinned it explicitly ` +
1009
+ `(target/config_path), so it was selected by the local heuristic, not from the ` +
1010
+ `server; the connected server reports it loads ${loaded.paths.join(", ")}. An ` +
1011
+ `edit here does NOT reach the running server — restarting will not apply it. ` +
1012
+ `Omit target/config_path to act on the config the running server actually reads, ` +
1013
+ `or pass config_path with one of the paths above.`,
1014
+ ],
1015
+ divergesFromLive: { serverPaths: loaded.paths },
839
1016
  };
840
1017
  }
841
1018
  /** Read one config for presentation or model discovery. `allowUnprovenLocalListFallback`
@@ -850,7 +1027,7 @@ async function readExtraPathsConfig(opts = {}, allowUnprovenLocalListFallback =
850
1027
  assertRootIntact(resolved.guard);
851
1028
  const { raw, exists } = await readConfigFile(resolved.path);
852
1029
  assertRootIntact(resolved.guard);
853
- return summarize(resolved.target, resolved.path, raw, resolved.notes, resolved.serverResolved, exists);
1030
+ return summarize(resolved.target, resolved.path, raw, resolved.notes, resolved.serverResolved, exists, resolved.divergesFromLive);
854
1031
  }
855
1032
  export async function listExtraPaths(opts = {}) {
856
1033
  // #764: a display-only read may fall back when a reachable LOCAL server omits main.py
@@ -1036,6 +1213,20 @@ async function writeConfigFile(path, raw, createParents, guard) {
1036
1213
  await mkdir(dirname(path), { recursive: true });
1037
1214
  await writeFile(path, stringifyYaml(raw, { lineWidth: 0 }), "utf-8");
1038
1215
  }
1216
+ /**
1217
+ * What a mutation's headline `message` must say when the file was PINNED and the running
1218
+ * server provably reads elsewhere (#1788). Built from the STRUCTURED `divergesFromLive`
1219
+ * field, never from re-reading a note: "Restart ComfyUI to apply it" is a promise about
1220
+ * an effect, and it was being made for a file no running ComfyUI reads.
1221
+ */
1222
+ function inertEditSuffix(resolved) {
1223
+ const d = resolved.divergesFromLive;
1224
+ if (!d)
1225
+ return "";
1226
+ return (` WARNING: the running ComfyUI does NOT read ${resolved.path} — it loads ` +
1227
+ `${d.serverPaths.join(", ")}. Restarting will NOT apply this change; you pinned this ` +
1228
+ `file with target/config_path. Omit those to edit the config the running server reads.`);
1229
+ }
1039
1230
  export async function addExtraPath(opts) {
1040
1231
  const resolved = await resolveTargetPathPreferServer(opts);
1041
1232
  const groupName = assertSafeKey(opts.group ?? "comfyui_mcp", "Group");
@@ -1061,13 +1252,16 @@ export async function addExtraPath(opts) {
1061
1252
  await writeConfigFile(resolved.path, raw, resolved.createParents, resolved.guard);
1062
1253
  }
1063
1254
  // A completed write is itself the observation that the file is there now.
1064
- const info = summarize(resolved.target, resolved.path, raw, resolved.notes, resolved.serverResolved, existedBefore || changed);
1255
+ const info = summarize(resolved.target, resolved.path, raw, resolved.notes, resolved.serverResolved, existedBefore || changed, resolved.divergesFromLive);
1256
+ const inert = inertEditSuffix(resolved);
1065
1257
  return {
1066
1258
  ...info,
1067
1259
  changed,
1068
- message: changed
1069
- ? `Added ${nextPath} to ${groupName}.${category}. Restart ComfyUI to apply it.`
1070
- : `${nextPath} is already present in ${groupName}.${category}.`,
1260
+ message: (changed
1261
+ ? inert
1262
+ ? `Added ${nextPath} to ${groupName}.${category}.`
1263
+ : `Added ${nextPath} to ${groupName}.${category}. Restart ComfyUI to apply it.`
1264
+ : `${nextPath} is already present in ${groupName}.${category}.`) + inert,
1071
1265
  };
1072
1266
  }
1073
1267
  export async function removeExtraPath(opts) {
@@ -1094,13 +1288,16 @@ export async function removeExtraPath(opts) {
1094
1288
  await writeConfigFile(resolved.path, raw, resolved.createParents, resolved.guard);
1095
1289
  }
1096
1290
  }
1097
- const info = summarize(resolved.target, resolved.path, raw, resolved.notes, resolved.serverResolved, existedBefore || changed);
1291
+ const info = summarize(resolved.target, resolved.path, raw, resolved.notes, resolved.serverResolved, existedBefore || changed, resolved.divergesFromLive);
1292
+ const inert = inertEditSuffix(resolved);
1098
1293
  return {
1099
1294
  ...info,
1100
1295
  changed,
1101
- message: changed
1102
- ? `Removed ${removePath} from ${groupName}.${category}. Restart ComfyUI to apply it.`
1103
- : `${removePath} was not present in ${groupName}.${category}.`,
1296
+ message: (changed
1297
+ ? inert
1298
+ ? `Removed ${removePath} from ${groupName}.${category}.`
1299
+ : `Removed ${removePath} from ${groupName}.${category}. Restart ComfyUI to apply it.`
1300
+ : `${removePath} was not present in ${groupName}.${category}.`) + inert,
1104
1301
  };
1105
1302
  }
1106
1303
  //# sourceMappingURL=extra-paths.js.map