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.
- package/README.md +2 -1
- package/dist/boot.js +1 -1
- package/dist/boot.js.map +1 -1
- package/dist/comfyui/fetch.js +2 -2
- package/dist/config.js +11 -0
- package/dist/config.js.map +1 -1
- package/dist/orchestrator/index.js +46 -2
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/orchestrator/panel-tools.js +218 -18
- package/dist/orchestrator/panel-tools.js.map +1 -1
- package/dist/orchestrator/run-completion-journal.js +38 -0
- package/dist/orchestrator/run-completion-journal.js.map +1 -1
- package/dist/orchestrator/run-completion-watchdog.js +189 -0
- package/dist/orchestrator/run-completion-watchdog.js.map +1 -0
- package/dist/services/comfy-cli.js +23 -10
- package/dist/services/comfy-cli.js.map +1 -1
- package/dist/services/env-capabilities.js +69 -11
- package/dist/services/env-capabilities.js.map +1 -1
- package/dist/services/extra-paths.js +211 -14
- package/dist/services/extra-paths.js.map +1 -1
- package/dist/services/live-interpreter.js +197 -11
- package/dist/services/live-interpreter.js.map +1 -1
- package/dist/services/manifest.js +50 -71
- package/dist/services/manifest.js.map +1 -1
- package/dist/services/node-management.js +30 -24
- package/dist/services/node-management.js.map +1 -1
- package/dist/services/node-snapshots.js +22 -8
- package/dist/services/node-snapshots.js.map +1 -1
- package/dist/services/panel-launcher.js +198 -33
- package/dist/services/panel-launcher.js.map +1 -1
- package/dist/services/panel-secrets.js +8 -0
- package/dist/services/panel-secrets.js.map +1 -1
- package/dist/services/skill-generator.js +3 -2
- package/dist/services/skill-generator.js.map +1 -1
- package/dist/services/ui-bridge.js +5 -4
- package/dist/services/ui-bridge.js.map +1 -1
- package/dist/services/update-comfyui.js +9 -10
- package/dist/services/update-comfyui.js.map +1 -1
- package/dist/services/workflow-lock.js +24 -21
- package/dist/services/workflow-lock.js.map +1 -1
- package/dist/services/workspace-env.js +158 -10
- package/dist/services/workspace-env.js.map +1 -1
- package/dist/tools/comfy-cli.js +1 -1
- package/dist/tools/comfy-cli.js.map +1 -1
- package/dist/tools/install-comfyui.js +2 -2
- package/dist/tools/install-comfyui.js.map +1 -1
- package/dist/tools/manifest.js +1 -1
- package/dist/tools/manifest.js.map +1 -1
- package/dist/tools/skills-access.js +5 -3
- package/dist/tools/skills-access.js.map +1 -1
- package/dist/tools/workflow-library.js +2 -2
- package/dist/tools/workflow-library.js.map +1 -1
- 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
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
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
|
-
|
|
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
|
-
?
|
|
1070
|
-
|
|
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
|
-
?
|
|
1103
|
-
|
|
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
|