comfyui-mcp 0.28.0 → 0.30.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.
- package/dist/comfyui/client.js +86 -0
- package/dist/comfyui/client.js.map +1 -1
- package/dist/orchestrator/backend-readiness.js +20 -0
- package/dist/orchestrator/backend-readiness.js.map +1 -1
- package/dist/orchestrator/index.js +295 -35
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/orchestrator/ollama-backend.js +15 -5
- package/dist/orchestrator/ollama-backend.js.map +1 -1
- package/dist/orchestrator/panel-tools.js +162 -42
- package/dist/orchestrator/panel-tools.js.map +1 -1
- package/dist/services/calc-evaluator.js +443 -0
- package/dist/services/calc-evaluator.js.map +1 -0
- package/dist/services/graph-query.js +228 -0
- package/dist/services/graph-query.js.map +1 -0
- package/dist/services/llamacpp-probe.js +88 -0
- package/dist/services/llamacpp-probe.js.map +1 -0
- package/dist/services/node-dev.js +718 -0
- package/dist/services/node-dev.js.map +1 -0
- package/dist/services/node-management.js +2 -2
- package/dist/services/node-management.js.map +1 -1
- package/dist/services/panel-secrets.js +2 -1
- package/dist/services/panel-secrets.js.map +1 -1
- package/dist/services/panel-settings.js +6 -0
- package/dist/services/panel-settings.js.map +1 -1
- package/dist/services/slot-compat.js +53 -0
- package/dist/services/slot-compat.js.map +1 -0
- package/dist/services/ui-bridge.js +170 -16
- package/dist/services/ui-bridge.js.map +1 -1
- package/dist/services/workflow-health.js +244 -0
- package/dist/services/workflow-health.js.map +1 -0
- package/dist/services/workflow-validator.js +28 -2
- package/dist/services/workflow-validator.js.map +1 -1
- package/dist/tools/calculate.js +97 -0
- package/dist/tools/calculate.js.map +1 -0
- package/dist/tools/comfyui-settings.js +68 -0
- package/dist/tools/comfyui-settings.js.map +1 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/node-dev.js +213 -0
- package/dist/tools/node-dev.js.map +1 -0
- package/dist/tools/workflow-dsl.js +87 -3
- package/dist/tools/workflow-dsl.js.map +1 -1
- package/dist/tools/workflow-library.js +128 -2
- package/dist/tools/workflow-library.js.map +1 -1
- package/dist/tools/workflow-validate.js +21 -4
- package/dist/tools/workflow-validate.js.map +1 -1
- package/package.json +2 -2
- package/plugin/skills/debug-render/SKILL.md +2 -2
- package/plugin/skills/director/SKILL.md +1 -1
- package/plugin/skills/local-llm-free/SKILL.md +6 -6
- package/plugin/skills/workflow-layout/SKILL.md +5 -5
- package/scripts/gen-tool-docs.ts +8 -3
|
@@ -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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"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
// Model-file extensions — kept in sync with workflow-validator.ts's isModel test.
|
|
2
|
+
const MODEL_FILE_RE = /\.(safetensors|gguf|ckpt|pt|pth|bin|sft)$/i;
|
|
3
|
+
// Hardcoded output classes, mirroring workflow-validator.ts step 4.
|
|
4
|
+
const OUTPUT_CLASSES = new Set([
|
|
5
|
+
"SaveImage",
|
|
6
|
+
"PreviewImage",
|
|
7
|
+
"SaveAnimatedWEBP",
|
|
8
|
+
"SaveAnimatedPNG",
|
|
9
|
+
]);
|
|
10
|
+
/**
|
|
11
|
+
* FL-MCP-style slot-name required heuristic, used ONLY for node classes absent
|
|
12
|
+
* from object_info (uninstalled custom nodes). Returns the set of input-slot
|
|
13
|
+
* names we *expect* a node of this class-name family to require, so a missing
|
|
14
|
+
* key can be flagged. Returns null for families we can't reason about (a generic
|
|
15
|
+
* unknown node), where guessing would only produce false positives.
|
|
16
|
+
*/
|
|
17
|
+
function heuristicRequiredSlots(classType) {
|
|
18
|
+
if (/Sampler/i.test(classType)) {
|
|
19
|
+
return ["model", "positive", "negative", "latent_image"];
|
|
20
|
+
}
|
|
21
|
+
if (/VAE/i.test(classType)) {
|
|
22
|
+
// Decode wants samples+vae; encode wants pixels/images+vae. `vae` is the
|
|
23
|
+
// one slot common to the whole family, so that's all we assert.
|
|
24
|
+
return ["vae"];
|
|
25
|
+
}
|
|
26
|
+
// Loader / Load families are model-file consumers whose required input is a
|
|
27
|
+
// widget (a *name*/*path*/*ckpt* value), not a link — handled separately below.
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
/** Is a value an API-format connection tuple `[nodeId, outputIndex]`? */
|
|
31
|
+
function isConnection(value) {
|
|
32
|
+
return (Array.isArray(value) &&
|
|
33
|
+
value.length === 2 &&
|
|
34
|
+
typeof value[0] === "string" &&
|
|
35
|
+
typeof value[1] === "number");
|
|
36
|
+
}
|
|
37
|
+
function isOutputNode(classType, objectInfo) {
|
|
38
|
+
return OUTPUT_CLASSES.has(classType) || objectInfo[classType]?.output_node === true;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Analyze a workflow's structural health. Pure — no I/O, no fetch.
|
|
42
|
+
*
|
|
43
|
+
* @param workflow API-format workflow JSON.
|
|
44
|
+
* @param objectInfo Node catalog from `/object_info` (authoritative required/optional).
|
|
45
|
+
*/
|
|
46
|
+
export function analyzeGraphHealth(workflow, objectInfo) {
|
|
47
|
+
const nodeIds = Object.keys(workflow);
|
|
48
|
+
const findings = [];
|
|
49
|
+
// --- Node-type histogram -------------------------------------------------
|
|
50
|
+
const histogram = {};
|
|
51
|
+
for (const id of nodeIds) {
|
|
52
|
+
const ct = workflow[id].class_type;
|
|
53
|
+
histogram[ct] = (histogram[ct] ?? 0) + 1;
|
|
54
|
+
}
|
|
55
|
+
// --- Adjacency (forward: source -> [targets]) ----------------------------
|
|
56
|
+
const consumers = new Map(); // node -> nodes that read its output
|
|
57
|
+
const sources = new Map(); // node -> nodes it reads from
|
|
58
|
+
for (const id of nodeIds) {
|
|
59
|
+
consumers.set(id, new Set());
|
|
60
|
+
sources.set(id, new Set());
|
|
61
|
+
}
|
|
62
|
+
for (const id of nodeIds) {
|
|
63
|
+
for (const value of Object.values(workflow[id].inputs)) {
|
|
64
|
+
if (isConnection(value)) {
|
|
65
|
+
const [srcId] = value;
|
|
66
|
+
if (workflow[srcId] && srcId !== id) {
|
|
67
|
+
sources.get(id).add(srcId);
|
|
68
|
+
consumers.get(srcId).add(id);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// --- 1. Disconnected nodes (warning) -------------------------------------
|
|
74
|
+
// No inbound links, no consumers, and not itself an output node.
|
|
75
|
+
for (const id of nodeIds) {
|
|
76
|
+
const ct = workflow[id].class_type;
|
|
77
|
+
if (sources.get(id).size === 0 &&
|
|
78
|
+
consumers.get(id).size === 0 &&
|
|
79
|
+
!isOutputNode(ct, objectInfo)) {
|
|
80
|
+
findings.push({
|
|
81
|
+
kind: "disconnected",
|
|
82
|
+
severity: "warning",
|
|
83
|
+
node_ids: [id],
|
|
84
|
+
node_type: ct,
|
|
85
|
+
detail: `Node ${id} (${ct}) has no connections — it is isolated and does nothing.`,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// --- 2. Missing required inputs ------------------------------------------
|
|
90
|
+
for (const id of nodeIds) {
|
|
91
|
+
const node = workflow[id];
|
|
92
|
+
const ct = node.class_type;
|
|
93
|
+
const def = objectInfo[ct];
|
|
94
|
+
if (def) {
|
|
95
|
+
// Authoritative: object_info required list.
|
|
96
|
+
const required = def.input?.required ?? {};
|
|
97
|
+
for (const inputName of Object.keys(required)) {
|
|
98
|
+
if (!(inputName in node.inputs)) {
|
|
99
|
+
findings.push({
|
|
100
|
+
kind: "missing_required_input",
|
|
101
|
+
severity: "warning",
|
|
102
|
+
node_ids: [id],
|
|
103
|
+
node_type: ct,
|
|
104
|
+
detail: `Node ${id} (${ct}) is missing required input "${inputName}".`,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// Fallback heuristic — only for classes absent from object_info.
|
|
111
|
+
const expected = heuristicRequiredSlots(ct);
|
|
112
|
+
if (expected) {
|
|
113
|
+
for (const inputName of expected) {
|
|
114
|
+
if (!(inputName in node.inputs)) {
|
|
115
|
+
findings.push({
|
|
116
|
+
kind: "missing_required_input",
|
|
117
|
+
severity: "warning",
|
|
118
|
+
node_ids: [id],
|
|
119
|
+
node_type: ct,
|
|
120
|
+
detail: `Node ${id} (${ct}) appears to be missing required input "${inputName}" (heuristic — "${ct}" is not installed here).`,
|
|
121
|
+
heuristic: true,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// --- 3. Duplicate model loads (warning) ----------------------------------
|
|
129
|
+
// Group Loader/Load-family nodes by (class_type, model-file value). NUL can't
|
|
130
|
+
// appear in a class_type or filename, so it is a collision-proof separator.
|
|
131
|
+
const DUP_SEP = String.fromCharCode(0);
|
|
132
|
+
const loadGroups = new Map();
|
|
133
|
+
for (const id of nodeIds) {
|
|
134
|
+
const ct = workflow[id].class_type;
|
|
135
|
+
if (!/Loader|Load/i.test(ct))
|
|
136
|
+
continue;
|
|
137
|
+
for (const value of Object.values(workflow[id].inputs)) {
|
|
138
|
+
if (typeof value === "string" && MODEL_FILE_RE.test(value)) {
|
|
139
|
+
const key = `${ct}${DUP_SEP}${value}`;
|
|
140
|
+
const arr = loadGroups.get(key) ?? [];
|
|
141
|
+
arr.push(id);
|
|
142
|
+
loadGroups.set(key, arr);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
for (const [key, ids] of loadGroups) {
|
|
147
|
+
if (ids.length < 2)
|
|
148
|
+
continue;
|
|
149
|
+
const [ct, file] = key.split(DUP_SEP);
|
|
150
|
+
findings.push({
|
|
151
|
+
kind: "duplicate_model_load",
|
|
152
|
+
severity: "warning",
|
|
153
|
+
node_ids: ids,
|
|
154
|
+
node_type: ct,
|
|
155
|
+
detail: `${ct} loads "${file}" in nodes ${ids.join(", ")} — merge into one loader to save VRAM.`,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
// --- 4. Orphaned branches (warning) --------------------------------------
|
|
159
|
+
// Reverse-BFS from every output node; unreached non-output nodes are computed
|
|
160
|
+
// but never saved. Report one finding per connected component of the unreached
|
|
161
|
+
// set (over the undirected graph) to avoid many line items on big graphs.
|
|
162
|
+
const outputNodes = nodeIds.filter((id) => isOutputNode(workflow[id].class_type, objectInfo));
|
|
163
|
+
if (outputNodes.length > 0) {
|
|
164
|
+
const reachable = new Set();
|
|
165
|
+
const queue = [...outputNodes];
|
|
166
|
+
while (queue.length > 0) {
|
|
167
|
+
const cur = queue.shift();
|
|
168
|
+
if (reachable.has(cur))
|
|
169
|
+
continue;
|
|
170
|
+
reachable.add(cur);
|
|
171
|
+
for (const src of sources.get(cur)) {
|
|
172
|
+
if (!reachable.has(src))
|
|
173
|
+
queue.push(src);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const unreached = nodeIds.filter((id) => !reachable.has(id) && !isOutputNode(workflow[id].class_type, objectInfo));
|
|
177
|
+
// Exclude fully-disconnected nodes already reported in check 1 — an isolated
|
|
178
|
+
// node is its own story, not an orphaned branch.
|
|
179
|
+
const unreachedSet = new Set(unreached.filter((id) => sources.get(id).size > 0 || consumers.get(id).size > 0));
|
|
180
|
+
// Undirected connected components within the unreached set.
|
|
181
|
+
const visited = new Set();
|
|
182
|
+
for (const start of unreachedSet) {
|
|
183
|
+
if (visited.has(start))
|
|
184
|
+
continue;
|
|
185
|
+
const component = [];
|
|
186
|
+
const stack = [start];
|
|
187
|
+
while (stack.length > 0) {
|
|
188
|
+
const cur = stack.pop();
|
|
189
|
+
if (visited.has(cur))
|
|
190
|
+
continue;
|
|
191
|
+
visited.add(cur);
|
|
192
|
+
component.push(cur);
|
|
193
|
+
for (const nb of [...sources.get(cur), ...consumers.get(cur)]) {
|
|
194
|
+
if (unreachedSet.has(nb) && !visited.has(nb))
|
|
195
|
+
stack.push(nb);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
component.sort((a, b) => a.localeCompare(b));
|
|
199
|
+
const types = component.map((id) => workflow[id].class_type);
|
|
200
|
+
findings.push({
|
|
201
|
+
kind: "orphaned_branch",
|
|
202
|
+
severity: "warning",
|
|
203
|
+
node_ids: component,
|
|
204
|
+
detail: `Orphaned branch: nodes ${component.join(", ")} (${types.join(" → ")}) never reach a save/preview node.`,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// --- 5. Muted / bypassed nodes (info) ------------------------------------
|
|
209
|
+
// Surfaced via _meta.mode where the raw API JSON carries it. convertUiToApi
|
|
210
|
+
// *drops* mode-2/4 nodes, so for library workflows this is usually absent and
|
|
211
|
+
// silently skipped; raw API JSON handed to validate_workflow is checked here.
|
|
212
|
+
for (const id of nodeIds) {
|
|
213
|
+
const mode = workflow[id]._meta?.mode;
|
|
214
|
+
if (mode === "muted" || mode === "bypassed") {
|
|
215
|
+
const ct = workflow[id].class_type;
|
|
216
|
+
findings.push({
|
|
217
|
+
kind: "muted_or_bypassed",
|
|
218
|
+
severity: "info",
|
|
219
|
+
node_ids: [id],
|
|
220
|
+
node_type: ct,
|
|
221
|
+
detail: `Node ${id} (${ct}) is ${mode} (_meta.mode) — its connections are silently dropped.`,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// --- Summary -------------------------------------------------------------
|
|
226
|
+
const typeCount = Object.keys(histogram).length;
|
|
227
|
+
const top = Object.entries(histogram)
|
|
228
|
+
.sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
|
|
229
|
+
.slice(0, 4)
|
|
230
|
+
.map(([ct, n]) => `${ct} x${n}`)
|
|
231
|
+
.join(", ");
|
|
232
|
+
const warnCount = findings.filter((f) => f.severity === "warning").length;
|
|
233
|
+
const infoCount = findings.filter((f) => f.severity === "info").length;
|
|
234
|
+
const summary = `${nodeIds.length} nodes, ${typeCount} types` +
|
|
235
|
+
(top ? ` (top: ${top})` : "") +
|
|
236
|
+
` — ${warnCount} warning(s), ${infoCount} info.`;
|
|
237
|
+
return {
|
|
238
|
+
total_nodes: nodeIds.length,
|
|
239
|
+
node_type_histogram: histogram,
|
|
240
|
+
findings,
|
|
241
|
+
summary,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=workflow-health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-health.js","sourceRoot":"","sources":["../../src/services/workflow-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { getObjectInfo } from "../comfyui/client.js";
|
|
2
|
+
import { analyzeGraphHealth } from "./workflow-health.js";
|
|
2
3
|
/**
|
|
3
4
|
* Validate a workflow without executing it.
|
|
4
5
|
* Checks for missing nodes, broken connections, type mismatches, and missing models.
|
|
6
|
+
*
|
|
7
|
+
* @param workflow The workflow to validate (API format).
|
|
8
|
+
* @param options.health Merge graph-health heuristics (disconnected nodes, duplicate
|
|
9
|
+
* model loads, orphaned branches, muted/bypassed) as info/warning issues plus a
|
|
10
|
+
* structured `health` section. Health findings NEVER flip `valid`. Default true.
|
|
5
11
|
*/
|
|
6
|
-
export async function validateWorkflow(workflow) {
|
|
12
|
+
export async function validateWorkflow(workflow, options = {}) {
|
|
13
|
+
const includeHealth = options.health ?? true;
|
|
7
14
|
const issues = [];
|
|
8
15
|
// 1. Fetch available node definitions
|
|
9
16
|
let objectInfo;
|
|
@@ -119,6 +126,25 @@ export async function validateWorkflow(workflow) {
|
|
|
119
126
|
message: "Workflow has no output node (SaveImage, PreviewImage, etc.). Nothing will be generated.",
|
|
120
127
|
});
|
|
121
128
|
}
|
|
129
|
+
// 5. Graph-health heuristics (merged as info/warning issues — never flip `valid`).
|
|
130
|
+
let health;
|
|
131
|
+
if (includeHealth) {
|
|
132
|
+
health = analyzeGraphHealth(workflow, objectInfo);
|
|
133
|
+
for (const f of health.findings) {
|
|
134
|
+
// Authoritative missing_required_input is already reported as an error above
|
|
135
|
+
// (step 2b) for installed nodes — don't double-report. The heuristic variant
|
|
136
|
+
// (uninstalled node) is NOT covered by the validator, so it adds value.
|
|
137
|
+
if (f.kind === "missing_required_input" && !f.heuristic)
|
|
138
|
+
continue;
|
|
139
|
+
issues.push({
|
|
140
|
+
severity: f.severity,
|
|
141
|
+
node_id: f.node_ids[0] ?? "",
|
|
142
|
+
node_type: f.node_type ?? "",
|
|
143
|
+
message: f.detail,
|
|
144
|
+
kind: f.kind,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
122
148
|
const errors = issues.filter((i) => i.severity === "error");
|
|
123
149
|
const warnings = issues.filter((i) => i.severity === "warning");
|
|
124
150
|
const valid = errors.length === 0;
|
|
@@ -127,7 +153,7 @@ export async function validateWorkflow(workflow) {
|
|
|
127
153
|
? `Workflow is valid with ${warnings.length} warning(s)`
|
|
128
154
|
: "Workflow is valid"
|
|
129
155
|
: `Workflow has ${errors.length} error(s) and ${warnings.length} warning(s)`;
|
|
130
|
-
return { valid, issues, summary };
|
|
156
|
+
return { valid, issues, summary, health };
|
|
131
157
|
}
|
|
132
158
|
/**
|
|
133
159
|
* Check that every combo (dropdown) widget value is one ComfyUI actually offers —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-validator.js","sourceRoot":"","sources":["../../src/services/workflow-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-validator.js","sourceRoot":"","sources":["../../src/services/workflow-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { errorToToolResult } from "../utils/errors.js";
|
|
3
|
+
import { evaluateBatch } from "../services/calc-evaluator.js";
|
|
4
|
+
/**
|
|
5
|
+
* Split a spec string into individual expressions. We split ONLY on newlines
|
|
6
|
+
* and semicolons — never commas, since commas are argument separators inside
|
|
7
|
+
* call lists like `min(1, 2)`. Blank lines are dropped.
|
|
8
|
+
*/
|
|
9
|
+
function splitSpec(spec) {
|
|
10
|
+
return spec
|
|
11
|
+
.split(/[\n;]+/)
|
|
12
|
+
.map((s) => s.trim())
|
|
13
|
+
.filter((s) => s.length > 0);
|
|
14
|
+
}
|
|
15
|
+
function renderNumber(n) {
|
|
16
|
+
if (n === null)
|
|
17
|
+
return "null";
|
|
18
|
+
if (Number.isNaN(n))
|
|
19
|
+
return "NaN";
|
|
20
|
+
if (!Number.isFinite(n))
|
|
21
|
+
return n > 0 ? "Infinity" : "-Infinity";
|
|
22
|
+
return String(n);
|
|
23
|
+
}
|
|
24
|
+
export function registerCalculateTools(server) {
|
|
25
|
+
server.tool("calculate", "Evaluate a batch of math expressions exactly — no ComfyUI connection needed, so it works even in cloud mode or when ComfyUI is down. A safe, zero-dependency expression evaluator (no eval): numbers only, no strings/arrays/property access. Handy for the arithmetic agents get wrong token-by-token.\n\n" +
|
|
26
|
+
"Each line is one expression. `name = expr` assigns a variable that persists into later lines. Lines are separated by newlines or semicolons ONLY — commas are argument separators (e.g. min(a, b)), never expression separators.\n\n" +
|
|
27
|
+
"Operators: + - * / // (floor div) % (modulo) ** (power, right-assoc), comparisons < <= > >= == != (return 1/0), unary minus. Constants: pi, e, tau. Functions: abs round min max pow sqrt floor ceil sin cos tan asin acos atan atan2 sinh cosh tanh exp log log10 log2 hypot radians degrees sign trunc clamp(x,lo,hi), plus seeded RNG rand() random() uniform(a,b) randint(a,b) (inclusive). Pass `seed` for reproducible RNG; it is echoed back when omitted.\n\n" +
|
|
28
|
+
"Examples:\n" +
|
|
29
|
+
"• SDXL-legal resolution from an aspect ratio, snapped to /64:\n" +
|
|
30
|
+
" variables={ar: 1.5}; spec=\"w = floor(sqrt(1024*1024*ar)/64)*64\\nh = floor(sqrt(1024*1024/ar)/64)*64\"\n" +
|
|
31
|
+
"• Reproducible seed batch (one 32-bit seed per line):\n" +
|
|
32
|
+
" spec=\"randint(0, 2**32-1)\\nrandint(0, 2**32-1)\\nrandint(0, 2**32-1)\", seed=42\n" +
|
|
33
|
+
"• CFG sweep:\n" +
|
|
34
|
+
" spec=\"3 + 0*0.5\\n3 + 1*0.5\\n3 + 2*0.5\\n3 + 3*0.5\"", {
|
|
35
|
+
spec: z
|
|
36
|
+
.union([z.string(), z.array(z.string())])
|
|
37
|
+
.describe("Expressions to evaluate, separated by newlines/semicolons (string) or one per array item. `name = expr` assigns; assignments persist across subsequent lines. NOTE: comma is an argument separator (min(a,b)), NOT an expression separator."),
|
|
38
|
+
variables: z
|
|
39
|
+
.record(z.string(), z.number())
|
|
40
|
+
.optional()
|
|
41
|
+
.describe('Initial variable environment, e.g. {"w": 1024, "ar": 1.5}.'),
|
|
42
|
+
seed: z
|
|
43
|
+
.number()
|
|
44
|
+
.int()
|
|
45
|
+
.optional()
|
|
46
|
+
.describe("Seed for rand()/uniform(a,b)/randint(a,b). Same seed => identical sequence (mulberry32). Omit for a random seed (echoed in the result)."),
|
|
47
|
+
}, async (args) => {
|
|
48
|
+
try {
|
|
49
|
+
const exprs = Array.isArray(args.spec)
|
|
50
|
+
? args.spec.map((s) => s.trim()).filter((s) => s.length > 0)
|
|
51
|
+
: splitSpec(args.spec);
|
|
52
|
+
if (exprs.length === 0) {
|
|
53
|
+
throw new Error("No expressions to evaluate (spec was empty after splitting).");
|
|
54
|
+
}
|
|
55
|
+
const { results, variables, errors, seed } = evaluateBatch(exprs, args.variables, args.seed);
|
|
56
|
+
// Rendered text summary.
|
|
57
|
+
const lines = [];
|
|
58
|
+
for (let i = 0; i < exprs.length; i++) {
|
|
59
|
+
const r = results[i];
|
|
60
|
+
const rendered = renderNumber(r);
|
|
61
|
+
const flag = r !== null && (Number.isNaN(r) || !Number.isFinite(r)) ? " ⚠ non-finite" : "";
|
|
62
|
+
lines.push(` [${i + 1}] ${exprs[i]} => ${rendered}${flag}`);
|
|
63
|
+
}
|
|
64
|
+
const varKeys = Object.keys(variables);
|
|
65
|
+
const varLine = varKeys.length > 0
|
|
66
|
+
? varKeys.map((k) => `${k}=${renderNumber(variables[k])}`).join(", ")
|
|
67
|
+
: "(none)";
|
|
68
|
+
const parts = [];
|
|
69
|
+
parts.push("results:");
|
|
70
|
+
parts.push(lines.join("\n"));
|
|
71
|
+
parts.push("");
|
|
72
|
+
parts.push(`variables: ${varLine}`);
|
|
73
|
+
parts.push(`seed: ${seed}`);
|
|
74
|
+
if (errors.length > 0) {
|
|
75
|
+
parts.push("");
|
|
76
|
+
parts.push("errors:");
|
|
77
|
+
for (const e of errors) {
|
|
78
|
+
parts.push(` line ${e.line}: ${e.expr} — ${e.message}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const text = parts.join("\n");
|
|
82
|
+
return {
|
|
83
|
+
content: [
|
|
84
|
+
{ type: "text", text },
|
|
85
|
+
{
|
|
86
|
+
type: "text",
|
|
87
|
+
text: JSON.stringify({ results, variables, errors, seed }),
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
return errorToToolResult(err);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=calculate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate.js","sourceRoot":"","sources":["../../src/tools/calculate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getSettings, getSetting, setSetting } from "../comfyui/client.js";
|
|
3
|
+
import { errorToToolResult } from "../utils/errors.js";
|
|
4
|
+
const UNSET_NOTE = "unset (frontend default applies)";
|
|
5
|
+
export function registerComfyUISettingsTools(server) {
|
|
6
|
+
server.tool("get_comfyui_settings", "Read the ComfyUI frontend's per-user UI settings (the Comfy.* ids the Settings panel writes, served by the frontend user manager). Read-only. This is NOT get_defaults — get_defaults is our own MCP SQLite store, while these are ComfyUI's own persisted UI settings. Provide `id` to read one setting's raw stored value; omit `id` to list all stored settings (optionally narrowed by `filter`). Known ids include Comfy.Validation.Workflows (boolean; its strictness rejects some custom-node workflows), Comfy.PreviewMethod (auto|latent2rgb|taesd|none), Comfy.LinkRenderMode (0 straight / 1 linear / 2 spline / 3 hidden), Comfy.UseNewMenu, and Comfy.Sidebar.Location. Ids are frontend-defined and stored verbatim; keys never written by the user are absent here and fall back to invisible frontend defaults. Values are surfaced with their raw stored type (no coercion). Requires a reachable local or remote ComfyUI; not available in Comfy Cloud mode.", {
|
|
7
|
+
id: z
|
|
8
|
+
.string()
|
|
9
|
+
.optional()
|
|
10
|
+
.describe("Setting id, e.g. 'Comfy.Validation.Workflows'. Omit to list all stored settings."),
|
|
11
|
+
filter: z
|
|
12
|
+
.string()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe("Case-insensitive substring filter on setting ids when listing (e.g. 'preview'). Ignored when `id` is given."),
|
|
15
|
+
}, async (args) => {
|
|
16
|
+
try {
|
|
17
|
+
if (args.id !== undefined) {
|
|
18
|
+
const value = await getSetting(args.id);
|
|
19
|
+
const payload = value === undefined ? { id: args.id, value: null, note: UNSET_NOTE } : { id: args.id, value };
|
|
20
|
+
return {
|
|
21
|
+
content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const all = await getSettings();
|
|
25
|
+
const filter = args.filter?.toLowerCase();
|
|
26
|
+
const settings = {};
|
|
27
|
+
for (const key of Object.keys(all).sort()) {
|
|
28
|
+
if (filter && !key.toLowerCase().includes(filter))
|
|
29
|
+
continue;
|
|
30
|
+
settings[key] = all[key];
|
|
31
|
+
}
|
|
32
|
+
const payload = {
|
|
33
|
+
count: Object.keys(settings).length,
|
|
34
|
+
note: "Only explicitly-stored settings appear here; unset ids use frontend defaults not exposed by this API.",
|
|
35
|
+
settings,
|
|
36
|
+
};
|
|
37
|
+
return {
|
|
38
|
+
content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
return errorToToolResult(err);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
server.tool("set_comfyui_setting", "Modify the ComfyUI user's persisted frontend UI setting by id. This writes ComfyUI's OWN user settings store (the Comfy.* ids the Settings panel manages) — NOT get_defaults/set_defaults, which is our separate MCP store. The change is persisted immediately and takes effect on the next frontend load/refresh (an already-open UI tab keeps its old value until reloaded). The value is stored as-is: booleans/numbers are NOT coerced from strings, so pass true (not \"true\") and 2 (not \"2\"). Known ids: Comfy.Validation.Workflows (boolean; loosening it lets stricter custom-node workflows load), Comfy.PreviewMethod (auto|latent2rgb|taesd|none), Comfy.LinkRenderMode (0 straight / 1 linear / 2 spline / 3 hidden), Comfy.UseNewMenu, Comfy.Sidebar.Location. Ids are frontend-defined; an unknown id is stored verbatim and simply ignored by the UI. Returns { id, previous, value } — the prior value is read first so you can report and undo the change (previous is null when the key was unset).", {
|
|
46
|
+
id: z.string().describe("Setting id, e.g. 'Comfy.Validation.Workflows'."),
|
|
47
|
+
value: z
|
|
48
|
+
.union([z.string(), z.number(), z.boolean(), z.record(z.string(), z.any()), z.array(z.any())])
|
|
49
|
+
.describe("New value. Stored as-is; booleans/numbers are NOT coerced from strings (pass true, not \"true\")."),
|
|
50
|
+
}, async (args) => {
|
|
51
|
+
try {
|
|
52
|
+
const prev = await getSetting(args.id);
|
|
53
|
+
await setSetting(args.id, args.value);
|
|
54
|
+
const result = {
|
|
55
|
+
id: args.id,
|
|
56
|
+
previous: prev === undefined ? null : prev,
|
|
57
|
+
value: args.value,
|
|
58
|
+
};
|
|
59
|
+
return {
|
|
60
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
return errorToToolResult(err);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=comfyui-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comfyui-settings.js","sourceRoot":"","sources":["../../src/tools/comfyui-settings.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.js
CHANGED
|
@@ -46,6 +46,9 @@ import { registerWorkflowLockTools } from "./workflow-lock.js";
|
|
|
46
46
|
import { registerSkillsAccessTools } from "./skills-access.js";
|
|
47
47
|
import { registerInstallPanelTools } from "./install-panel.js";
|
|
48
48
|
import { registerSelfUpdateTools } from "./self-update.js";
|
|
49
|
+
import { registerCalculateTools } from "./calculate.js";
|
|
50
|
+
import { registerComfyUISettingsTools } from "./comfyui-settings.js";
|
|
51
|
+
import { registerNodeDevTools } from "./node-dev.js";
|
|
49
52
|
import { DefaultsManager } from "../services/defaults-manager.js";
|
|
50
53
|
import { ToolCatalog } from "./catalog.js";
|
|
51
54
|
/**
|
|
@@ -101,6 +104,9 @@ const TOOL_GROUPS = [
|
|
|
101
104
|
["skills-config", registerSkillsAccessTools],
|
|
102
105
|
["server", registerInstallPanelTools],
|
|
103
106
|
["server", registerSelfUpdateTools],
|
|
107
|
+
["diagnostics", registerCalculateTools],
|
|
108
|
+
["server", registerComfyUISettingsTools],
|
|
109
|
+
["custom-nodes", registerNodeDevTools],
|
|
104
110
|
];
|
|
105
111
|
export async function registerAllTools(server) {
|
|
106
112
|
// Hydrate persisted defaults before any tool registration so subsequent
|