comfyui-mcp 0.52.14 → 0.52.16

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 (42) hide show
  1. package/dist/orchestrator/agent-backend.js +17 -0
  2. package/dist/orchestrator/agent-backend.js.map +1 -1
  3. package/dist/orchestrator/backend-readiness.js +43 -0
  4. package/dist/orchestrator/backend-readiness.js.map +1 -1
  5. package/dist/orchestrator/index.js +136 -39
  6. package/dist/orchestrator/index.js.map +1 -1
  7. package/dist/orchestrator/panel-tools.js +228 -75
  8. package/dist/orchestrator/panel-tools.js.map +1 -1
  9. package/dist/orchestrator/qwen-backend.js +1029 -0
  10. package/dist/orchestrator/qwen-backend.js.map +1 -0
  11. package/dist/orchestrator/rgthree-fast-groups-property.js +53 -0
  12. package/dist/orchestrator/rgthree-fast-groups-property.js.map +1 -0
  13. package/dist/services/api-nodes.js +24 -4
  14. package/dist/services/api-nodes.js.map +1 -1
  15. package/dist/services/comfy-view-ref.js +236 -4
  16. package/dist/services/comfy-view-ref.js.map +1 -1
  17. package/dist/services/frontend-virtual-types.js +178 -0
  18. package/dist/services/frontend-virtual-types.js.map +1 -0
  19. package/dist/services/node-management.js +98 -21
  20. package/dist/services/node-management.js.map +1 -1
  21. package/dist/services/panel-origin-channel.js +71 -53
  22. package/dist/services/panel-origin-channel.js.map +1 -1
  23. package/dist/services/ui-bridge.js +53 -7
  24. package/dist/services/ui-bridge.js.map +1 -1
  25. package/dist/tools/vocabulary.js +1 -1
  26. package/docs/design/panel-surface.txt +1 -0
  27. package/locales/ar/main.json +2 -1
  28. package/locales/en/main.json +2 -1
  29. package/locales/es/main.json +2 -1
  30. package/locales/fa/main.json +2 -1
  31. package/locales/fr/main.json +2 -1
  32. package/locales/ja/main.json +2 -1
  33. package/locales/ko/main.json +2 -1
  34. package/locales/pt-BR/main.json +2 -1
  35. package/locales/ru/main.json +2 -1
  36. package/locales/tr/main.json +2 -1
  37. package/locales/zh/main.json +2 -1
  38. package/locales/zh-TW/main.json +2 -1
  39. package/package.json +1 -1
  40. package/plugin/skills/rgthree/SKILL.md +26 -1
  41. package/scripts/codex-knowledge-parity-smoke.mjs +1 -1
  42. package/scripts/knowledge-parity-mock-graph.mjs +6 -0
@@ -134,6 +134,23 @@ export const GROK_CAPABILITIES = {
134
134
  audio: false,
135
135
  turnMarkers: true, // stampTurn() wraps each per-turn stream
136
136
  };
137
+ /** Capability descriptor for the Qwen Code CLI ACP backend (`qwen --acp`,
138
+ * issue #1417). Same ACP posture as Gemini: persistent session, streaming
139
+ * deltas, interrupt via session/cancel, config-declared MCP servers, static
140
+ * model catalog pinned at spawn. */
141
+ export const QWEN_CAPABILITIES = {
142
+ persistentChannel: true, // session/new + repeated session/prompt
143
+ streamingDeltas: true, // session/update agent_message_chunk / agent_thought_chunk
144
+ interruptMidTurn: true, // session/cancel
145
+ forkAtAnchor: false, // session/load is whole-session only (no anchor fork)
146
+ inProcessMcp: false, // ACP session/new declares config MCP servers only
147
+ modelEnumeration: true, // static catalog — ACP exposes no catalog
148
+ slashCommands: false,
149
+ hooks: false,
150
+ vision: true, // delivered as inline base64 image ContentBlocks (when the agent advertises image input)
151
+ audio: false, // same overclaim rationale as GEMINI_CAPABILITIES.audio (#790)
152
+ turnMarkers: true, // stampTurn() wraps each per-turn stream
153
+ };
137
154
  /** Capability descriptor for the Ollama local-LLM backend (issue #97's panel
138
155
  * phase). Ollama is a stateless HTTP daemon, so the backend owns the whole
139
156
  * agentic loop itself (stream /api/chat, dispatch tool calls, repeat) and
@@ -1 +1 @@
1
- {"version":3,"file":"agent-backend.js","sourceRoot":"","sources":["../../src/orchestrator/agent-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-backend.js","sourceRoot":"","sources":["../../src/orchestrator/agent-backend.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ const CLI_NAMES = {
27
27
  codex: ["codex", "codex.cmd", "codex.exe"],
28
28
  gemini: ["gemini", "gemini.cmd", "gemini.exe"],
29
29
  grok: ["grok", "grok.cmd", "grok.exe"],
30
+ qwen: ["qwen", "qwen.cmd", "qwen.exe"],
30
31
  pi: ["pi", "pi.exe"], // no .cmd — Node can't shell-lessly spawn it (see resolvePiBin)
31
32
  ollama: ["ollama", "ollama.exe"],
32
33
  lmstudio: ["lms", "lms.exe"],
@@ -103,6 +104,25 @@ function geminiSettingsUsesApiKey(geminiHome) {
103
104
  return false;
104
105
  }
105
106
  }
107
+ /** True if <home>/.qwen/settings.json selects an auth type
108
+ * (security.auth.selectedType is a non-empty string) — the env-independent
109
+ * "configured" signal for Qwen Code, mirroring geminiSettingsUsesApiKey. `/auth`
110
+ * writes it and it persists across processes, unlike DASHSCOPE_API_KEY which
111
+ * the orchestrator only inherits if set before launch. A stale or keyless
112
+ * selection still surfaces via the connect ack's model probe (degraded), same
113
+ * as every other provider. Never throws — a missing/corrupt file just means
114
+ * "no signal". */
115
+ function qwenSettingsConfigured(home) {
116
+ try {
117
+ const raw = readFileSync(join(home, ".qwen", "settings.json"), "utf8");
118
+ const parsed = JSON.parse(raw);
119
+ const t = parsed?.security?.auth?.selectedType;
120
+ return typeof t === "string" && t.trim().length > 0;
121
+ }
122
+ catch {
123
+ return false;
124
+ }
125
+ }
106
126
  function fileExists(...parts) {
107
127
  try {
108
128
  return existsSync(join(...parts));
@@ -333,6 +353,29 @@ export function backendReadiness(backend, opts) {
333
353
  hasValidPanelOAuth("grok", panelOAuthRecords(opts), nowMs);
334
354
  return { backend: "grok", cli, auth, ready: cli && auth };
335
355
  }
356
+ if (b === "qwen") {
357
+ // Qwen Code CLI (`qwen --acp`, issue #1417). `.cmd` IS probed — unlike pi,
358
+ // we spawn through the shell on Windows (see qwen-backend resolveSpawn), so
359
+ // a `qwen.cmd` shim is genuinely runnable. Auth (the CLI owns it) reads as
360
+ // present when ANY of: a Qwen-side key is in the orchestrator's env
361
+ // (DASHSCOPE_API_KEY / BAILIAN_CODING_PLAN_API_KEY / OPENAI_API_KEY), cached
362
+ // OAuth creds exist at <home>/.qwen/oauth_creds.json (the free tier ended
363
+ // 2026-04-15, but a Coding Plan key configured via /auth lands in
364
+ // settings.json — covered by the next signal), or ~/.qwen/settings.json
365
+ // selects an auth type (the env-independent "configured" signal, mirroring
366
+ // the gemini branch's settings check — this also covers the generic
367
+ // OPENAI_API_KEY + selectedType:"openai" setup, which a bare env probe
368
+ // can't distinguish from an unrelated OPENAI_API_KEY the user set for
369
+ // something else). A stale/bad credential still surfaces via the connect
370
+ // ack's model probe → degraded, same as every other provider.
371
+ const cli = onPath(CLI_NAMES.qwen);
372
+ const envKey = !!(process.env.DASHSCOPE_API_KEY?.trim() ||
373
+ process.env.BAILIAN_CODING_PLAN_API_KEY?.trim());
374
+ const auth = envKey ||
375
+ fileExists(home, ".qwen", "oauth_creds.json") ||
376
+ qwenSettingsConfigured(home);
377
+ return { backend: "qwen", cli, auth, ready: cli && auth };
378
+ }
336
379
  if (b === "copilot") {
337
380
  // No external CLI/native-file concept for Copilot — the in-panel device-
338
381
  // code OAuth (experimental, gated behind allow_experimental in
@@ -1 +1 @@
1
- {"version":3,"file":"backend-readiness.js","sourceRoot":"","sources":["../../src/orchestrator/backend-readiness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend-readiness.js","sourceRoot":"","sources":["../../src/orchestrator/backend-readiness.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,9 @@ import { dirname, join } from "node:path";
15
15
  import { fileURLToPath } from "node:url";
16
16
  import { randomBytes } from "node:crypto";
17
17
  import readline from "node:readline";
18
- import { startUiBridge, isLoopbackBindHost, isMirrorSafeFrameType, SESSION_EPOCH, } from "../services/ui-bridge.js";
18
+ import { startUiBridge, isLoopbackBindHost, isMirrorSafeFrameType, isUnknownCommandReply, isPanelCmdUnsupportedError, SESSION_EPOCH, } from "../services/ui-bridge.js";
19
+ import { canonicalOrigin } from "../utils/origin.js";
20
+ import { publishFrontendVirtualTypes, } from "../services/frontend-virtual-types.js";
19
21
  import { setupSecureBridge, resolveComfyuiPathForTarget } from "../services/secure-bridge.js";
20
22
  import { judgeHelloRetarget, canonComfyuiTargetUrl } from "../services/hello-retarget.js";
21
23
  import { startQuickTunnel } from "../services/tunnel.js";
@@ -93,6 +95,7 @@ import { GeminiBackend, GEMINI_DEFAULT_MODEL } from "./gemini-backend.js";
93
95
  import { AntigravityBackend } from "./antigravity-backend.js";
94
96
  import { PiBackend } from "./pi-backend.js";
95
97
  import { GrokBackend, GROK_DEFAULT_MODEL } from "./grok-backend.js";
98
+ import { QwenBackend, QWEN_DEFAULT_MODEL } from "./qwen-backend.js";
96
99
  import { OllamaBackend, OLLAMA_SYSTEM_PROMPT } from "./ollama-backend.js";
97
100
  import { ChatGptOAuthBackend, CHATGPT_DEFAULT_MODEL } from "./chatgpt-oauth-backend.js";
98
101
  import { KimiBackend } from "./kimi-backend.js";
@@ -192,7 +195,7 @@ OPENING A STAGED / DOWNLOADED WORKFLOW. When you've saved or downloaded a workfl
192
195
 
193
196
  RESOLVING A TANGLED / TOGGLE-HEAVY WORKFLOW (Get/Set buses + rgthree-bypassed pipelines). Expert and community graphs are often thick with VIRTUAL WIRING — GetNode/SetNode buses and Reroutes that hide the real connections — and rgthree "Fast Groups Bypasser/Muter" TOGGLED PIPELINES (one graph holding several pipelines, only one active at a time). Do NOT hand-trace GetNode→SetNode links or guess which branches are live. To get the REAL wiring: call panel_strip_workflow(path:<file> | pack:<name> | graph:<json>) — it resolves Get/Set buses, Reroutes, subgraph definitions, and bypassed/muted nodes into REAL connections and returns the flat, runnable graph (read server-side, never shuttled through chat). If the file is a MULTI-PIPELINE monolith and you only want ONE pipeline, FIRST panel_slice_workflow(path:<file>, groups:[<group-title substrings>]) to carve that pipeline into a standalone activated graph (it seeds from the output nodes in those groups, takes their backward closure through links + Set/Get buses, and un-bypasses the kept nodes), THEN panel_strip_workflow to flatten the buses. Reach for panel_strip_workflow whenever a graph is too tangled to read directly or you need to UNDERSTAND or REBUILD its actual wiring (e.g. a staged expert example full of GetNode/SetNode/Reroute); reach for panel_slice_workflow when an ULTRA-style monolith bundles several toggled pipelines and you want just one. (The same two tools exist as the MCP get_workflow (action:"strip") / get_workflow (action:"slice") for non-panel sessions.)
194
197
 
195
- AUTHORING rgthree TOGGLES (the counterpart to reading them, above). Fast Groups Bypasser/Muter are FRONTEND-ONLY — registered by the pack's JS and absent from /object_info BY DESIGN, so their absence there is NOT evidence they're unavailable; panel_add_node adds them (it exempts a small allowlist of genuinely frontend-only types, which covers the Fast (Groups) Bypasser/Muter, Label, Reroute and Node Collector — but NOT Bookmark, the Mute/Bypass Relay/Repeater, Fast Actions Button or Random Unmuter, which it refuses fail-closed). They are configured with panel_set_property, NOT panel_set_widget (matchTitle/matchColors/sort/toggleRestriction are node PROPERTIES; panel_set_widget refuses them). They take no wiring and enumerate GROUPS by title, so create and NAME the groups FIRST, and always set matchTitle or the node lists every group in the workflow. Group membership is GEOMETRIC (any node whose centre lands in the box) — when panel_create_group returns extra_node_ids/missing_node_ids and a warning, FIX IT before toggling, or a toggle disables part of the wrong stage. Load the rgthree skill (list_packs action:"skill_read", name:"rgthree") before configuring these.
198
+ AUTHORING rgthree TOGGLES (the counterpart to reading them, above). Fast Groups Bypasser/Muter are FRONTEND-ONLY — registered by the pack's JS and absent from /object_info BY DESIGN, so their absence there is NOT evidence they're unavailable; panel_add_node adds them (it exempts a small allowlist of genuinely frontend-only types, which covers the Fast (Groups) Bypasser/Muter, Label, Reroute and Node Collector — but NOT Bookmark, the Mute/Bypass Relay/Repeater, Fast Actions Button or Random Unmuter, which it refuses fail-closed). They are configured with panel_set_property, NOT panel_set_widget (matchTitle/matchColors/sort/toggleRestriction are node PROPERTIES; panel_set_widget refuses them). They take no wiring and enumerate GROUPS by title, so create and NAME the groups FIRST, and always set matchTitle or the node lists every group in the workflow. Set matchTitle immediately after add_node, then re-read the node: Fast Groups do NOT implement onPropertyChanged, so the first write stores the filter but may leave leftover Enable rows or widgets:{} (unbuilt, not 'no matches'). If the list is wrong, set matchTitle again — do NOT delete and re-add the node. Group membership is GEOMETRIC (any node whose centre lands in the box) — when panel_create_group returns extra_node_ids/missing_node_ids and a warning, FIX IT before toggling, or a toggle disables part of the wrong stage. Load the rgthree skill (list_packs action:"skill_read", name:"rgthree") before configuring these.
196
199
 
197
200
  LORA MANAGER AUTOCOMPLETE NODES. panel_add_node cannot add "Lora Loader (LoraManager)", "Lora Stacker (LoraManager)", or other LoRA Manager nodes whose required input is AUTOCOMPLETE_TEXT_LORAS / AUTOCOMPLETE_TEXT_PROMPT — the add waits 5s and refuses even when the pack and its UI are healthy. That is not a missing extension: reload, panel_refresh_nodes, and retry will keep failing. Use "LoRA Text Loader (LoraManager)" (lora_syntax is a STRING socket you can drive) or core LoraLoader. Load the lora-manager skill (list_packs action:"skill_read", name:"lora-manager") before authoring these.
198
201
 
@@ -1402,6 +1405,10 @@ export async function runPanelOrchestrator() {
1402
1405
  const piModel = process.env.COMFYUI_MCP_PI_MODEL;
1403
1406
  const piProvider = process.env.COMFYUI_MCP_PI_PROVIDER;
1404
1407
  const grokModel = process.env.COMFYUI_MCP_GROK_MODEL ?? GROK_DEFAULT_MODEL;
1408
+ // Qwen Code (issue #1417): same spawn-pinned posture as Gemini — the panel
1409
+ // model is a Claude id, so the Qwen model comes from COMFYUI_MCP_QWEN_MODEL
1410
+ // (default qwen3-coder-plus), applied at spawn via the CLI `--model` flag.
1411
+ const qwenModel = process.env.COMFYUI_MCP_QWEN_MODEL ?? QWEN_DEFAULT_MODEL;
1405
1412
  // Ollama (local LLMs, issue #97): the model is a local tag applied PER
1406
1413
  // REQUEST — switching live is free. Default = OUR FINE-TUNE,
1407
1414
  // artokun/gemma4-comfyui-mcp:e4b — gemma4 QLoRA-trained on 1055
@@ -1539,6 +1546,7 @@ export async function runPanelOrchestrator() {
1539
1546
  "antigravity",
1540
1547
  "pi",
1541
1548
  "grok",
1549
+ "qwen",
1542
1550
  // Simple api-key providers (glm/kimi/moonshot) come from the registry.
1543
1551
  ...OPENAI_KEY_PROVIDER_IDS,
1544
1552
  "ollama",
@@ -1755,6 +1763,58 @@ export async function runPanelOrchestrator() {
1755
1763
  // mirror-image lie: claiming to be a build we are not running.
1756
1764
  const mcpVersionRunning = MCP_VERSION_RUNNING;
1757
1765
  let latestPanelVersion;
1766
+ // #1400 — the frontend VIRTUAL-node registry each connected canvas-owning tab
1767
+ // has PROVEN (its `graph_get_virtual_types` answer: the registered classes that
1768
+ // set `isVirtualNode === true`, the flag ComfyUI's own serializer reads to keep
1769
+ // a node out of the prompt). The headless `check_runtime` in the spawned tool
1770
+ // servers cannot see a browser registry, so each hello pulls this and the poll
1771
+ // tick republishes it through the progress-dir channel the children read
1772
+ // (services/frontend-virtual-types.ts).
1773
+ //
1774
+ // Keyed by the tab's SERVER-OBSERVED handshake origin (bridge.tabServerOrigin),
1775
+ // NEVER the hello's client-supplied comfyui_url claim — page JS can write the
1776
+ // claim but cannot forge the browser's Origin header (the #756 trust model), so
1777
+ // a tab can only annotate the server it provably fronts. A failed or refused
1778
+ // pull keeps the PREVIOUS answer for the origin; only an ok:true reply
1779
+ // replaces it, so a transient error never erases known-good proof.
1780
+ const frontendVirtualTypesByOrigin = new Map();
1781
+ // Panel versions that PROVED they lack the command (an Unknown-command reply or
1782
+ // the proactive too-old refusal), so an old panel is asked once per process,
1783
+ // not once per hello. Keyed by version, not tab: a panel UPDATE keeps the tab
1784
+ // but moves the version, and must be asked again.
1785
+ const virtualTypesUnsupportedPanelVersions = new Set();
1786
+ async function pullFrontendVirtualTypes(tabId, panelVersion) {
1787
+ // A headless (mobile/mirror) client fronts no canvas registry.
1788
+ if (bridge.isCurrentHeadless(tabId))
1789
+ return;
1790
+ if (panelVersion && virtualTypesUnsupportedPanelVersions.has(panelVersion))
1791
+ return;
1792
+ const origin = bridge.tabServerOrigin(tabId);
1793
+ // No proven handshake origin → the answer would be keyed on a claim. Skip:
1794
+ // an unkeyed registry is not evidence about any server.
1795
+ if (!origin)
1796
+ return;
1797
+ try {
1798
+ const reply = (await bridge.send({ cmd: "graph_get_virtual_types" }, { tabId }));
1799
+ // ok:false (the panel could not read its own registry) or a malformed
1800
+ // answer keeps the previous entry rather than replacing it with nothing.
1801
+ if (reply?.ok !== true || !Array.isArray(reply.virtual_types))
1802
+ return;
1803
+ const types = reply.virtual_types.filter((t) => typeof t === "string" && t !== "");
1804
+ frontendVirtualTypesByOrigin.set(canonicalOrigin(origin) ?? origin, types);
1805
+ }
1806
+ catch (err) {
1807
+ // A panel that predates the command is a STABLE fact for this process —
1808
+ // remember the version and stop re-asking on every hello. Any other
1809
+ // failure (timeout, mid-restart socket drop) is transient: the previous
1810
+ // answer stands and the next hello retries.
1811
+ if (isPanelCmdUnsupportedError(err, "graph_get_virtual_types") ||
1812
+ isUnknownCommandReply(err instanceof Error ? err.message : String(err))) {
1813
+ if (panelVersion)
1814
+ virtualTypesUnsupportedPanelVersions.add(panelVersion);
1815
+ }
1816
+ }
1817
+ }
1758
1818
  let panelSystemAppend = resolvePanelPersona();
1759
1819
  // Set once the manager exists so a later refresh (after a ComfyUI restart) feeds
1760
1820
  // the freshly-gathered env into newly-spawned agents too — Claude reads
@@ -2052,6 +2112,15 @@ export async function runPanelOrchestrator() {
2052
2112
  mcpServers: makeHttpBackendMcpServers(key),
2053
2113
  });
2054
2114
  }
2115
+ if (backend === "qwen") {
2116
+ return new QwenBackend({
2117
+ cwd: comfyuiPath ?? process.cwd(),
2118
+ model: qwenModel,
2119
+ systemAppend: sysAppend,
2120
+ comfyuiUrl,
2121
+ mcpServers: makeHttpBackendMcpServers(key),
2122
+ });
2123
+ }
2055
2124
  if (backend === "ollama") {
2056
2125
  return new OllamaBackend({
2057
2126
  cwd: comfyuiPath ?? process.cwd(),
@@ -2151,7 +2220,7 @@ export async function runPanelOrchestrator() {
2151
2220
  }
2152
2221
  };
2153
2222
  logger.info(`[panel-orchestrator] single-port multi-provider: default backend=${defaultBackend}; ` +
2154
- `codex/gemini/grok panel_* live-graph tools via loopback HTTP MCP${panelMcpHttp ? ` on :${panelMcpHttp.port}` : " UNAVAILABLE"} + headless comfyui MCP`);
2223
+ `codex/gemini/grok/qwen panel_* live-graph tools via loopback HTTP MCP${panelMcpHttp ? ` on :${panelMcpHttp.port}` : " UNAVAILABLE"} + headless comfyui MCP`);
2155
2224
  // Readiness/model probing routes through the SELECTED backend PER TAB — a
2156
2225
  // codex/gemini tab's "ready" must NOT depend on Claude SDK/login health. Claude
2157
2226
  // uses fetchSupportedModels(); codex/gemini spin up a throwaway probe backend
@@ -2188,17 +2257,19 @@ export async function runPanelOrchestrator() {
2188
2257
  })
2189
2258
  : backend === "grok"
2190
2259
  ? new GrokBackend({ cwd: comfyuiPath ?? process.cwd(), model: grokModel })
2191
- : backend === "openrouter"
2192
- ? new OllamaBackend({ cwd: comfyuiPath ?? process.cwd(), model: openrouterModel, ...openrouterDeps() })
2193
- : backend === "lmstudio"
2194
- ? new OllamaBackend({ cwd: comfyuiPath ?? process.cwd(), model: lmstudioModel, ...lmstudioDeps() })
2195
- : backend === "llamacpp"
2196
- ? new OllamaBackend({ cwd: comfyuiPath ?? process.cwd(), model: llamacppModel, ...llamacppDeps() })
2197
- : backend === "custom"
2198
- ? new OllamaBackend({ cwd: comfyuiPath ?? process.cwd(), model: customModel, ...customDeps() })
2199
- : backend === "copilot"
2200
- ? new CopilotBackend({ cwd: comfyuiPath ?? process.cwd(), model: copilotModel })
2201
- : new GeminiBackend({ cwd: comfyuiPath ?? process.cwd(), model: geminiModel });
2260
+ : backend === "qwen"
2261
+ ? new QwenBackend({ cwd: comfyuiPath ?? process.cwd(), model: qwenModel })
2262
+ : backend === "openrouter"
2263
+ ? new OllamaBackend({ cwd: comfyuiPath ?? process.cwd(), model: openrouterModel, ...openrouterDeps() })
2264
+ : backend === "lmstudio"
2265
+ ? new OllamaBackend({ cwd: comfyuiPath ?? process.cwd(), model: lmstudioModel, ...lmstudioDeps() })
2266
+ : backend === "llamacpp"
2267
+ ? new OllamaBackend({ cwd: comfyuiPath ?? process.cwd(), model: llamacppModel, ...llamacppDeps() })
2268
+ : backend === "custom"
2269
+ ? new OllamaBackend({ cwd: comfyuiPath ?? process.cwd(), model: customModel, ...customDeps() })
2270
+ : backend === "copilot"
2271
+ ? new CopilotBackend({ cwd: comfyuiPath ?? process.cwd(), model: copilotModel })
2272
+ : new GeminiBackend({ cwd: comfyuiPath ?? process.cwd(), model: geminiModel });
2202
2273
  probeBackends.set(backend, pb);
2203
2274
  }
2204
2275
  catch (err) {
@@ -3237,6 +3308,8 @@ export async function runPanelOrchestrator() {
3237
3308
  return piModel;
3238
3309
  if (backend === "grok")
3239
3310
  return grokModel;
3311
+ if (backend === "qwen")
3312
+ return qwenModel;
3240
3313
  if (backend === "ollama")
3241
3314
  return ollamaModel;
3242
3315
  if (backend === "openrouter")
@@ -3412,6 +3485,10 @@ export async function runPanelOrchestrator() {
3412
3485
  latestPanelVersion = helloPanelVer;
3413
3486
  void refreshEnvCapabilities();
3414
3487
  }
3488
+ // #1400 — pull this tab's proven frontend-virtual registry for the
3489
+ // check_runtime channel. On EVERY hello, not just the first: a page reload
3490
+ // is how a pack's frontend JS arrives or leaves, and the reload re-hellos.
3491
+ void pullFrontendVirtualTypes(panelTab, typeof helloPanelVer === "string" && helloPanelVer ? helloPanelVer : undefined);
3415
3492
  // #236 — THE VOCABULARY HANDSHAKE, at the handshake.
3416
3493
  //
3417
3494
  // `describeVocabularySkew` and the hash it compares have existed, fully
@@ -3863,6 +3940,7 @@ export async function runPanelOrchestrator() {
3863
3940
  const isAg = backend === "antigravity";
3864
3941
  const isPi = backend === "pi";
3865
3942
  const isGk = backend === "grok";
3943
+ const isQw = backend === "qwen";
3866
3944
  // glm/kimi/moonshot share one registry-driven ack (label + ready + degraded).
3867
3945
  const reg = openAiKeyProvider(backend);
3868
3946
  const isOl = backend === "ollama";
@@ -3941,19 +4019,21 @@ export async function runPanelOrchestrator() {
3941
4019
  ? (piModel ?? models[0].value ?? "Pi")
3942
4020
  : isGk
3943
4021
  ? (grokModel ?? models[0].value ?? "Grok")
3944
- : isOl
3945
- ? (ollamaModel ?? models[0].value ?? "Ollama")
3946
- : isLs
3947
- ? (lmstudioModel || (models[0].value ?? "LM Studio"))
3948
- : isLc
3949
- ? (llamacppModel || (models[0].value ?? "llama.cpp"))
3950
- : isCu
3951
- ? (customModel || (models[0].value ?? "Custom endpoint"))
3952
- : isOr
3953
- ? (openrouterModel ?? models[0].value ?? "OpenRouter")
3954
- : isCp
3955
- ? (copilotModel ?? models[0].value ?? "Copilot")
3956
- : model;
4022
+ : isQw
4023
+ ? (qwenModel ?? models[0].value ?? "Qwen Code")
4024
+ : isOl
4025
+ ? (ollamaModel ?? models[0].value ?? "Ollama")
4026
+ : isLs
4027
+ ? (lmstudioModel || (models[0].value ?? "LM Studio"))
4028
+ : isLc
4029
+ ? (llamacppModel || (models[0].value ?? "llama.cpp"))
4030
+ : isCu
4031
+ ? (customModel || (models[0].value ?? "Custom endpoint"))
4032
+ : isOr
4033
+ ? (openrouterModel ?? models[0].value ?? "OpenRouter")
4034
+ : isCp
4035
+ ? (copilotModel ?? models[0].value ?? "Copilot")
4036
+ : model;
3957
4037
  // llama.cpp launch gotchas (issue #161): a reachable server can still
3958
4038
  // be useless for us — tool calling needs --jinja (rejected requests),
3959
4039
  // and a launch-time -c under ~16K silently truncates the tool payload.
@@ -4028,17 +4108,19 @@ export async function runPanelOrchestrator() {
4028
4108
  ? dtr("pi", "The background agent isn't responding — the pi CLI couldn't run `pi --list-models`. Install it from https://pi.dev (`curl -fsSL https://pi.dev/install.sh | sh`), configure a provider (set a provider API key or run `pi` once and `/login`), then Disconnect → Connect to retry.")
4029
4109
  : isGk
4030
4110
  ? dtr("grok", "The background agent isn't responding — the Grok CLI couldn't start. Make sure Grok is installed and signed in (run `grok` once and complete the xAI sign-in), then Disconnect → Connect to retry.")
4031
- : isOl
4032
- ? dtr("ollama", "The background agent isn't responding — Ollama isn't reachable. Start it with `ollama serve` and pull our fine-tuned model (`ollama pull artokun/gemma4-comfyui-mcp:e4b` gemma4 trained on the comfyui-mcp tool suite arena-best local model; `:12b` for ~8 GB VRAM), then Disconnect → Connect to retry.")
4033
- : isLs
4034
- ? dtr("lmstudio", "The background agent isn't responding — LM Studio isn't reachable at {url}. Open LM Studio Developer → Start Server and load a tool-calling model (our gemma4-comfyui-mcp GGUFs from Hugging Face work great), or set COMFYUI_MCP_LMSTUDIO_HOST if it serves elsewhere then Disconnect → Connect to retry.", { url: LMSTUDIO_BASE_URL })
4035
- : isLc
4036
- ? dtr("llamacpp", "The background agent isn't responding — llama-server isn't reachable at {url}. Start it with `llama-server -m <model>.gguf -c 16384` (our gemma4-comfyui-mcp GGUFs work great; add --jinja on older builds required there for tool calling), or set COMFYUI_MCP_LLAMACPP_HOST — then Disconnect → Connect to retry.", { url: LLAMACPP_BASE_URL })
4037
- : isCu
4038
- ? dtr("custom", "The background agent isn't responding — your custom endpoint isn't answering at {url}. Check the base URL in Settings Custom endpoint (it must be OpenAI-compatible and include the /v1) and the API key if the server requires one — then Connect to retry.", { url: customBaseUrl })
4039
- : isCp
4040
- ? dtr("copilot", "The background agent isn't responding — GitHub Copilot (experimental) couldn't start. Sign in from the panel's experimental row, then Disconnect Connect to retry.")
4041
- : dtr("claude", "The background agent isn't responding — the Claude Agent SDK couldn't start. Make sure you're signed in (run `claude` once), then Disconnect → Connect to retry.");
4111
+ : isQw
4112
+ ? dtr("qwen", "The background agent isn't responding — the Qwen Code CLI couldn't start. Make sure Qwen Code is installed (npm i -g @qwen-code/qwen-code) and signed in (run `qwen` once and complete /auth, or set DASHSCOPE_API_KEY), then Disconnect → Connect to retry.")
4113
+ : isOl
4114
+ ? dtr("ollama", "The background agent isn't responding — Ollama isn't reachable. Start it with `ollama serve` and pull our fine-tuned model (`ollama pull artokun/gemma4-comfyui-mcp:e4b` gemma4 trained on the comfyui-mcp tool suite arena-best local model; `:12b` for ~8 GB VRAM), then Disconnect → Connect to retry.")
4115
+ : isLs
4116
+ ? dtr("lmstudio", "The background agent isn't responding — LM Studio isn't reachable at {url}. Open LM Studio → Developer → Start Server and load a tool-calling model (our gemma4-comfyui-mcp GGUFs from Hugging Face work great), or set COMFYUI_MCP_LMSTUDIO_HOST if it serves elsewhere — then Disconnect → Connect to retry.", { url: LMSTUDIO_BASE_URL })
4117
+ : isLc
4118
+ ? dtr("llamacpp", "The background agent isn't responding — llama-server isn't reachable at {url}. Start it with `llama-server -m <model>.gguf -c 16384` (our gemma4-comfyui-mcp GGUFs work great; add --jinja on older builds required there for tool calling), or set COMFYUI_MCP_LLAMACPP_HOST — then Disconnect → Connect to retry.", { url: LLAMACPP_BASE_URL })
4119
+ : isCu
4120
+ ? dtr("custom", "The background agent isn't responding — your custom endpoint isn't answering at {url}. Check the base URL in Settings → Custom endpoint (it must be OpenAI-compatible and include the /v1) and the API key if the server requires one — then Connect to retry.", { url: customBaseUrl })
4121
+ : isCp
4122
+ ? dtr("copilot", "The background agent isn't responding — GitHub Copilot (experimental) couldn't start. Sign in from the panel's experimental row, then Disconnect → Connect to retry.")
4123
+ : dtr("claude", "The background agent isn't responding — the Claude Agent SDK couldn't start. Make sure you're signed in (run `claude` once), then Disconnect → Connect to retry.");
4042
4124
  bridge.push({ type: "say", text: degradedText }, panelTab);
4043
4125
  bridge.push({ type: "ack", ok: false, kind: "degraded" }, panelTab);
4044
4126
  logger.warn(`[panel-orchestrator] tab ${panelTab.slice(0, 8)} connected (${backend}) but model probe empty — degraded ack`);
@@ -4614,7 +4696,7 @@ export async function runPanelOrchestrator() {
4614
4696
  // cannot hook in-process — a promise we can't enforce must say so out
4615
4697
  // loud, exactly like the old-orchestrator ack warning. API/local lanes
4616
4698
  // (ollama/glm/kimi/…) carry only our tool surface, so they get no scare.
4617
- const CLI_NATIVE_TOOL_BACKENDS = new Set(["codex", "gemini", "grok", "antigravity", "pi", "copilot"]);
4699
+ const CLI_NATIVE_TOOL_BACKENDS = new Set(["codex", "gemini", "grok", "qwen", "antigravity", "pi", "copilot"]);
4618
4700
  const tabBackend = backendForTab(tabId);
4619
4701
  if (changed && nextBlind && CLI_NATIVE_TOOL_BACKENDS.has(tabBackend)) {
4620
4702
  bridge.push({
@@ -5308,6 +5390,21 @@ export async function runPanelOrchestrator() {
5308
5390
  // the child must never quote a panel that has since disconnected. Writes only
5309
5391
  // when the set changed.
5310
5392
  publishConnectedPanelOrigins(progressDir, bridge.connectedServerOrigins());
5393
+ // #1400 — the same level-triggered discipline for the frontend-virtual
5394
+ // registry: republish the CURRENT map, scoped to origins a connected tab
5395
+ // actually fronts, so a disconnected tab's entry drops out of the channel
5396
+ // within one tick rather than exempting types for a page that is gone.
5397
+ {
5398
+ const fronted = new Set(bridge
5399
+ .connectedServerOrigins()
5400
+ .map((o) => canonicalOrigin(o) ?? o));
5401
+ const virtualEntries = [];
5402
+ for (const [origin, types] of frontendVirtualTypesByOrigin) {
5403
+ if (fronted.has(origin))
5404
+ virtualEntries.push({ origin, types });
5405
+ }
5406
+ publishFrontendVirtualTypes(progressDir, virtualEntries);
5407
+ }
5311
5408
  let files = [];
5312
5409
  try {
5313
5410
  files = readdirSync(progressDir).filter((f) => f.endsWith(".json"));