comfyui-mcp 0.34.0 → 0.35.0

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.
@@ -18,6 +18,27 @@ import { randomUUID, timingSafeEqual } from "node:crypto";
18
18
  import { WebSocketServer, WebSocket } from "ws";
19
19
  import { logger } from "../utils/logger.js";
20
20
  export const DEFAULT_BRIDGE_PORT = 9101;
21
+ /**
22
+ * Frame `type`s that are safe to MIRROR to a tab's viewers — genuine shared-session
23
+ * activity a remote-control phone should see. This is an ALLOWLIST (default-deny):
24
+ * a `cid`-based denylist leaked cid-less correlated replies (pair_url, secret_saved,
25
+ * OAuth acks, and history replies to a no-cid request). Anything not listed here —
26
+ * acks, model/backend config, pairing/secret frames, correlated replies — stays with
27
+ * the primary and the ONE socket that asked. New frame types are non-mirroring until
28
+ * explicitly added, so a future secret-bearing frame can't leak by default.
29
+ */
30
+ const MIRROR_SAFE_FRAME_TYPES = new Set([
31
+ "say",
32
+ "stream",
33
+ "thinking",
34
+ "echo",
35
+ "turn",
36
+ "turn_anchor",
37
+ "session",
38
+ "agent_status",
39
+ "action",
40
+ "download_progress",
41
+ ]);
21
42
  export class UiBridge {
22
43
  /** Max EADDRINUSE retries before degrading to "panel unavailable". */
23
44
  static MAX_BIND_ATTEMPTS = 5;
@@ -38,7 +59,23 @@ export class UiBridge {
38
59
  * through the same tab/rid logic as the primary bridge; the primary loopback
39
60
  * listener stays token-less so the local browser panel is unaffected. */
40
61
  extraServers = [];
41
- conns = new Map(); // tabId -> connection
62
+ conns = new Map(); // tabId -> connection (canvas-owning primary)
63
+ /** Mobile "mirror" viewers subscribed to a tab's live output (remote control):
64
+ * push()-path frames for a tabId fan out to these IN ADDITION to the primary,
65
+ * so a phone sees the desktop tab's agent activity/renders. They NEVER receive
66
+ * canvas send()-commands (owner-only) and their own correlated replies are
67
+ * socket-scoped. Keyed by the mirrored (primary) tabId. Empty in the normal
68
+ * case → zero effect on existing panel behavior. */
69
+ subscribers = new Map();
70
+ /** A mirroring viewer's socket → the desktop tab it drives. While attached, the
71
+ * viewer's INBOUND events (user_message, interrupt, new_session, …) are routed
72
+ * to THIS tab's shared session instead of the viewer's own — that's what makes
73
+ * it remote control rather than a passive view. Cleared on detach/disconnect. */
74
+ mirrorViewers = new Map();
75
+ /** Injected by the orchestrator: does this tabId have a live agent session?
76
+ * (SessionStore/PanelAgentManager live there.) Flags desktopTabs() for the
77
+ * mobile mirror picker's green "session attached" dot. */
78
+ hasSessionPredicate = null;
42
79
  /**
43
80
  * Tab-id migrations (oldTabId → newTabId). When a panel socket re-hellos under
44
81
  * a NEW tab id (e.g. after a panel update that changed the id scheme from
@@ -331,6 +368,11 @@ export class UiBridge {
331
368
  handleConnection(sock) {
332
369
  // The connection is anonymous until its hello frame names a tab id.
333
370
  let tabId = null;
371
+ // A socket's KIND (canvas-owning panel vs headless viewer) is pinned on its
372
+ // FIRST hello and is authoritative thereafter. The `headless` flag on later
373
+ // hellos is client-controlled, so a headless viewer could otherwise flip it to
374
+ // `false` to pass the same-kind takeover check and seize a desktop tab's id.
375
+ let socketHeadless = null;
334
376
  sock.on("message", (buf) => {
335
377
  const raw = String(buf);
336
378
  let msg;
@@ -370,10 +412,49 @@ export class UiBridge {
370
412
  // re-hello — the ONLY safe rebind trigger; title matching is not).
371
413
  msg.migrated_from = tabId;
372
414
  this.conns.delete(tabId);
415
+ // Move mirror subscribers to the migrated tab id so viewers keep this
416
+ // tab's live feed across a same-socket re-hello.
417
+ const migSubs = this.subscribers.get(tabId);
418
+ if (migSubs) {
419
+ this.subscribers.delete(tabId);
420
+ const dest = this.subscribers.get(msg.tab_id) ?? new Set();
421
+ for (const s of migSubs)
422
+ dest.add(s);
423
+ this.subscribers.set(msg.tab_id, dest);
424
+ }
425
+ // Re-point any viewers driving the OLD id at the new one so their input
426
+ // keeps reaching this tab's session across the re-hello.
427
+ for (const [s, drivenTab] of this.mirrorViewers) {
428
+ if (drivenTab === tabId)
429
+ this.mirrorViewers.set(s, msg.tab_id);
430
+ }
373
431
  }
374
432
  tabId = msg.tab_id;
433
+ // Pin the socket's kind on its first hello; ignore any later flip so the
434
+ // takeover guard below can't be bypassed with a forged `headless` value.
435
+ if (socketHeadless === null) {
436
+ socketHeadless = msg.headless === true;
437
+ }
438
+ const incomingHeadless = socketHeadless;
375
439
  const existing = this.conns.get(tabId);
376
440
  if (existing && existing.sock !== sock) {
441
+ // SECURITY: a viewer must not hello-hijack another client's tab id. The
442
+ // reconnect-supersede path evicts the current holder, so without this a
443
+ // headless phone could re-hello under a DESKTOP's id, kill its socket, and
444
+ // register as that tab — bypassing attach_tab's authoritative stamping and
445
+ // driving the tab it never attached to. Only same-kind reconnects (a real
446
+ // reload: desktop→desktop, phone→phone) may supersede. Cross-kind is refused.
447
+ if (existing.headless !== incomingHeadless) {
448
+ logger.warn(`[ui-bridge] refused cross-kind hello takeover of tab ${tabId.slice(0, 8)} ` +
449
+ `(existing headless=${existing.headless}, incoming headless=${incomingHeadless})`);
450
+ try {
451
+ sock.close();
452
+ }
453
+ catch {
454
+ // Already gone.
455
+ }
456
+ return;
457
+ }
377
458
  // Same tab reconnected (reload) — supersede the stale socket.
378
459
  try {
379
460
  existing.sock.close();
@@ -387,10 +468,11 @@ export class UiBridge {
387
468
  tabId,
388
469
  title: typeof msg.title === "string" && msg.title ? msg.title : "untitled",
389
470
  connectedAt: existing?.connectedAt ?? new Date().toISOString(),
390
- headless: msg.headless === true,
471
+ headless: incomingHeadless,
391
472
  });
392
- if (msg.headless === true)
473
+ if (incomingHeadless)
393
474
  this.headlessSeen.add(tabId);
475
+ this.broadcastTabList(); // a tab connected/reconnected — refresh mirror pickers
394
476
  // Log a real connect ONCE per tab id. A reconnect/ping-pong loop (a new
395
477
  // socket every couple seconds — e.g. two browser contexts sharing one tab
396
478
  // id) would otherwise spam this; dedup by tab id so churn stays at debug.
@@ -445,15 +527,77 @@ export class UiBridge {
445
527
  const conn = this.conns.get(tabId);
446
528
  if (conn && typeof msg.title === "string" && msg.title)
447
529
  conn.title = msg.title;
530
+ this.broadcastTabList(); // a title changed — refresh mirror pickers
531
+ return;
532
+ }
533
+ // Desktop-tab mirroring (mobile remote control). Handled HERE (we hold the
534
+ // requesting socket) so the replies are socket-scoped — never fanned out to
535
+ // other viewers or the primary. Additive: unknown to the desktop panel.
536
+ if (msg.type === "list_tabs") {
537
+ try {
538
+ sock.send(JSON.stringify({ type: "tab_list", cid: msg.cid, tabs: this.desktopTabs() }));
539
+ }
540
+ catch {
541
+ /* socket died — the caller times out */
542
+ }
543
+ return;
544
+ }
545
+ if (msg.type === "attach_tab" && typeof msg.target_tab_id === "string") {
546
+ const target = msg.target_tab_id;
547
+ // Only allow mirroring a real, non-headless desktop tab — reject stale ids
548
+ // and prevent subscribing to another headless (mobile) client.
549
+ const valid = this.conns.has(target) && !this.headlessSeen.has(target);
550
+ if (valid) {
551
+ // A viewer mirrors ONE tab at a time — drop any prior subscription first so
552
+ // re-attaching (A→B) doesn't keep streaming A's activity alongside B's.
553
+ for (const [tid, s] of this.subscribers) {
554
+ if (s.delete(sock) && s.size === 0)
555
+ this.subscribers.delete(tid);
556
+ }
557
+ let set = this.subscribers.get(target);
558
+ if (!set) {
559
+ set = new Set();
560
+ this.subscribers.set(target, set);
561
+ }
562
+ set.add(sock);
563
+ // Route this viewer's inbound events to the mirrored tab (remote control).
564
+ this.mirrorViewers.set(sock, target);
565
+ }
566
+ try {
567
+ sock.send(JSON.stringify({
568
+ type: "tab_attached",
569
+ cid: msg.cid,
570
+ tab_id: target,
571
+ ok: valid,
572
+ ...(valid ? {} : { error: "no such desktop tab" }),
573
+ }));
574
+ }
575
+ catch {
576
+ /* socket died */
577
+ }
578
+ return;
579
+ }
580
+ if (msg.type === "detach_tab") {
581
+ for (const [tid, set] of this.subscribers) {
582
+ if (set.delete(sock) && set.size === 0)
583
+ this.subscribers.delete(tid);
584
+ }
585
+ this.mirrorViewers.delete(sock); // stop routing its input to the mirrored tab
448
586
  return;
449
587
  }
450
- // Panel-initiated event. Stamp the tab and track activity.
588
+ // Panel-initiated event. Stamp the tab and track activity. A mirroring viewer
589
+ // (phone attached to a desktop tab) DRIVES that tab's shared session, so its
590
+ // events route to the mirrored tab id — not the viewer's own — which is what
591
+ // turns the mirror into remote control. Stamping is server-authoritative here
592
+ // (it overwrites any client-supplied tab_id), so a viewer can't target a tab
593
+ // it hasn't attached to.
451
594
  if (typeof msg.type === "string") {
452
- if (tabId) {
453
- msg.tab_id = tabId;
454
- msg.title = this.conns.get(tabId)?.title;
595
+ const effectiveTab = this.mirrorViewers.get(sock) ?? tabId;
596
+ if (effectiveTab) {
597
+ msg.tab_id = effectiveTab;
598
+ msg.title = this.conns.get(effectiveTab)?.title;
455
599
  if (msg.type === "user_message")
456
- this.lastActiveTabId = tabId;
600
+ this.lastActiveTabId = effectiveTab;
457
601
  }
458
602
  this.onPanelMessage?.(msg);
459
603
  }
@@ -466,12 +610,30 @@ export class UiBridge {
466
610
  if (entry.sock === sock)
467
611
  this.tabMigrations.delete(from);
468
612
  }
613
+ // Drop this socket from any mirror subscriptions (it was a viewer).
614
+ for (const [tid, set] of this.subscribers) {
615
+ if (set.delete(sock) && set.size === 0)
616
+ this.subscribers.delete(tid);
617
+ }
618
+ this.mirrorViewers.delete(sock);
619
+ let wasPrimary = false;
469
620
  if (tabId && this.conns.get(tabId)?.sock === sock) {
621
+ wasPrimary = true;
470
622
  this.conns.delete(tabId);
471
623
  if (this.lastActiveTabId === tabId)
472
624
  this.lastActiveTabId = null;
625
+ // The mirrored desktop tab is gone — detach its viewers so their input
626
+ // reverts to their OWN session instead of routing into a dead id (and its
627
+ // output isn't silently buffered forever). They can re-attach if it returns.
628
+ for (const [s, drivenTab] of this.mirrorViewers) {
629
+ if (drivenTab === tabId)
630
+ this.mirrorViewers.delete(s);
631
+ }
632
+ this.subscribers.delete(tabId);
473
633
  logger.info(`[ui-bridge] panel tab disconnected: ${tabId.slice(0, 8)} — ${this.conns.size} tab(s) remain`);
474
634
  }
635
+ if (wasPrimary)
636
+ this.broadcastTabList(); // a desktop tab left — refresh pickers
475
637
  // Reject any in-flight commands that were bound to this socket.
476
638
  for (const [rid, p] of this.pending) {
477
639
  if (p.sock === sock) {
@@ -639,6 +801,46 @@ export class UiBridge {
639
801
  * Truly fire-and-forget: if the target tab has gone, this no-ops (returns 0)
640
802
  * rather than throwing — a throw here becomes an unhandled rejection in the
641
803
  * async push call sites and would crash the orchestrator. */
804
+ /** Inject the "does this tab have a live session?" predicate (SessionStore lives
805
+ * in the orchestrator). */
806
+ setHasSessionPredicate(fn) {
807
+ this.hasSessionPredicate = fn;
808
+ }
809
+ /** The open DESKTOP tabs (non-headless primaries) for the mobile mirror picker. */
810
+ desktopTabs() {
811
+ const out = [];
812
+ for (const [tabId, conn] of this.conns) {
813
+ if (this.headlessSeen.has(tabId))
814
+ continue; // skip mobile/remote viewers
815
+ out.push({
816
+ tab_id: tabId,
817
+ title: conn.title ?? "",
818
+ has_session: this.hasSessionPredicate ? this.hasSessionPredicate(tabId) : false,
819
+ });
820
+ }
821
+ return out;
822
+ }
823
+ /** Push the current desktop-tab list to every mirror subscriber — call when the
824
+ * connected-tab set or a session's live state changes so phones stay in sync. */
825
+ broadcastTabList() {
826
+ if (this.subscribers.size === 0)
827
+ return;
828
+ const frame = JSON.stringify({ type: "tab_list", tabs: this.desktopTabs() });
829
+ const seen = new Set();
830
+ for (const set of this.subscribers.values()) {
831
+ for (const sock of set) {
832
+ if (seen.has(sock) || sock.readyState !== WebSocket.OPEN)
833
+ continue;
834
+ seen.add(sock);
835
+ try {
836
+ sock.send(frame);
837
+ }
838
+ catch {
839
+ /* socket mid-disconnect — drop */
840
+ }
841
+ }
842
+ }
843
+ }
642
844
  push(frame, tabId) {
643
845
  let sent = 0;
644
846
  let targets;
@@ -661,17 +863,46 @@ export class UiBridge {
661
863
  else {
662
864
  targets = Array.from(this.conns.values());
663
865
  }
866
+ const payload = JSON.stringify(frame);
664
867
  for (const conn of targets) {
665
868
  if (conn.sock.readyState !== WebSocket.OPEN)
666
869
  continue;
667
870
  try {
668
- conn.sock.send(JSON.stringify(frame));
871
+ conn.sock.send(payload);
669
872
  sent += 1;
670
873
  }
671
874
  catch {
672
875
  // Tab mid-disconnect — drop.
673
876
  }
674
877
  }
878
+ // Mirror fan-out: also deliver a tab-scoped frame to any phones mirroring this
879
+ // tab (remote control). No-op when nothing is subscribed → existing panel
880
+ // behavior unchanged. The primary is already in `targets`, so skip it here.
881
+ // ONLY shared-session activity frames mirror (allowlist, default-deny) — this
882
+ // is what keeps correlated/secret frames (acks, pair_url, secret_saved, OAuth,
883
+ // history replies, tool_result) with the ONE socket that asked.
884
+ if (tabId && typeof frame.type === "string" && MIRROR_SAFE_FRAME_TYPES.has(frame.type)) {
885
+ // Look subscribers up under the RESOLVED (canonical) tab id: after a
886
+ // migration, agents keep pushing under a tab's ORIGINAL id while its
887
+ // subscribers moved to the new id, so `targets[0]` (the resolved primary)
888
+ // holds the id the viewers are actually keyed under.
889
+ const canonicalId = targets.length === 1 ? targets[0].tabId : tabId;
890
+ const subs = this.subscribers.get(canonicalId);
891
+ if (subs) {
892
+ const primarySock = targets[0]?.sock;
893
+ for (const sock of subs) {
894
+ if (sock === primarySock || sock.readyState !== WebSocket.OPEN)
895
+ continue;
896
+ try {
897
+ sock.send(payload);
898
+ sent += 1;
899
+ }
900
+ catch {
901
+ /* viewer mid-disconnect — drop */
902
+ }
903
+ }
904
+ }
905
+ }
675
906
  return sent;
676
907
  }
677
908
  async stop() {
@@ -1 +1 @@
1
- {"version":3,"file":"ui-bridge.js","sourceRoot":"","sources":["../../src/services/ui-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui-bridge.js","sourceRoot":"","sources":["../../src/services/ui-bridge.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { unlink, writeFile } from "node:fs/promises";
3
3
  import { isLocalMode, config } from "../config.js";
4
4
  import { logger } from "../utils/logger.js";
5
5
  import { downloadModel, resolveExistingModelFile, MODEL_SUBDIRS, } from "../services/model-resolver.js";
6
- import { resolveCivitaiModel, resolveCivitaiModelVersion, buildCivitaiMarkdown, searchCivitaiModels, } from "../services/civitai-resolver.js";
6
+ import { resolveCivitaiModel, resolveCivitaiModelVersion, buildCivitaiMarkdown, searchCivitaiModels, searchCivitaiCreators, fetchCivitaiTopCreators, } from "../services/civitai-resolver.js";
7
7
  import { ValidationError, errorToToolResult } from "../utils/errors.js";
8
8
  /**
9
9
  * Write the CivitAI metadata sidecars next to a freshly downloaded model:
@@ -81,9 +81,21 @@ export function registerModelExtrasTools(server) {
81
81
  "the user's checkpoint family is known, so results actually fit their setup. Each hit returns the " +
82
82
  "model_id and version_id that download_civitai_model takes directly, plus trigger words to use in the " +
83
83
  "prompt after installing. Flow: search_civitai_models → pick a hit → download_civitai_model " +
84
- "{model_version_id, target_subfolder} → wire/prompt with the trained words. SFW-only by default. " +
85
- "For HuggingFace search use search_models.", {
86
- query: z.string().min(1).describe("Keyword search (e.g. 'detail enhancer', 'anime style', a character name)"),
84
+ "{model_version_id, target_subfolder} → wire/prompt with the trained words. Pass `creator` (exact " +
85
+ "username, e.g. from search_civitai_creators) to list ONE creator's models — with or without a query. " +
86
+ "SFW-only by default. For HuggingFace search use search_models.", {
87
+ query: z
88
+ .string()
89
+ .min(1)
90
+ .optional()
91
+ .describe("Keyword search (e.g. 'detail enhancer', 'anime style', a character name). " +
92
+ "Optional when creator is given (then it narrows that creator's models)."),
93
+ creator: z
94
+ .string()
95
+ .min(1)
96
+ .optional()
97
+ .describe("Only models by this CivitAI creator (EXACT username — find it with " +
98
+ "search_civitai_creators). At least one of query/creator is required."),
87
99
  types: z
88
100
  .array(z.enum(["Checkpoint", "LORA", "LoCon", "DoRA", "TextualInversion", "VAE", "Controlnet", "Upscaler", "MotionModule", "Workflows"]))
89
101
  .optional()
@@ -100,21 +112,41 @@ export function registerModelExtrasTools(server) {
100
112
  limit: z.number().int().min(1).max(25).optional().describe("Max results (default 10)."),
101
113
  }, async (args) => {
102
114
  try {
103
- const hits = await searchCivitaiModels(args.query, {
115
+ if (!args.query?.trim() && !args.creator?.trim()) {
116
+ throw new ValidationError("Provide a query, a creator (exact username), or both.");
117
+ }
118
+ const { hits, scanned, scanCapped } = await searchCivitaiModels(args.query ?? "", {
104
119
  types: args.types,
105
120
  baseModels: args.base_models,
106
121
  sort: args.sort,
107
122
  nsfw: args.nsfw,
108
123
  limit: args.limit,
124
+ creator: args.creator,
109
125
  });
126
+ // Creator+keyword scans are bounded (client-side keyword filter over
127
+ // paged results) — never present a capped miss as definitive.
128
+ const capNote = scanCapped
129
+ ? `\nNOTE: the keyword was matched client-side over only this creator's first ${scanned} models (scan cap) — matching models past that may exist. Narrow with types/base_models, or drop the query to list everything.`
130
+ : "";
131
+ const what = [
132
+ args.query?.trim() && `"${args.query}"`,
133
+ args.creator?.trim() && `creator ${args.creator}`,
134
+ ]
135
+ .filter(Boolean)
136
+ .join(" by ");
110
137
  if (hits.length === 0) {
111
138
  return {
112
139
  content: [
113
140
  {
114
141
  type: "text",
115
- text: `No CivitAI models matched "${args.query}"` +
142
+ text: `No CivitAI models matched ${what}` +
116
143
  (args.base_models?.length ? ` for base ${args.base_models.join("/")}` : "") +
117
- `. Try a broader query, drop the filters, or search HuggingFace with search_models.`,
144
+ `. Try a broader query, drop the filters` +
145
+ (args.creator
146
+ ? `, check the exact username with search_civitai_creators (creators with only NSFW models need nsfw:true)`
147
+ : "") +
148
+ `, or search HuggingFace with search_models.` +
149
+ capNote,
118
150
  },
119
151
  ],
120
152
  };
@@ -142,8 +174,9 @@ export function registerModelExtrasTools(server) {
142
174
  content: [
143
175
  {
144
176
  type: "text",
145
- text: `${hits.length} CivitAI result(s) for "${args.query}":\n\n${lines.join("\n\n")}\n\n` +
177
+ text: `${hits.length} CivitAI result(s) for ${what}:\n\n${lines.join("\n\n")}\n\n` +
146
178
  `Next: download_civitai_model {"model_version_id": <id>, "target_subfolder": "<loras|checkpoints|...>"} — then use the trigger words in the prompt.` +
179
+ capNote +
147
180
  tokenNote,
148
181
  },
149
182
  ],
@@ -153,6 +186,91 @@ export function registerModelExtrasTools(server) {
153
186
  return errorToToolResult(err);
154
187
  }
155
188
  });
189
+ server.tool("search_civitai_creators", "Find CivitAI CREATORS — THE tool for 'who are the top creators on Civitai' and 'find creator <name>'. " +
190
+ "Read-only and network-only (no token or running ComfyUI required). Two modes: with NO query it returns " +
191
+ "the site's creator LEADERBOARD (civitai.com/leaderboard — rank, score, downloads, likes; pick a `board`: " +
192
+ "'overall' [default], 'overall_90' [last 90 days], 'overall_nsfw' [mature], 'new_creators' [first model " +
193
+ "<30 days ago]); with a `query` it searches usernames (public /api/v1/creators; partial match, returns " +
194
+ "model counts, NOT ranked). Each hit's username feeds search_civitai_models {creator: <username>} " +
195
+ "directly. Flow: search_civitai_creators → pick a creator → search_civitai_models {creator, types?} → " +
196
+ "download_civitai_model.", {
197
+ query: z
198
+ .string()
199
+ .min(1)
200
+ .optional()
201
+ .describe("Username search (partial match, e.g. 'alcait'). Omit to get the top-creators leaderboard instead."),
202
+ board: z
203
+ .enum(["overall", "overall_90", "overall_nsfw", "new_creators"])
204
+ .optional()
205
+ .describe("Leaderboard to rank by when no query is given (default 'overall'). Ignored with a query."),
206
+ limit: z.number().int().min(1).max(50).optional().describe("Max results (default 10)."),
207
+ }, async (args) => {
208
+ try {
209
+ if (args.query?.trim()) {
210
+ const { hits, total } = await searchCivitaiCreators(args.query, {
211
+ limit: args.limit,
212
+ });
213
+ if (hits.length === 0) {
214
+ return {
215
+ content: [
216
+ {
217
+ type: "text",
218
+ text: `No CivitAI creators matched "${args.query}". Usernames match on substrings — ` +
219
+ `try a shorter fragment, or omit the query for the top-creators leaderboard.`,
220
+ },
221
+ ],
222
+ };
223
+ }
224
+ const lines = hits.map((h, i) => `${i + 1}. **${h.username}** — ${h.model_count ?? 0} model(s) · ${h.profile_url}`);
225
+ return {
226
+ content: [
227
+ {
228
+ type: "text",
229
+ text: `${hits.length} CivitAI creator(s) for "${args.query}"` +
230
+ (total != null ? ` (${total.toLocaleString()} total match${total === 1 ? "" : "es"})` : "") +
231
+ `:\n\n${lines.join("\n")}\n\n` +
232
+ `Next: search_civitai_models {"creator": "<username>"} to list a creator's models.`,
233
+ },
234
+ ],
235
+ };
236
+ }
237
+ const board = args.board ?? "overall";
238
+ const hits = await fetchCivitaiTopCreators({ board, limit: args.limit });
239
+ if (hits.length === 0) {
240
+ return {
241
+ content: [
242
+ {
243
+ type: "text",
244
+ text: `CivitAI returned an empty "${board}" leaderboard. Try again later or search by name with a query.`,
245
+ },
246
+ ],
247
+ };
248
+ }
249
+ const lines = hits.map((h) => {
250
+ const stats = [
251
+ h.score != null && `score ${h.score.toLocaleString()}`,
252
+ h.downloads != null && `${h.downloads.toLocaleString()} downloads`,
253
+ h.thumbs_up != null && `${h.thumbs_up.toLocaleString()} 👍`,
254
+ h.entries != null && `${h.entries} model(s) counted`,
255
+ ]
256
+ .filter(Boolean)
257
+ .join(" · ");
258
+ return `${h.position ?? "?"}. **${h.username}** — ${stats}\n ${h.profile_url}`;
259
+ });
260
+ return {
261
+ content: [
262
+ {
263
+ type: "text",
264
+ text: `Top ${hits.length} CivitAI creators ("${board}" leaderboard):\n\n${lines.join("\n\n")}\n\n` +
265
+ `Next: search_civitai_models {"creator": "<username>"} to list a creator's models, then download_civitai_model.`,
266
+ },
267
+ ],
268
+ };
269
+ }
270
+ catch (err) {
271
+ return errorToToolResult(err);
272
+ }
273
+ });
156
274
  server.tool("download_civitai_model", "Download a model from CivitAI into the connected ComfyUI's models/ directory. " +
157
275
  "Resolves a CivitAI model id (latest version) or a model-version id to a download " +
158
276
  "URL via the CivitAI REST API. LOCAL ComfyUI (COMFYUI_PATH set): streams the file " +