comfyui-mcp 0.51.44 → 0.51.46

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.
@@ -9902,11 +9902,16 @@ CHECKED FOR YOU: the graph read this message prescribes was just run, and it ` +
9902
9902
  def("panel_unpack_subgraph", "EXPAND / DISSOLVE a subgraph node on the user's open graph — inline its interior nodes back into the PARENT graph, rewire all external links to those now-inlined nodes, and remove the subgraph wrapper. This is the frontend's \"Unpack Subgraph\" (litegraph LGraph.unpackSubgraph) and the exact INVERSE of panel_create_subgraph. Use it to flatten a stage that was over-nested, or to edit interior nodes directly at the parent level. The interior nodes reappear on the parent canvas with their connections preserved. Undoable with Ctrl+Z.", { node_id: nodeId().describe("Subgraph node id to unpack/dissolve (is_subgraph=true, from panel_graph_outline / panel_query_graph).") }, async (args, ctx) => ctx.call({ cmd: "graph_unpack_subgraph", node_id: args.node_id }, 15000)),
9903
9903
  def("panel_search_nodes", "Search installable custom-node packs via the user's BUILT-IN ComfyUI Manager (the same source the Manager UI uses). Returns matching packs {id, title, description}. Use the `id` with panel_install_node. Prefer this over the headless search_custom_nodes tool — it works against the user's actual (Desktop) Manager.", { query: z.string().describe("Search text, e.g. 'kjnodes', 'controlnet', 'ipadapter'."), limit: z.number().int().min(1).max(40).optional() }, async (args, ctx) => ctx.call({ cmd: "nodes_search", query: args.query, limit: args.limit }, 20000)),
9904
9904
  def("panel_list_nodes", "List the custom-node packs currently installed in the user's ComfyUI (via the built-in Manager). Read-only.", {}, async (_args, ctx) => ctx.call({ cmd: "nodes_list" }, 20000)),
9905
- def("panel_install_node", "Install a custom-node pack into the user's ComfyUI via the BUILT-IN Manager (queues the install). Pass `id` (registry id like 'comfyui-kjnodes' or 'author/repo') from panel_search_nodes, or `repository` (git URL) for a nightly install. A search result whose `id` IS a git URL (legacy/repository-style entries) is auto-routed to a from-source 'nightly' install — 'latest' cannot resolve for those. A ComfyUI restart (panel_restart_comfyui) is usually required afterward to load the nodes — poll panel_node_queue_status first. Prefer this over the headless install_custom_node tool. " +
9906
- "⚠️ QUEUE-DONE IS NOT INSTALLED: Manager marks a task 'done' (queue drained) even when the git clone produced NOTHINGan empty dir, a transient git failure, or a repo not in its registry. So after the queue is idle you MUST VERIFY with panel_list_nodes that each pack actually appears before you restart or report success; a pack you installed that is absent from that list did NOT install (retry it, or install it from its git `repository` URL). " +
9905
+ def("panel_install_node", "Install a custom-node pack into the user's ComfyUI via the BUILT-IN Manager (queues the install). Pass `id` (registry id like 'comfyui-kjnodes' or 'author/repo') from panel_search_nodes, or `repository` (git URL) to request a nightly/from-source install — see the v4 limit below before relying on it. A search result whose `id` IS a git URL (legacy/repository-style entries) is auto-routed to a from-source 'nightly' install — 'latest' cannot resolve for those. " +
9906
+ "⚠️ ON MANAGER v4, `repository` DOES NOT INSTALL A REPO THE MANAGER'S REGISTRY DOES NOT LIST (#1539) — being listed is necessary; whether it is sufficient was not measured. Measured against Manager V4.2.2: a request carrying `repository` AND `selected_version:'nightly'` the exact combination Manager's own schema documents as 'repository required if selected_version is nightly' is still resolved by `id` against its registry, and an unlisted repo fails with \"Node '<name>@nightly' not found in [ManagerChannel.dev, ManagerDatabaseSource.cache]\". The URL is sent and recorded; for an unlisted repo v4 never reaches a clone (only that case was probed). This is an UPSTREAM limitation, not a missing field on our side. On Manager 3.x we send a DIFFERENT request shape that carries the URL directly (that much is our own code); whether 3.x then installs an unlisted repo was NOT measured here, so treat 'it worked before on 3.x' as unverified rather than as a regression on our side. For an unlisted repo on v4, clone it into custom_nodes yourself and restart. " +
9907
+ "A ComfyUI restart (panel_restart_comfyui) is usually required afterward to load the nodes — poll panel_node_queue_status first. Prefer this over the headless install_custom_node tool. " +
9908
+ "⚠️ QUEUE-DONE IS NOT INSTALLED: Manager marks a task 'done' (queue drained) even when the git clone produced NOTHING — an empty dir, a transient git failure, or a repo not in its registry. So after the queue is idle you MUST VERIFY with panel_list_nodes that each pack actually appears before you restart or report success; a pack you installed that is absent from that list did NOT install (retry it, or install it from its git `repository` URL — but see the v4 note above: on Manager v4 that retry fails for a repo its registry does not list, so clone it yourself instead of retrying). " +
9907
9909
  "Install packs ONE AT A TIME and confirm each populated before the next — batching several installs then restarting is exactly how you end up with empty dirs and a broken restart.", {
9908
9910
  id: z.string().optional().describe("Registry id or 'author/repo'."),
9909
- repository: z.string().optional().describe("Git URL (for a nightly/from-source install)."),
9911
+ repository: z
9912
+ .string()
9913
+ .optional()
9914
+ .describe("Git URL, to REQUEST a nightly/from-source install. On Manager v4 an install only proceeds for a repo the Manager's registry already lists — an unlisted URL is rejected by id lookup despite this field (#1539, measured on V4.2.2)."),
9910
9915
  version: z.string().optional().describe("Specific version; default 'latest' (or 'nightly' with repository)."),
9911
9916
  channel: z.string().optional().describe("Manager channel (default 'default')."),
9912
9917
  mode: z.enum(["remote", "local", "cache"]).optional().describe("DB source (default 'remote')."),