comfyui-mcp 0.49.2 → 0.49.4

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 (61) hide show
  1. package/dist/orchestrator/agent-backend.js +8 -0
  2. package/dist/orchestrator/agent-backend.js.map +1 -1
  3. package/dist/orchestrator/codex-backend.js +49 -0
  4. package/dist/orchestrator/codex-backend.js.map +1 -1
  5. package/dist/orchestrator/grok-backend.js +5 -0
  6. package/dist/orchestrator/grok-backend.js.map +1 -1
  7. package/dist/orchestrator/index.js +317 -22
  8. package/dist/orchestrator/index.js.map +1 -1
  9. package/dist/orchestrator/ollama-backend.js +11 -2
  10. package/dist/orchestrator/ollama-backend.js.map +1 -1
  11. package/dist/orchestrator/panel-agent.js +591 -67
  12. package/dist/orchestrator/panel-agent.js.map +1 -1
  13. package/dist/orchestrator/panel-tools.js +518 -65
  14. package/dist/orchestrator/panel-tools.js.map +1 -1
  15. package/dist/orchestrator/run-completion-journal.js +914 -0
  16. package/dist/orchestrator/run-completion-journal.js.map +1 -0
  17. package/dist/orchestrator/session-store.js +11 -3
  18. package/dist/orchestrator/session-store.js.map +1 -1
  19. package/dist/services/asset-reconcile.js +83 -0
  20. package/dist/services/asset-reconcile.js.map +1 -0
  21. package/dist/services/asset-registry.js +9 -2
  22. package/dist/services/asset-registry.js.map +1 -1
  23. package/dist/services/download-jobs.js +178 -14
  24. package/dist/services/download-jobs.js.map +1 -1
  25. package/dist/services/download-progress.js +16 -18
  26. package/dist/services/download-progress.js.map +1 -1
  27. package/dist/services/extra-paths.js +61 -9
  28. package/dist/services/extra-paths.js.map +1 -1
  29. package/dist/services/hello-retarget.js +165 -0
  30. package/dist/services/hello-retarget.js.map +1 -0
  31. package/dist/services/job-history.js +50 -0
  32. package/dist/services/job-history.js.map +1 -1
  33. package/dist/services/job-watcher.js +38 -7
  34. package/dist/services/job-watcher.js.map +1 -1
  35. package/dist/services/manifest.js +92 -9
  36. package/dist/services/manifest.js.map +1 -1
  37. package/dist/services/model-resolver.js +616 -17
  38. package/dist/services/model-resolver.js.map +1 -1
  39. package/dist/services/output-dir.js +63 -15
  40. package/dist/services/output-dir.js.map +1 -1
  41. package/dist/services/panel-pin-guard.js +6 -62
  42. package/dist/services/panel-pin-guard.js.map +1 -1
  43. package/dist/services/ui-bridge.js +111 -14
  44. package/dist/services/ui-bridge.js.map +1 -1
  45. package/dist/services/workspace-env.js +179 -3
  46. package/dist/services/workspace-env.js.map +1 -1
  47. package/dist/tools/assets.js +34 -2
  48. package/dist/tools/assets.js.map +1 -1
  49. package/dist/tools/extra-paths.js +6 -4
  50. package/dist/tools/extra-paths.js.map +1 -1
  51. package/dist/tools/model-extras.js +26 -7
  52. package/dist/tools/model-extras.js.map +1 -1
  53. package/dist/tools/model-management.js +36 -8
  54. package/dist/tools/model-management.js.map +1 -1
  55. package/dist/tools/report-issue.js +12 -2
  56. package/dist/tools/report-issue.js.map +1 -1
  57. package/dist/tools/vocabulary.js +21 -0
  58. package/dist/tools/vocabulary.js.map +1 -1
  59. package/package.json +1 -1
  60. package/scripts/gen-tool-docs.ts +138 -4
  61. package/scripts/tool-doc-examples.ts +794 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-completion-journal.js","sourceRoot":"","sources":["../../src/orchestrator/run-completion-journal.ts"],"names":[],"mappings":"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"}
@@ -104,12 +104,20 @@ export function carryWorkflowCommandStamp(stamps, migratedFrom, identity) {
104
104
  /** #570 — does the DESTINATION of a tab-id migration already hold state for a backend, so the
105
105
  * incoming tab would inherit/leak it? Covers EVERY kind of per-backend state that must be reset
106
106
  * before the source is rebound in: manager live/pending/held (`hasManagerState`), a dormant
107
- * durable session (`hasDurableSession`), OR a RENDER-HELD queue (`renderHeldCount` — the
107
+ * durable session (`hasDurableSession`), a RENDER-HELD queue (`renderHeldCount` — the
108
108
  * orchestrator-level heldDuringGen, which manager.reset does NOT clear and which the source-held
109
109
  * re-key would otherwise APPEND to, flushing the superseded tab's queued message into the incoming
110
- * tab on render completion). Any of these ⇒ collision ⇒ reset + clear the destination's held. */
110
+ * tab on render completion), OR a JOURNALED RUN COMPLETION (`journaledCompletionCount`, #468 — a
111
+ * tab whose agent and session were already cleared (New chat) can still hold an undelivered
112
+ * completion; without this it reads as UNOCCUPIED, the incoming source is rebound onto its id, and
113
+ * the next flush delivers the DESTINATION tab's render into the SOURCE tab's conversation. A tab
114
+ * holding a journal entry is not empty). Any of these ⇒ collision ⇒ reset + clear the
115
+ * destination's held state. */
111
116
  export function destinationHasCollisionState(opts) {
112
- return opts.hasManagerState || opts.hasDurableSession || opts.renderHeldCount > 0;
117
+ return (opts.hasManagerState ||
118
+ opts.hasDurableSession ||
119
+ opts.renderHeldCount > 0 ||
120
+ (opts.journaledCompletionCount ?? 0) > 0);
113
121
  }
114
122
  /** #570 — does a connected SIBLING tab own the session behind a candidate stable key? A stable key
115
123
  * encodes (workflow identity, backend), so a sibling owns it when its identity derives to the SAME
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/orchestrator/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/orchestrator/session-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { getHistory } from "../comfyui/client.js";
2
+ import { buildCompletionNotification } from "./job-watcher.js";
3
+ import { extractWorkflowGraph } from "./history-select.js";
4
+ import { hasAffirmativeSuccessStatus, historyCompletionTimeMs } from "./job-history.js";
5
+ import { AssetRegistry } from "./asset-registry.js";
6
+ import { logger } from "../utils/logger.js";
7
+ /** Only the newest N completed prompts are reconciled per call. */
8
+ const DEFAULT_MAX_PROMPTS = 25;
9
+ function queueNumberOf(entry) {
10
+ const p = entry?.prompt;
11
+ return Array.isArray(p) ? Number(p[0]) || 0 : 0;
12
+ }
13
+ export async function reconcileAssetsFromHistory(opts = {}) {
14
+ const maxPrompts = opts.maxPrompts ?? DEFAULT_MAX_PROMPTS;
15
+ const now = opts.now ?? Date.now;
16
+ const history = await getHistory();
17
+ const completed = Object.entries(history)
18
+ .filter(([, entry]) => entry?.status?.completed === true)
19
+ .sort((a, b) => queueNumberOf(b[1]) - queueNumberOf(a[1]))
20
+ .slice(0, maxPrompts);
21
+ let registered = 0;
22
+ let skippedExisting = 0;
23
+ for (const [promptId, entry] of completed) {
24
+ // Eligibility keys on the HISTORY entry's own status via the shared
25
+ // affirmative-success predicate (job-history) — the SAME gate the watched
26
+ // path registers through, never the notification builder's default-success.
27
+ if (!hasAffirmativeSuccessStatus(entry))
28
+ continue;
29
+ // Parse outputs exactly like the watched path does — same extraction and
30
+ // URL building.
31
+ const notification = buildCompletionNotification(promptId, entry, now());
32
+ if (notification.outputs.length === 0)
33
+ continue;
34
+ // The recorded graph is the provenance regenerate / get_asset_metadata
35
+ // rely on; without it there is nothing truthful to register.
36
+ const workflow = extractWorkflowGraph(entry);
37
+ if (!workflow)
38
+ continue;
39
+ // createdAt must be the run's REAL completion time — an entry without a
40
+ // trustworthy execution_success timestamp is skipped rather than guessed
41
+ // (see historyCompletionTimeMs; the watched path can fall back to its own
42
+ // observed finish time, but a reconciler running long after the fact has
43
+ // no such observation).
44
+ const createdAt = historyCompletionTimeMs(entry, now());
45
+ if (createdAt === undefined) {
46
+ logger.debug("Skipping history entry with no usable completion timestamp", {
47
+ prompt_id: promptId,
48
+ });
49
+ continue;
50
+ }
51
+ const fresh = notification.outputs
52
+ .map((output) => ({
53
+ node_id: output.node_id,
54
+ images: output.images.filter((img) => {
55
+ // Keep the original (watched or earlier-reconciled) record: its
56
+ // createdAt and any already-handed-out asset_id stay stable.
57
+ if (AssetRegistry.has(promptId, img)) {
58
+ skippedExisting++;
59
+ return false;
60
+ }
61
+ return true;
62
+ }),
63
+ }))
64
+ .filter((output) => output.images.length > 0);
65
+ if (fresh.length === 0)
66
+ continue;
67
+ const records = AssetRegistry.register({
68
+ promptId,
69
+ workflow,
70
+ outputs: fresh,
71
+ source: "history-reconcile",
72
+ createdAt,
73
+ createdAtSource: "history",
74
+ });
75
+ registered += records.length;
76
+ }
77
+ const result = { scanned: completed.length, registered, skippedExisting };
78
+ if (result.registered > 0) {
79
+ logger.info("Reconciled assets from ComfyUI history", result);
80
+ }
81
+ return result;
82
+ }
83
+ //# sourceMappingURL=asset-reconcile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-reconcile.js","sourceRoot":"","sources":["../../src/services/asset-reconcile.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export const AssetRegistry = {
25
25
  * Register all images produced by a completed prompt.
26
26
  * Returns the AssetRecords created (one per image).
27
27
  */
28
- register({ promptId, workflow, outputs }) {
28
+ register({ promptId, workflow, outputs, source, createdAt, createdAtSource }) {
29
29
  const snapshot = deepCloneWorkflow(workflow);
30
30
  const created = [];
31
31
  for (const output of outputs) {
@@ -40,7 +40,9 @@ export const AssetRegistry = {
40
40
  type: img.type,
41
41
  url: img.url,
42
42
  workflow: snapshot,
43
- createdAt: state.config.now(),
43
+ createdAt: createdAt ?? state.config.now(),
44
+ createdAtSource: createdAtSource ?? "observed",
45
+ source: source ?? "watched",
44
46
  };
45
47
  state.records.set(assetId, record);
46
48
  created.push(record);
@@ -48,6 +50,11 @@ export const AssetRegistry = {
48
50
  }
49
51
  return created;
50
52
  },
53
+ /** True when a live (unexpired) record exists for this prompt + image. */
54
+ has(promptId, img) {
55
+ const record = state.records.get(makeAssetId(promptId, img));
56
+ return record !== undefined && !isExpired(record);
57
+ },
51
58
  /** Look up a record by id. Returns undefined for missing or expired. */
52
59
  get(assetId) {
53
60
  const record = state.records.get(assetId);
@@ -1 +1 @@
1
- {"version":3,"file":"asset-registry.js","sourceRoot":"","sources":["../../src/services/asset-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asset-registry.js","sourceRoot":"","sources":["../../src/services/asset-registry.ts"],"names":[],"mappings":"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"}
@@ -16,18 +16,17 @@
16
16
  import { createHash } from "node:crypto";
17
17
  import { realpath } from "node:fs/promises";
18
18
  import { basename, dirname, join } from "node:path";
19
- import { downloadModel, resolveDownloadTarget, shouldDispatchDownloadToManager, } from "./model-resolver.js";
19
+ import { downloadModel, liveListingHasEntry, resolveDownloadTarget, shouldDispatchDownloadToManager, verifyLandedModel, } from "./model-resolver.js";
20
20
  import { ModelError } from "../utils/errors.js";
21
21
  import { persistDownloadJob, readPersistedDownloadJob, listPersistedDownloadJobs, findPersistedDownloadJob, clearDownloadProgress, persistedRecordsEnabled, PERSIST_OWNER, PERSISTED_INFLIGHT_STALE_MS, } from "./download-progress.js";
22
22
  import { logger } from "../utils/logger.js";
23
23
  /** How often an in-flight job re-persists its record (liveness heartbeat). Must stay
24
24
  * comfortably below PERSISTED_INFLIGHT_STALE_MS so a live download is always fresh. */
25
25
  const HEARTBEAT_MS = 15_000;
26
- /** Cap on heartbeat retries of a transiently-failing TERMINAL persist. Chosen so the
27
- * total window (attempts × HEARTBEAT_MS) exceeds PERSISTED_INFLIGHT_STALE_MS — by then
28
- * the last-successful (in-flight) record has already aged out via the stale reap, so
29
- * giving up can't leave a fresh, adoptable record. Prevents a permanently-unwritable
30
- * progress store from keeping a COMPLETED job's interval doing filesystem work forever. */
26
+ /** Cap on heartbeat retries of a transiently-failing TERMINAL persist. Once this
27
+ * bounded retry window ends the completed job stops touching the filesystem; its
28
+ * last in-flight snapshot remains non-adoptable after the freshness window and is
29
+ * reaped only by the long persisted-record retention bound (#761). */
31
30
  const TERMINAL_PERSIST_MAX_ATTEMPTS = 6; // 6 × 15s = 90s > 60s stale window
32
31
  // The in-flight registry is indexed under MULTIPLE keys per job so dedup is
33
32
  // ROUTE-INDEPENDENT: a repeated request finds the in-flight job whether or not the
@@ -247,8 +246,18 @@ onComplete) {
247
246
  // too (the local callback race is inherently local, but this keeps the server
248
247
  // write single-writer and the last-started result deterministic).
249
248
  let serializeKey;
249
+ /** Did the live server ALREADY list this exact entry before we started? Captured
250
+ * HERE, before any bytes are written, so the post-landing check can tell "the
251
+ * server sees it BECAUSE we wrote it" from "it already knew that name" (#369). */
252
+ let listedBefore;
250
253
  if (!dispatchToManager) {
251
254
  const target = await resolveDownloadTarget(url, targetSubfolder, filename);
255
+ try {
256
+ listedBefore = await liveListingHasEntry(targetSubfolder, target.filename);
257
+ }
258
+ catch {
259
+ listedBefore = undefined; // unknowable → the check stays conservative
260
+ }
252
261
  // Fold auth into the destination key too (#467 P1-A): two concurrent calls to
253
262
  // the SAME on-disk destination with DIFFERENT auth are DIFFERENT downloads
254
263
  // (different representations) and must NOT dedup to one writer/one job.
@@ -393,6 +402,13 @@ onComplete) {
393
402
  job.path = landedPath;
394
403
  job.status = "done";
395
404
  job.finished_at = Date.now();
405
+ // A LOCAL landing is not yet a verified placement. Mark it PENDING in the SAME
406
+ // synchronous step that publishes "done" (and in the same persisted record), so
407
+ // no reader — this session's tool call inside its grace window, or another
408
+ // session reading the record — can ever see a completed local download with no
409
+ // verification field and render it as confirmed success (#369, codex gate).
410
+ if (!dispatchToManager)
411
+ job.live_visible = "pending";
396
412
  persistJobRecord(job);
397
413
  };
398
414
  const settled = (async () => {
@@ -426,6 +442,36 @@ onComplete) {
426
442
  // dispatch has no local rename, so commit done here when it returns (dispatch
427
443
  // accepted — the viaManager flag marks it as unverified in the tools). Idempotent.
428
444
  commitDone(path);
445
+ // VERIFY, don't assume (#369). A LOCAL download is reported with the path we
446
+ // confirmed on disk, plus whether the connected ComfyUI actually reads from
447
+ // there. This runs INSIDE `settled`, so a small download that finishes within
448
+ // download_model's grace window is already verified when the tool answers.
449
+ // Never allowed to demote a completed download: verifyLandedModel never throws
450
+ // and the catch below keeps `done`.
451
+ if (!dispatchToManager && job.status === "done") {
452
+ try {
453
+ const verdict = await verifyLandedModel(path, targetSubfolder, { listedBefore });
454
+ if (verdict.verifiedPath)
455
+ job.path = verdict.verifiedPath;
456
+ job.verified_root = verdict.verifiedAgainstRoot;
457
+ // No verifiedPath means the on-disk stat did NOT succeed — the file was
458
+ // removed or became unreadable between the rename and this check. Record
459
+ // that so no renderer claims "verified on disk" for the retained path.
460
+ job.disk_verified = !!verdict.verifiedPath;
461
+ job.live_visible = verdict.liveVisible;
462
+ job.verify_note = verdict.note;
463
+ }
464
+ catch (err) {
465
+ // Verification is a REPORT, never a gate: the bytes are on disk either
466
+ // way. Record that we could not confirm placement and carry on to the
467
+ // post-download hook — swallowing this must not skip onComplete. The
468
+ // on-disk check did not complete either, so nothing may claim it did.
469
+ job.disk_verified = false;
470
+ job.live_visible = "unknown";
471
+ job.verify_note = `Placement could not be verified: ${err instanceof Error ? err.message : String(err)}`;
472
+ }
473
+ persistJobRecord(job);
474
+ }
429
475
  if (onComplete) {
430
476
  // Post-processing must not turn a landed file into a failed download —
431
477
  // the bytes are on disk either way, and reporting "error" here would
@@ -471,8 +517,9 @@ onComplete) {
471
517
  // outcome (#529) instead of a forever-"downloading" record. If this atomic
472
518
  // replace transiently fails (rare), the heartbeat below KEEPS retrying until the
473
519
  // terminal state is durable — so a done/cancelled job can't linger as a
474
- // fresh-and-adoptable "downloading" record (beyond the stale reap that already
475
- // bounds it). Only once the terminal record is durable does the heartbeat stop.
520
+ // fresh-and-adoptable "downloading" record. The freshness window excludes it from
521
+ // adoption immediately; long retention later bounds the persisted record. Only once
522
+ // the terminal record is durable does the heartbeat stop.
476
523
  if (persistJobRecord(job) && heartbeat)
477
524
  clearInterval(heartbeat);
478
525
  }
@@ -512,8 +559,8 @@ onComplete) {
512
559
  const durable = persistJobRecord(job);
513
560
  if (job.status !== "downloading") {
514
561
  // Stop the interval once the terminal state is durable, OR the retry budget is
515
- // spent (by which point the stale record is already reaped), OR persistence went
516
- // inactive — never let a completed job's interval do filesystem work forever.
562
+ // spent (after which the snapshot is non-adoptable), OR persistence went inactive
563
+ // — never let a completed job's interval do filesystem work forever.
517
564
  if ((durable ||
518
565
  ++terminalPersistAttempts >= TERMINAL_PERSIST_MAX_ATTEMPTS ||
519
566
  !persistedRecordsEnabled()) &&
@@ -591,6 +638,10 @@ function persistJobRecord(job) {
591
638
  req_key: job.reqKey,
592
639
  via_manager: job.viaManager,
593
640
  resume: job.resume,
641
+ live_visible: job.live_visible,
642
+ verify_note: job.verify_note,
643
+ disk_verified: job.disk_verified,
644
+ verified_root: job.verified_root,
594
645
  });
595
646
  }
596
647
  /** Rebuild an in-memory DownloadJob view from a persisted record (#529 adoption
@@ -615,13 +666,19 @@ function jobFromPersisted(rec) {
615
666
  reqKey: rec.req_key,
616
667
  viaManager: rec.via_manager,
617
668
  resume: rec.resume,
669
+ live_visible: rec.live_visible,
670
+ verify_note: rec.verify_note,
671
+ disk_verified: rec.disk_verified,
672
+ verified_root: rec.verified_root,
673
+ staleInflight: rec.staleInflight,
674
+ staleForMs: rec.staleForMs,
618
675
  };
619
676
  }
620
677
  /** True when a FRESH foreign in-flight persisted record shares `id` but carries a
621
678
  * DIFFERENT trayId — a distinct concurrent physical download in ANOTHER session (two
622
679
  * distinct URLs resolving to the same dest+auth). The id alone can't disambiguate, so
623
680
  * a by-id lookup/cancel must decline rather than silently act on the local one.
624
- * Excludes this process's own records (same owner) and stale/dead ones (heartbeat). */
681
+ * Excludes this process's own records (same owner) and heartbeat-stale ones. */
625
682
  function hasAmbiguousForeignSibling(id, localTrayId) {
626
683
  const now = Date.now();
627
684
  return listPersistedDownloadJobs().some((rec) => rec.id === id &&
@@ -630,6 +687,113 @@ function hasAmbiguousForeignSibling(id, localTrayId) {
630
687
  rec.status === "downloading" &&
631
688
  now - (rec.updated ?? 0) < PERSISTED_INFLIGHT_STALE_MS);
632
689
  }
690
+ /** " (verified on disk)" only when the post-landing stat actually succeeded. A job
691
+ * whose file vanished between the rename and the check keeps its path but must not
692
+ * carry a disk-verification claim (codex gate, round 9). */
693
+ /** Do two absolute root paths name the same directory? Windows paths are
694
+ * case-insensitive and mix separators, so `C:\ComfyUI\models` and
695
+ * `c:/comfyui/models` are the SAME install — comparing them raw produced a false
696
+ * "a DIFFERENT install" downgrade of a correct verdict (codex gate, round 17). */
697
+ function sameRoot(a, b) {
698
+ if (!a || !b)
699
+ return false;
700
+ const norm = (s) => {
701
+ const slashed = s.replace(/\\/g, "/").replace(/\/+$/, "");
702
+ return process.platform === "win32" ? slashed.toLowerCase() : slashed;
703
+ };
704
+ return norm(a) === norm(b);
705
+ }
706
+ function diskQualifier(job) {
707
+ return job.disk_verified === false ? " (NOT found on disk when checked)" : " (verified on disk)";
708
+ }
709
+ export function describePlacement(job,
710
+ /** The models root the CONNECTED server reads right now (currentLiveModelsRoot()).
711
+ * A stored `visible` verdict may ONLY be re-asserted when this is present and
712
+ * names the same root the verdict was made against — see below. */
713
+ ctx) {
714
+ if (!job.viaManager &&
715
+ job.live_visible === "visible" &&
716
+ !sameRoot(ctx?.liveModelsDir, job.verified_root)) {
717
+ // A CONFIRMED rendering requires the READER to have re-established the verdict,
718
+ // so every way of failing to do that lands here (codex gate, rounds 11, 16, 18):
719
+ // - the verdict names a DIFFERENT root than the server now reads;
720
+ // - the verdict carries NO root (made against a destination only local
721
+ // configuration could vouch for);
722
+ // - and — the inversion this closes — there is NO current observation at all,
723
+ // because the probe transiently failed or resolved non-authoritatively.
724
+ // That last case previously fell through to "confirmed", reading a MISSING
725
+ // observation as "no contradiction". It is not: nothing verified that the server
726
+ // answering NOW can read this file. Absence of evidence renders as unverified.
727
+ return {
728
+ confirmed: false,
729
+ wrongPlace: false,
730
+ pathLabel: "written to",
731
+ pathQualifier: diskQualifier(job),
732
+ warning: !ctx?.liveModelsDir
733
+ ? "this download was confirmed earlier, but the connected ComfyUI could not be asked " +
734
+ "just now which models directory it reads, so that confirmation cannot be re-established " +
735
+ "for the server you are connected to. Re-check with download_status, or confirm with " +
736
+ "list_local_models."
737
+ : job.verified_root
738
+ ? `this download was verified against a ComfyUI reading "${job.verified_root}", but the ` +
739
+ `connected server now reads "${ctx.liveModelsDir}" — a DIFFERENT install. The earlier ` +
740
+ "confirmation does not apply to it; check list_local_models against the server you are " +
741
+ "connected to now."
742
+ : "this download's placement was confirmed against a models directory that could only be " +
743
+ `inferred from local configuration, and the connected server now reports "${ctx.liveModelsDir}" ` +
744
+ "as the directory it reads. The earlier confirmation cannot be re-asserted for it; " +
745
+ "check list_local_models against the server you are connected to now.",
746
+ };
747
+ }
748
+ if (job.viaManager) {
749
+ return {
750
+ confirmed: false,
751
+ wrongPlace: false,
752
+ pathLabel: "requested destination",
753
+ pathQualifier: "",
754
+ warning: "the dispatch was ACCEPTED, NOT verified as landed — ComfyUI-Manager reports its queue " +
755
+ "task 'done' even on failure, so this does not guarantee the file is present. Confirm " +
756
+ "with list_local_models before relying on it.",
757
+ };
758
+ }
759
+ switch (job.live_visible) {
760
+ case "visible":
761
+ return {
762
+ confirmed: true,
763
+ wrongPlace: false,
764
+ pathLabel: "landed at",
765
+ pathQualifier: " (verified on disk, and the connected ComfyUI lists it)",
766
+ };
767
+ case "not-visible":
768
+ return {
769
+ confirmed: false,
770
+ wrongPlace: true,
771
+ pathLabel: "written to",
772
+ pathQualifier: diskQualifier(job),
773
+ warning: `NOT VISIBLE to the connected ComfyUI — ${job.verify_note ?? "the running server does not list this file."}`,
774
+ };
775
+ case "unknown":
776
+ return {
777
+ confirmed: false,
778
+ wrongPlace: false,
779
+ pathLabel: "written to",
780
+ pathQualifier: diskQualifier(job),
781
+ warning: `visibility to the connected ComfyUI is UNCONFIRMED${job.verify_note ? ` — ${job.verify_note}` : ""}. Check list_local_models before relying on it.`,
782
+ };
783
+ default:
784
+ // "pending" and undefined (pre-fix record) alike: the file landed, the check
785
+ // has not concluded. Never rendered as a confirmed success.
786
+ return {
787
+ confirmed: false,
788
+ wrongPlace: false,
789
+ pathLabel: "written to",
790
+ pathQualifier: "",
791
+ warning: "the file was materialized locally, but placement has NOT been confirmed yet — the " +
792
+ "check against the connected ComfyUI has not completed. Re-check with download_status, " +
793
+ "or confirm with list_local_models.",
794
+ };
795
+ }
796
+ }
633
797
  export function getDownloadJob(id) {
634
798
  // The registry indexes each job under its request key and (when local) its
635
799
  // destination key; the public id is one of those, so a direct get resolves it.
@@ -703,9 +867,9 @@ export function findDownloadJob(query) {
703
867
  }
704
868
  }
705
869
  for (const rec of listPersistedDownloadJobs()) {
706
- // Only FRESH in-flight records count as live candidates — a stale/dead record
707
- // (crashed session, never reaped) must not inflate the ambiguity count and force a
708
- // false "no download" (matching the persisted helpers' fresh-in-flight rule).
870
+ // Only FRESH in-flight records count as live candidates — a heartbeat-stale record
871
+ // may still stream, but must not inflate the ambiguity count and force a false
872
+ // "no download" (matching the persisted helpers' fresh-in-flight rule).
709
873
  if (rec.status !== "downloading" || now - (rec.updated ?? 0) >= PERSISTED_INFLIGHT_STALE_MS) {
710
874
  continue;
711
875
  }