comfyui-mcp 0.4.0 → 0.5.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/README.md +68 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +37 -5
- package/dist/config.js.map +1 -1
- package/dist/index.js +27 -10
- package/dist/index.js.map +1 -1
- package/dist/services/generate-conditioned.d.ts +50 -0
- package/dist/services/generate-conditioned.d.ts.map +1 -0
- package/dist/services/generate-conditioned.js +95 -0
- package/dist/services/generate-conditioned.js.map +1 -0
- package/dist/services/workflow-composer.d.ts.map +1 -1
- package/dist/services/workflow-composer.js +145 -0
- package/dist/services/workflow-composer.js.map +1 -1
- package/dist/tools/generate-conditioned.d.ts +3 -0
- package/dist/tools/generate-conditioned.d.ts.map +1 -0
- package/dist/tools/generate-conditioned.js +78 -0
- package/dist/tools/generate-conditioned.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/transport/cli.d.ts +15 -0
- package/dist/transport/cli.d.ts.map +1 -0
- package/dist/transport/cli.js +48 -0
- package/dist/transport/cli.js.map +1 -0
- package/dist/transport/comfyui-url.d.ts +12 -0
- package/dist/transport/comfyui-url.d.ts.map +1 -0
- package/dist/transport/comfyui-url.js +15 -0
- package/dist/transport/comfyui-url.js.map +1 -0
- package/dist/transport/http.d.ts +17 -0
- package/dist/transport/http.d.ts.map +1 -0
- package/dist/transport/http.js +95 -0
- package/dist/transport/http.js.map +1 -0
- package/package.json +2 -1
- package/server.json +21 -0
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
Works on **macOS**, **Linux**, and **Windows**. Auto-detects your ComfyUI installation and port.
|
|
10
10
|
|
|
11
|
-
**
|
|
11
|
+
**46 MCP tools** | **10 slash commands** | **4 knowledge skills** | **3 autonomous agents** | **3 hooks**
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -104,7 +104,31 @@ claude plugin install comfyui-mcp
|
|
|
104
104
|
|
|
105
105
|
## MCP Tools
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
46 tools across workflow execution, generation, iteration, composition, models, and more:
|
|
108
|
+
|
|
109
|
+
### Image Generation (high-level)
|
|
110
|
+
|
|
111
|
+
| Tool | Description |
|
|
112
|
+
|------|-------------|
|
|
113
|
+
| `generate_image` | Generate from a text prompt — builds a txt2img workflow, fills unspecified params from your defaults, auto-selects a checkpoint |
|
|
114
|
+
| `generate_with_controlnet` | Generate conditioned by a ControlNet image (pose/depth/canny/normal) + prompt |
|
|
115
|
+
| `generate_with_ip_adapter` | Generate guided by a reference image's style/subject via IP-Adapter (needs ComfyUI_IPAdapter_plus) |
|
|
116
|
+
|
|
117
|
+
### Assets & Iteration
|
|
118
|
+
|
|
119
|
+
| Tool | Description |
|
|
120
|
+
|------|-------------|
|
|
121
|
+
| `view_image` | Return a generated asset's bytes as an inline image so the agent can see the result |
|
|
122
|
+
| `regenerate` | Re-run the workflow that produced an `asset_id`, with optional parameter overrides |
|
|
123
|
+
| `list_assets` | Browse recently generated assets (newest-first) by `asset_id` |
|
|
124
|
+
| `get_asset_metadata` | Full provenance for an asset, including the originating workflow |
|
|
125
|
+
|
|
126
|
+
### Defaults
|
|
127
|
+
|
|
128
|
+
| Tool | Description |
|
|
129
|
+
|------|-------------|
|
|
130
|
+
| `get_defaults` | Show merged generation defaults with per-source attribution |
|
|
131
|
+
| `set_defaults` | Update runtime defaults; `persist: true` writes the config file |
|
|
108
132
|
|
|
109
133
|
### Workflow Execution
|
|
110
134
|
|
|
@@ -379,6 +403,7 @@ The server auto-detects your ComfyUI installation and port. Override with enviro
|
|
|
379
403
|
|
|
380
404
|
| Variable | Default | Description |
|
|
381
405
|
|----------|---------|-------------|
|
|
406
|
+
| `COMFYUI_URL` | | Full ComfyUI URL, e.g. `https://comfy.example.com:8443` — overrides `COMFYUI_HOST`/`PORT`/`SSL` and skips auto-detection (use for remote ComfyUI) |
|
|
382
407
|
| `COMFYUI_HOST` | `127.0.0.1` | ComfyUI server address |
|
|
383
408
|
| `COMFYUI_PORT` | *(auto-detect)* | ComfyUI server port (tries 8188, then 8000) |
|
|
384
409
|
| `COMFYUI_PATH` | *(auto-detect)* | Path to ComfyUI data directory |
|
|
@@ -387,6 +412,35 @@ The server auto-detects your ComfyUI installation and port. Override with enviro
|
|
|
387
412
|
| `GITHUB_TOKEN` | | GitHub token for skill generation (avoids rate limits) |
|
|
388
413
|
| `LOG_LEVEL` | `info` | Logging verbosity: `debug`, `info`, `warn`, `error` |
|
|
389
414
|
|
|
415
|
+
### Transports
|
|
416
|
+
|
|
417
|
+
The server speaks **stdio by default** (what Claude Code, Claude Desktop, and the MCP Inspector expect — no flags needed). For MCP gateways, remote/hosted setups, or `fetch`-based clients, opt into **streamable-HTTP**:
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
# stdio (default)
|
|
421
|
+
npx -y comfyui-mcp
|
|
422
|
+
|
|
423
|
+
# streamable-HTTP on http://127.0.0.1:9100/mcp
|
|
424
|
+
npx -y comfyui-mcp --http
|
|
425
|
+
npx -y comfyui-mcp --http --host 0.0.0.0 --port 9100 # bind/port overrides
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
| Flag | Env | Default | Description |
|
|
429
|
+
|------|-----|---------|-------------|
|
|
430
|
+
| `--http` / `--transport http` | `MCP_TRANSPORT=http` | `stdio` | Serve streamable-HTTP at `/mcp` instead of stdio |
|
|
431
|
+
| `--host <h>` | `MCP_HOST` | `127.0.0.1` | HTTP bind host (use `0.0.0.0` to expose) |
|
|
432
|
+
| `--port <n>` | `MCP_PORT` | `9100` | HTTP port |
|
|
433
|
+
| `--comfyui-url <url>` | `COMFYUI_URL` | *(auto-detect)* | Target a specific (incl. remote) ComfyUI |
|
|
434
|
+
|
|
435
|
+
### Remote ComfyUI
|
|
436
|
+
|
|
437
|
+
Point the server at a ComfyUI running anywhere — no local install required:
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
npx -y comfyui-mcp --comfyui-url http://192.168.1.50:8188
|
|
441
|
+
npx -y comfyui-mcp --http --comfyui-url https://comfy.example.com:8443
|
|
442
|
+
```
|
|
443
|
+
|
|
390
444
|
### Auto-detection
|
|
391
445
|
|
|
392
446
|
**Port**: Probes `8188` (CLI default) then `8000` (Desktop app default) via `/system_stats`.
|
|
@@ -591,6 +645,18 @@ MIT — see [LICENSE](./LICENSE) for details.
|
|
|
591
645
|
|
|
592
646
|
## Changelog
|
|
593
647
|
|
|
648
|
+
### 0.5.0 — 2026-05-21
|
|
649
|
+
|
|
650
|
+
- **Streamable-HTTP transport** — opt in with `--http` (or `MCP_TRANSPORT=http`) to serve MCP over HTTP at `/mcp` for gateways, remote, and `fetch`-based clients. stdio remains the default; `--host`/`--port` configure the bind.
|
|
651
|
+
- **Remote ComfyUI** — `--comfyui-url` / `COMFYUI_URL` targets any (incl. remote) ComfyUI instance, overriding host/port/ssl and skipping auto-detection.
|
|
652
|
+
- **`generate_with_controlnet`** — ControlNet-conditioned generation (pose/depth/canny/normal) from a control image + prompt.
|
|
653
|
+
- **`generate_with_ip_adapter`** — reference-image style/subject guidance via IP-Adapter (requires ComfyUI_IPAdapter_plus).
|
|
654
|
+
- Two new `create_workflow` templates: `controlnet`, `ip_adapter`.
|
|
655
|
+
|
|
656
|
+
### 0.4.1 — 2026-05-21
|
|
657
|
+
|
|
658
|
+
- Added `server.json` and an `mcpName` field to `package.json` for publishing to the official [MCP Registry](https://github.com/modelcontextprotocol/registry) (`io.github.artokun/comfyui-mcp`).
|
|
659
|
+
|
|
594
660
|
### 0.4.0 — 2026-05-20
|
|
595
661
|
|
|
596
662
|
**Iteration & convenience tools** — closing the generate → see → iterate loop:
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwKxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;EAQhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAmB7E,eAAO,MAAM,MAAM,EAAE,MAA0C,CAAC;AAEhE,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,OAAO,CAErD"}
|
package/dist/config.js
CHANGED
|
@@ -4,6 +4,7 @@ import { fileURLToPath } from "url";
|
|
|
4
4
|
import { dirname, resolve, join } from "path";
|
|
5
5
|
import { existsSync, readdirSync } from "node:fs";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
|
+
import { parseComfyUIUrl } from "./transport/comfyui-url.js";
|
|
7
8
|
// Resolve .env from the package root, not process.cwd()
|
|
8
9
|
const __filename = fileURLToPath(import.meta.url);
|
|
9
10
|
const __dirname = dirname(__filename);
|
|
@@ -116,6 +117,35 @@ async function detectComfyUIPort(host) {
|
|
|
116
117
|
console.error(`[comfyui-mcp] ComfyUI not detected on ports ${ports.join(", ")}. Defaulting to 8188.`);
|
|
117
118
|
return 8188;
|
|
118
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Resolve a ComfyUI target from --comfyui-url (argv) or COMFYUI_URL (env).
|
|
122
|
+
* Takes precedence over COMFYUI_HOST/PORT/SSL and skips port auto-detection.
|
|
123
|
+
*/
|
|
124
|
+
function resolveUrlOverride() {
|
|
125
|
+
const argv = process.argv.slice(2);
|
|
126
|
+
let raw;
|
|
127
|
+
for (let i = 0; i < argv.length; i++) {
|
|
128
|
+
const a = argv[i];
|
|
129
|
+
if (a === "--comfyui-url") {
|
|
130
|
+
raw = argv[i + 1];
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
if (a.startsWith("--comfyui-url=")) {
|
|
134
|
+
raw = a.slice("--comfyui-url=".length);
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
raw = raw ?? process.env.COMFYUI_URL;
|
|
139
|
+
if (!raw)
|
|
140
|
+
return undefined;
|
|
141
|
+
try {
|
|
142
|
+
return parseComfyUIUrl(raw);
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
console.error(`[comfyui-mcp] Ignoring invalid --comfyui-url/COMFYUI_URL "${raw}": ${err instanceof Error ? err.message : err}`);
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
119
149
|
const configSchema = z.object({
|
|
120
150
|
comfyuiHost: z.string().default("127.0.0.1"),
|
|
121
151
|
comfyuiPort: z.coerce.number().int().positive().optional(),
|
|
@@ -125,18 +155,20 @@ const configSchema = z.object({
|
|
|
125
155
|
githubToken: z.string().optional(),
|
|
126
156
|
civitaiApiToken: z.string().optional(),
|
|
127
157
|
});
|
|
158
|
+
const urlOverride = resolveUrlOverride();
|
|
128
159
|
const parsedConfig = configSchema.parse({
|
|
129
|
-
comfyuiHost: process.env.COMFYUI_HOST,
|
|
130
|
-
comfyuiPort: process.env.COMFYUI_PORT || undefined,
|
|
131
|
-
comfyuiSsl: process.env.COMFYUI_SSL,
|
|
160
|
+
comfyuiHost: urlOverride?.host ?? process.env.COMFYUI_HOST,
|
|
161
|
+
comfyuiPort: urlOverride?.port ?? (process.env.COMFYUI_PORT || undefined),
|
|
162
|
+
comfyuiSsl: urlOverride?.ssl ?? process.env.COMFYUI_SSL,
|
|
132
163
|
comfyuiPath: resolveComfyUIPath(process.env.COMFYUI_PATH),
|
|
133
164
|
huggingfaceToken: process.env.HUGGINGFACE_TOKEN,
|
|
134
165
|
githubToken: process.env.GITHUB_TOKEN,
|
|
135
166
|
civitaiApiToken: process.env.CIVITAI_API_TOKEN,
|
|
136
167
|
});
|
|
137
|
-
// Resolve port: explicit env
|
|
168
|
+
// Resolve port: explicit url/env wins, otherwise auto-detect.
|
|
169
|
+
// A --comfyui-url/COMFYUI_URL override always carries a port, so detection is skipped.
|
|
138
170
|
const resolvedPort = parsedConfig.comfyuiPort
|
|
139
|
-
?? await detectComfyUIPort(parsedConfig.comfyuiHost);
|
|
171
|
+
?? (urlOverride ? urlOverride.port : await detectComfyUIPort(parsedConfig.comfyuiHost));
|
|
140
172
|
export const config = { ...parsedConfig, resolvedPort };
|
|
141
173
|
export function getComfyUIApiHost() {
|
|
142
174
|
return `${config.comfyuiHost}:${config.resolvedPort}`;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,18 +4,35 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
4
4
|
import { registerAllTools } from "./tools/index.js";
|
|
5
5
|
import { logger } from "./utils/logger.js";
|
|
6
6
|
import { JobWatcher } from "./services/job-watcher.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
import { parseCliArgs } from "./transport/cli.js";
|
|
8
|
+
import { startHttpServer } from "./transport/http.js";
|
|
9
|
+
async function createConfiguredServer() {
|
|
10
|
+
const server = new McpServer({
|
|
11
|
+
name: "comfyui-mcp",
|
|
12
|
+
version: "0.1.0",
|
|
13
|
+
}, {
|
|
14
|
+
capabilities: { tools: {} },
|
|
15
|
+
});
|
|
14
16
|
await registerAllTools(server);
|
|
17
|
+
return server;
|
|
18
|
+
}
|
|
19
|
+
async function main() {
|
|
20
|
+
const cli = parseCliArgs(process.argv);
|
|
15
21
|
await JobWatcher.cleanupOldFiles();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
22
|
+
if (cli.transport === "http") {
|
|
23
|
+
await startHttpServer({
|
|
24
|
+
host: cli.host,
|
|
25
|
+
port: cli.port,
|
|
26
|
+
createServer: createConfiguredServer,
|
|
27
|
+
});
|
|
28
|
+
logger.info(`ComfyUI MCP server running on http://${cli.host}:${cli.port}/mcp`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const server = await createConfiguredServer();
|
|
32
|
+
const transport = new StdioServerTransport();
|
|
33
|
+
await server.connect(transport);
|
|
34
|
+
logger.info("ComfyUI MCP server running on stdio");
|
|
35
|
+
}
|
|
19
36
|
}
|
|
20
37
|
main().catch((err) => {
|
|
21
38
|
logger.error("Fatal error", err);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,KAAK,UAAU,sBAAsB;IACnC,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;KAC5B,CACF,CAAC;IACF,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC;IAEnC,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QAC7B,MAAM,eAAe,CAAC;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,YAAY,EAAE,sBAAsB;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,wCAAwC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { WorkflowJSON } from "../comfyui/types.js";
|
|
2
|
+
interface CommonArgs {
|
|
3
|
+
prompt: string;
|
|
4
|
+
negative_prompt?: string;
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
steps?: number;
|
|
8
|
+
cfg?: number;
|
|
9
|
+
sampler?: string;
|
|
10
|
+
scheduler?: string;
|
|
11
|
+
seed?: number;
|
|
12
|
+
checkpoint?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ControlNetArgs extends CommonArgs {
|
|
15
|
+
control_image: string;
|
|
16
|
+
controlnet_model?: string;
|
|
17
|
+
strength?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface IpAdapterArgs extends CommonArgs {
|
|
20
|
+
reference_image: string;
|
|
21
|
+
weight?: number;
|
|
22
|
+
preset?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ConditionedDeps {
|
|
25
|
+
resolveCheckpoint: () => Promise<string | undefined>;
|
|
26
|
+
enqueue: (workflow: WorkflowJSON) => Promise<{
|
|
27
|
+
prompt_id: string;
|
|
28
|
+
queue_remaining?: number;
|
|
29
|
+
}>;
|
|
30
|
+
/** Optional: resolve a local ControlNet model when none is given/defaulted. */
|
|
31
|
+
resolveControlNetModel?: () => Promise<string | undefined>;
|
|
32
|
+
}
|
|
33
|
+
export interface ConditionedResult {
|
|
34
|
+
prompt_id: string;
|
|
35
|
+
queue_remaining?: number;
|
|
36
|
+
checkpoint: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build + enqueue a ControlNet-conditioned txt2img workflow. `control_image`
|
|
40
|
+
* must already exist in ComfyUI's input dir (use upload_image first).
|
|
41
|
+
*/
|
|
42
|
+
export declare function generateWithControlNet(args: ControlNetArgs, deps: ConditionedDeps): Promise<ConditionedResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Build + enqueue an IP-Adapter-conditioned txt2img workflow. Requires the
|
|
45
|
+
* ComfyUI_IPAdapter_plus custom nodes. `reference_image` must already exist in
|
|
46
|
+
* ComfyUI's input dir (use upload_image first).
|
|
47
|
+
*/
|
|
48
|
+
export declare function generateWithIpAdapter(args: IpAdapterArgs, deps: ConditionedDeps): Promise<ConditionedResult>;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=generate-conditioned.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-conditioned.d.ts","sourceRoot":"","sources":["../../src/services/generate-conditioned.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0DD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CA2B5B;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { createWorkflow } from "./workflow-composer.js";
|
|
2
|
+
import { DefaultsManager } from "./defaults-manager.js";
|
|
3
|
+
import { ValidationError } from "../utils/errors.js";
|
|
4
|
+
const DEFAULTABLE_KEYS = [
|
|
5
|
+
"negative_prompt",
|
|
6
|
+
"width",
|
|
7
|
+
"height",
|
|
8
|
+
"steps",
|
|
9
|
+
"cfg",
|
|
10
|
+
"sampler",
|
|
11
|
+
"scheduler",
|
|
12
|
+
"seed",
|
|
13
|
+
"checkpoint",
|
|
14
|
+
];
|
|
15
|
+
function withDefaults(args) {
|
|
16
|
+
const seed = {};
|
|
17
|
+
for (const key of DEFAULTABLE_KEYS) {
|
|
18
|
+
const v = args[key];
|
|
19
|
+
if (v !== undefined)
|
|
20
|
+
seed[key] = v;
|
|
21
|
+
}
|
|
22
|
+
return DefaultsManager.apply(seed);
|
|
23
|
+
}
|
|
24
|
+
async function resolveCheckpointOrThrow(explicit, resolved, resolveCheckpoint) {
|
|
25
|
+
let checkpoint = explicit ?? resolved.checkpoint;
|
|
26
|
+
if (!checkpoint)
|
|
27
|
+
checkpoint = await resolveCheckpoint();
|
|
28
|
+
if (!checkpoint) {
|
|
29
|
+
throw new ValidationError("No checkpoint specified, defaulted, or found locally. " +
|
|
30
|
+
"Pass `checkpoint`, set a default via set_defaults, or download one with download_model.");
|
|
31
|
+
}
|
|
32
|
+
return checkpoint;
|
|
33
|
+
}
|
|
34
|
+
function commonTemplateParams(args, resolved, checkpoint) {
|
|
35
|
+
return {
|
|
36
|
+
checkpoint,
|
|
37
|
+
positive_prompt: args.prompt,
|
|
38
|
+
negative_prompt: resolved.negative_prompt,
|
|
39
|
+
width: resolved.width,
|
|
40
|
+
height: resolved.height,
|
|
41
|
+
steps: resolved.steps,
|
|
42
|
+
cfg: resolved.cfg,
|
|
43
|
+
seed: resolved.seed,
|
|
44
|
+
sampler_name: resolved.sampler,
|
|
45
|
+
scheduler: resolved.scheduler,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Build + enqueue a ControlNet-conditioned txt2img workflow. `control_image`
|
|
50
|
+
* must already exist in ComfyUI's input dir (use upload_image first).
|
|
51
|
+
*/
|
|
52
|
+
export async function generateWithControlNet(args, deps) {
|
|
53
|
+
if (!args.control_image) {
|
|
54
|
+
throw new ValidationError("control_image is required (upload it first with upload_image)");
|
|
55
|
+
}
|
|
56
|
+
const resolved = withDefaults(args);
|
|
57
|
+
const checkpoint = await resolveCheckpointOrThrow(args.checkpoint, resolved, deps.resolveCheckpoint);
|
|
58
|
+
let controlnetModel = args.controlnet_model;
|
|
59
|
+
if (!controlnetModel && deps.resolveControlNetModel) {
|
|
60
|
+
controlnetModel = await deps.resolveControlNetModel();
|
|
61
|
+
}
|
|
62
|
+
if (!controlnetModel) {
|
|
63
|
+
throw new ValidationError("No controlnet_model specified and none found locally. Pass `controlnet_model` " +
|
|
64
|
+
"(a file in models/controlnet/) or download one with download_model.");
|
|
65
|
+
}
|
|
66
|
+
const workflow = createWorkflow("controlnet", {
|
|
67
|
+
...commonTemplateParams(args, resolved, checkpoint),
|
|
68
|
+
control_image: args.control_image,
|
|
69
|
+
controlnet_model: controlnetModel,
|
|
70
|
+
strength: args.strength,
|
|
71
|
+
});
|
|
72
|
+
const { prompt_id, queue_remaining } = await deps.enqueue(workflow);
|
|
73
|
+
return { prompt_id, queue_remaining, checkpoint };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build + enqueue an IP-Adapter-conditioned txt2img workflow. Requires the
|
|
77
|
+
* ComfyUI_IPAdapter_plus custom nodes. `reference_image` must already exist in
|
|
78
|
+
* ComfyUI's input dir (use upload_image first).
|
|
79
|
+
*/
|
|
80
|
+
export async function generateWithIpAdapter(args, deps) {
|
|
81
|
+
if (!args.reference_image) {
|
|
82
|
+
throw new ValidationError("reference_image is required (upload it first with upload_image)");
|
|
83
|
+
}
|
|
84
|
+
const resolved = withDefaults(args);
|
|
85
|
+
const checkpoint = await resolveCheckpointOrThrow(args.checkpoint, resolved, deps.resolveCheckpoint);
|
|
86
|
+
const workflow = createWorkflow("ip_adapter", {
|
|
87
|
+
...commonTemplateParams(args, resolved, checkpoint),
|
|
88
|
+
reference_image: args.reference_image,
|
|
89
|
+
weight: args.weight,
|
|
90
|
+
preset: args.preset,
|
|
91
|
+
});
|
|
92
|
+
const { prompt_id, queue_remaining } = await deps.enqueue(workflow);
|
|
93
|
+
return { prompt_id, queue_remaining, checkpoint };
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=generate-conditioned.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-conditioned.js","sourceRoot":"","sources":["../../src/services/generate-conditioned.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-composer.d.ts","sourceRoot":"","sources":["../../src/services/workflow-composer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AAKtE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAG5D;
|
|
1
|
+
{"version":3,"file":"workflow-composer.d.ts","sourceRoot":"","sources":["../../src/services/workflow-composer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AAKtE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAG5D;AA2aD,eAAO,MAAM,cAAc,UAAyB,CAAC;AAErD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,YAAY,CAQd;AAID,UAAU,UAAU;IAClB,EAAE,EAAE,WAAW,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,UAAU,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,aAAa,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,SAAS,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,gBAAgB,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,SAAS,GACT,YAAY,GACZ,SAAS,GACT,eAAe,CAAC;AA+EpB,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,eAAe,EAAE,GAC5B;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAgCjD"}
|
|
@@ -214,11 +214,156 @@ function buildInpaint(p) {
|
|
|
214
214
|
},
|
|
215
215
|
};
|
|
216
216
|
}
|
|
217
|
+
function buildControlNet(p) {
|
|
218
|
+
const ckpt = p.checkpoint ?? "sd_xl_base_1.0.safetensors";
|
|
219
|
+
const positive = p.positive_prompt ?? "";
|
|
220
|
+
const negative = p.negative_prompt ?? "";
|
|
221
|
+
const width = p.width ?? 1024;
|
|
222
|
+
const height = p.height ?? 1024;
|
|
223
|
+
const steps = p.steps ?? 20;
|
|
224
|
+
const cfg = p.cfg ?? 8.0;
|
|
225
|
+
const seed = p.seed ?? Math.floor(Math.random() * 2 ** 48);
|
|
226
|
+
const sampler = p.sampler_name ?? "euler";
|
|
227
|
+
const scheduler = p.scheduler ?? "normal";
|
|
228
|
+
const controlNet = p.controlnet_model ?? "control_v11p_sd15_canny.pth";
|
|
229
|
+
const controlImage = p.control_image ?? "control.png";
|
|
230
|
+
const strength = p.strength ?? 1.0;
|
|
231
|
+
return {
|
|
232
|
+
"1": { class_type: "CheckpointLoaderSimple", inputs: { ckpt_name: ckpt } },
|
|
233
|
+
"2": {
|
|
234
|
+
class_type: "LoadImage",
|
|
235
|
+
inputs: { image: controlImage },
|
|
236
|
+
_meta: { title: "Control Image" },
|
|
237
|
+
},
|
|
238
|
+
"3": { class_type: "ControlNetLoader", inputs: { control_net_name: controlNet } },
|
|
239
|
+
"4": {
|
|
240
|
+
class_type: "CLIPTextEncode",
|
|
241
|
+
inputs: { text: positive, clip: conn("1", 1) },
|
|
242
|
+
_meta: { title: "Positive Prompt" },
|
|
243
|
+
},
|
|
244
|
+
"5": {
|
|
245
|
+
class_type: "CLIPTextEncode",
|
|
246
|
+
inputs: { text: negative, clip: conn("1", 1) },
|
|
247
|
+
_meta: { title: "Negative Prompt" },
|
|
248
|
+
},
|
|
249
|
+
"6": {
|
|
250
|
+
class_type: "ControlNetApplyAdvanced",
|
|
251
|
+
inputs: {
|
|
252
|
+
positive: conn("4", 0),
|
|
253
|
+
negative: conn("5", 0),
|
|
254
|
+
control_net: conn("3", 0),
|
|
255
|
+
image: conn("2", 0),
|
|
256
|
+
strength,
|
|
257
|
+
start_percent: 0.0,
|
|
258
|
+
end_percent: 1.0,
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
"7": {
|
|
262
|
+
class_type: "EmptyLatentImage",
|
|
263
|
+
inputs: { width, height, batch_size: 1 },
|
|
264
|
+
},
|
|
265
|
+
"8": {
|
|
266
|
+
class_type: "KSampler",
|
|
267
|
+
inputs: {
|
|
268
|
+
model: conn("1", 0),
|
|
269
|
+
positive: conn("6", 0),
|
|
270
|
+
negative: conn("6", 1),
|
|
271
|
+
latent_image: conn("7", 0),
|
|
272
|
+
seed,
|
|
273
|
+
steps,
|
|
274
|
+
cfg,
|
|
275
|
+
sampler_name: sampler,
|
|
276
|
+
scheduler,
|
|
277
|
+
denoise: 1.0,
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
"9": { class_type: "VAEDecode", inputs: { samples: conn("8", 0), vae: conn("1", 2) } },
|
|
281
|
+
"10": {
|
|
282
|
+
class_type: "SaveImage",
|
|
283
|
+
inputs: { images: conn("9", 0), filename_prefix: "ComfyUI_controlnet" },
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
// Requires the ComfyUI_IPAdapter_plus custom node pack (IPAdapterUnifiedLoader, IPAdapter).
|
|
288
|
+
function buildIpAdapter(p) {
|
|
289
|
+
const ckpt = p.checkpoint ?? "sd_xl_base_1.0.safetensors";
|
|
290
|
+
const positive = p.positive_prompt ?? "";
|
|
291
|
+
const negative = p.negative_prompt ?? "";
|
|
292
|
+
const width = p.width ?? 1024;
|
|
293
|
+
const height = p.height ?? 1024;
|
|
294
|
+
const steps = p.steps ?? 20;
|
|
295
|
+
const cfg = p.cfg ?? 8.0;
|
|
296
|
+
const seed = p.seed ?? Math.floor(Math.random() * 2 ** 48);
|
|
297
|
+
const sampler = p.sampler_name ?? "euler";
|
|
298
|
+
const scheduler = p.scheduler ?? "normal";
|
|
299
|
+
const refImage = p.reference_image ?? "reference.png";
|
|
300
|
+
const weight = p.weight ?? 0.8;
|
|
301
|
+
const preset = p.preset ?? "PLUS (high strength)";
|
|
302
|
+
return {
|
|
303
|
+
"1": { class_type: "CheckpointLoaderSimple", inputs: { ckpt_name: ckpt } },
|
|
304
|
+
"2": {
|
|
305
|
+
class_type: "LoadImage",
|
|
306
|
+
inputs: { image: refImage },
|
|
307
|
+
_meta: { title: "Reference Image" },
|
|
308
|
+
},
|
|
309
|
+
"3": {
|
|
310
|
+
class_type: "IPAdapterUnifiedLoader",
|
|
311
|
+
inputs: { model: conn("1", 0), preset },
|
|
312
|
+
},
|
|
313
|
+
"4": {
|
|
314
|
+
class_type: "IPAdapter",
|
|
315
|
+
inputs: {
|
|
316
|
+
model: conn("3", 0),
|
|
317
|
+
ipadapter: conn("3", 1),
|
|
318
|
+
image: conn("2", 0),
|
|
319
|
+
weight,
|
|
320
|
+
start_at: 0.0,
|
|
321
|
+
end_at: 1.0,
|
|
322
|
+
},
|
|
323
|
+
},
|
|
324
|
+
"5": {
|
|
325
|
+
class_type: "CLIPTextEncode",
|
|
326
|
+
inputs: { text: positive, clip: conn("1", 1) },
|
|
327
|
+
_meta: { title: "Positive Prompt" },
|
|
328
|
+
},
|
|
329
|
+
"6": {
|
|
330
|
+
class_type: "CLIPTextEncode",
|
|
331
|
+
inputs: { text: negative, clip: conn("1", 1) },
|
|
332
|
+
_meta: { title: "Negative Prompt" },
|
|
333
|
+
},
|
|
334
|
+
"7": {
|
|
335
|
+
class_type: "EmptyLatentImage",
|
|
336
|
+
inputs: { width, height, batch_size: 1 },
|
|
337
|
+
},
|
|
338
|
+
"8": {
|
|
339
|
+
class_type: "KSampler",
|
|
340
|
+
inputs: {
|
|
341
|
+
model: conn("4", 0),
|
|
342
|
+
positive: conn("5", 0),
|
|
343
|
+
negative: conn("6", 0),
|
|
344
|
+
latent_image: conn("7", 0),
|
|
345
|
+
seed,
|
|
346
|
+
steps,
|
|
347
|
+
cfg,
|
|
348
|
+
sampler_name: sampler,
|
|
349
|
+
scheduler,
|
|
350
|
+
denoise: 1.0,
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
"9": { class_type: "VAEDecode", inputs: { samples: conn("8", 0), vae: conn("1", 2) } },
|
|
354
|
+
"10": {
|
|
355
|
+
class_type: "SaveImage",
|
|
356
|
+
inputs: { images: conn("9", 0), filename_prefix: "ComfyUI_ipadapter" },
|
|
357
|
+
},
|
|
358
|
+
};
|
|
359
|
+
}
|
|
217
360
|
const TEMPLATES = {
|
|
218
361
|
txt2img: (p) => buildTxt2Img(p),
|
|
219
362
|
img2img: (p) => buildImg2Img(p),
|
|
220
363
|
upscale: (p) => buildUpscale(p),
|
|
221
364
|
inpaint: (p) => buildInpaint(p),
|
|
365
|
+
controlnet: (p) => buildControlNet(p),
|
|
366
|
+
ip_adapter: (p) => buildIpAdapter(p),
|
|
222
367
|
};
|
|
223
368
|
export const TEMPLATE_NAMES = Object.keys(TEMPLATES);
|
|
224
369
|
export function createWorkflow(template, params = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-composer.js","sourceRoot":"","sources":["../../src/services/workflow-composer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-composer.js","sourceRoot":"","sources":["../../src/services/workflow-composer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,kBAAkB;AAElB,MAAM,UAAU,aAAa,CAAC,QAAsB;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,IAAI,CAAC,MAAc,EAAE,WAAmB;IAC/C,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC/B,CAAC;AAmDD,oBAAoB;AAEpB,SAAS,YAAY,CAAC,CAAgB;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,4BAA4B,CAAC;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC;IAC1C,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC;IAE1C,OAAO;QACL,GAAG,EAAE;YACH,UAAU,EAAE,wBAAwB;YACpC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAC5B;QACD,GAAG,EAAE;YACH,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,kBAAkB;YAC9B,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE;SACzC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1B,IAAI;gBACJ,KAAK;gBACL,GAAG;gBACH,YAAY,EAAE,OAAO;gBACrB,SAAS;gBACT,OAAO,EAAE,GAAG;aACb;SACF;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;SACrD;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE;SAC7D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,CAAgB;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,4BAA4B,CAAC;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC;IAC1C,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC;IAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;IAClC,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,IAAI,WAAW,CAAC;IAE9C,OAAO;QACL,GAAG,EAAE;YACH,UAAU,EAAE,wBAAwB;YACpC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAC5B;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;SAC7B;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;SACpD;QACD,GAAG,EAAE;YACH,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1B,IAAI;gBACJ,KAAK;gBACL,GAAG;gBACH,YAAY,EAAE,OAAO;gBACrB,SAAS;gBACT,OAAO;aACR;SACF;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;SACrD;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE;SAC7D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,CAAgB;IACpC,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,IAAI,uBAAuB,CAAC;IACzD,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,IAAI,WAAW,CAAC;IAE9C,OAAO;QACL,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;SAC7B;QACD,GAAG,EAAE;YACH,UAAU,EAAE,oBAAoB;YAChC,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;SAC9B;QACD,GAAG,EAAE;YACH,UAAU,EAAE,uBAAuB;YACnC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;SAC7D;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,iBAAiB,EAAE;SACrE;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,CAAgB;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,4BAA4B,CAAC;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC;IAC1C,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC;IAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;IAClC,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,IAAI,WAAW,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,IAAI,UAAU,CAAC;IAE3C,OAAO;QACL,GAAG,EAAE;YACH,UAAU,EAAE,wBAAwB;YACpC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAC5B;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YAC5B,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;SAChC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC3B,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SACzB;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;SACpD;QACD,GAAG,EAAE;YACH,UAAU,EAAE,oBAAoB;YAChC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;SACtD;QACD,GAAG,EAAE;YACH,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1B,IAAI;gBACJ,KAAK;gBACL,GAAG;gBACH,YAAY,EAAE,OAAO;gBACrB,SAAS;gBACT,OAAO;aACR;SACF;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;SACrD;QACD,IAAI,EAAE;YACJ,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,iBAAiB,EAAE;SACrE;KACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,CAAmB;IAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,4BAA4B,CAAC;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC;IAC1C,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC;IAC1C,MAAM,UAAU,GAAG,CAAC,CAAC,gBAAgB,IAAI,6BAA6B,CAAC;IACvE,MAAM,YAAY,GAAG,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC;IACtD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC;IAEnC,OAAO;QACL,GAAG,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QAC1E,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;YAC/B,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;SAClC;QACD,GAAG,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE;QACjF,GAAG,EAAE;YACH,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,yBAAyB;YACrC,MAAM,EAAE;gBACN,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACzB,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,QAAQ;gBACR,aAAa,EAAE,GAAG;gBAClB,WAAW,EAAE,GAAG;aACjB;SACF;QACD,GAAG,EAAE;YACH,UAAU,EAAE,kBAAkB;YAC9B,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE;SACzC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1B,IAAI;gBACJ,KAAK;gBACL,GAAG;gBACH,YAAY,EAAE,OAAO;gBACrB,SAAS;gBACT,OAAO,EAAE,GAAG;aACb;SACF;QACD,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;QACtF,IAAI,EAAE;YACJ,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,oBAAoB,EAAE;SACxE;KACF,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,SAAS,cAAc,CAAC,CAAkB;IACxC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,4BAA4B,CAAC;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC;IAC1C,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC;IAC1C,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,IAAI,eAAe,CAAC;IACtD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;IAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,sBAAsB,CAAC;IAElD,OAAO;QACL,GAAG,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QAC1E,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC3B,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,wBAAwB;YACpC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE;SACxC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvB,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,MAAM;gBACN,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE,GAAG;aACZ;SACF;QACD,GAAG,EAAE;YACH,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;SACpC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,kBAAkB;YAC9B,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE;SACzC;QACD,GAAG,EAAE;YACH,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1B,IAAI;gBACJ,KAAK;gBACL,GAAG;gBACH,YAAY,EAAE,OAAO;gBACrB,SAAS;gBACT,OAAO,EAAE,GAAG;aACb;SACF;QACD,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;QACtF,IAAI,EAAE;YACJ,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,mBAAmB,EAAE;SACvE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAsE;IACnF,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAkB,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAkB,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAkB,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAkB,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAqB,CAAC;IACzD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAoB,CAAC;CACxD,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAErD,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,SAAkC,EAAE;IAEpC,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CACvB,qBAAqB,QAAQ,iBAAiB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAgDD,SAAS,aAAa,CAAC,EAAgB,EAAE,EAAc;IACrD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;AACxC,CAAC;AAED,SAAS,YAAY,CAAC,EAAgB,EAAE,EAAa;IACnD,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACxE,EAAE,CAAC,EAAE,CAAC,GAAG;QACP,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,MAAM,EAAE,EAAE,CAAC,MAAM,IAAI,EAAE;KACxB,CAAC;IACF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,eAAe,CAAC,EAAgB,EAAE,EAAgB;IACzD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC;IACjF,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEtB,wDAAwD;IACxD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,IACE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBAClB,GAAG,CAAC,MAAM,KAAK,CAAC;gBAChB,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAC1B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EACrB,CAAC;gBACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAAgB,EAAE,EAAa;IACnD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,gBAAgB,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC;IAC5F,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,gBAAgB,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC;IAC5F,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAgB,EAAE,EAAmB;IAC/D,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,gBAAgB,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC;IAC5F,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,gBAAgB,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC;IAE5F,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,SAAS,GAA4B,EAAE,GAAG,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;IAExE,4DAA4D;IAC5D,sFAAsF;IACtF,+DAA+D;IAC/D,uEAAuE;IACvE,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC1G,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YAClD,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,qCAAqC;QACrC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,EAAE,CAAC,KAAK,CAAC,GAAG;QACV,UAAU,EAAE,EAAE,CAAC,cAAc;QAC7B,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,+DAA+D;IAC/D,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAAsB,EACtB,UAA6B;IAE7B,4CAA4C;IAC5C,MAAM,EAAE,GAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACd,KAAK,WAAW;gBACd,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtB,MAAM;YACR,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClB,MAAM;YACR,CAAC;YACD,KAAK,aAAa;gBAChB,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,SAAS;gBACZ,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrB,MAAM;YACR,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,EAAE,GAAG,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClB,MAAM;YACR,CAAC;YACD;gBACE,MAAM,IAAI,eAAe,CAAC,sBAAuB,EAAqB,CAAC,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-conditioned.d.ts","sourceRoot":"","sources":["../../src/tools/generate-conditioned.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2DzE,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsC1E"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { generateWithControlNet, generateWithIpAdapter, } from "../services/generate-conditioned.js";
|
|
3
|
+
import { enqueueWorkflow } from "../services/workflow-executor.js";
|
|
4
|
+
import { listLocalModels } from "../services/model-resolver.js";
|
|
5
|
+
import { errorToToolResult } from "../utils/errors.js";
|
|
6
|
+
async function resolveFirstModel(type) {
|
|
7
|
+
try {
|
|
8
|
+
const models = await listLocalModels(type);
|
|
9
|
+
return models[0]?.name;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const deps = {
|
|
16
|
+
resolveCheckpoint: () => resolveFirstModel("checkpoints"),
|
|
17
|
+
resolveControlNetModel: () => resolveFirstModel("controlnet"),
|
|
18
|
+
enqueue: (workflow) => enqueueWorkflow(workflow),
|
|
19
|
+
};
|
|
20
|
+
const commonShape = {
|
|
21
|
+
negative_prompt: z.string().optional(),
|
|
22
|
+
width: z.number().int().positive().optional(),
|
|
23
|
+
height: z.number().int().positive().optional(),
|
|
24
|
+
steps: z.number().int().positive().optional(),
|
|
25
|
+
cfg: z.number().positive().optional(),
|
|
26
|
+
sampler: z.string().optional(),
|
|
27
|
+
scheduler: z.string().optional(),
|
|
28
|
+
seed: z.number().int().optional(),
|
|
29
|
+
checkpoint: z.string().optional().describe("Checkpoint filename; auto-selected if omitted"),
|
|
30
|
+
};
|
|
31
|
+
function enqueuedResult(result, tool) {
|
|
32
|
+
return {
|
|
33
|
+
content: [
|
|
34
|
+
{
|
|
35
|
+
type: "text",
|
|
36
|
+
text: JSON.stringify({
|
|
37
|
+
status: "enqueued",
|
|
38
|
+
tool,
|
|
39
|
+
prompt_id: result.prompt_id,
|
|
40
|
+
queue_remaining: result.queue_remaining,
|
|
41
|
+
checkpoint: result.checkpoint,
|
|
42
|
+
note: "asset_id will be available in the completion notification; use view_image or regenerate with it.",
|
|
43
|
+
}, null, 2),
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function registerConditionedGenerationTools(server) {
|
|
49
|
+
server.tool("generate_with_controlnet", "Generate an image conditioned by a ControlNet preprocessed image (pose skeleton, depth, canny, normal, etc.) plus a text prompt. Upload the control image first with upload_image, then pass its filename as control_image. Unspecified params fall back to your defaults; checkpoint and controlnet_model auto-resolve from local models. Returns prompt_id immediately; asset_id arrives in the completion notification.", {
|
|
50
|
+
prompt: z.string().describe("Positive text prompt"),
|
|
51
|
+
control_image: z.string().describe("Filename of the (already-uploaded) control image in ComfyUI's input dir"),
|
|
52
|
+
controlnet_model: z.string().optional().describe("ControlNet model file (in models/controlnet/); auto-selected if omitted"),
|
|
53
|
+
strength: z.number().positive().optional().describe("ControlNet conditioning strength (default 1.0)"),
|
|
54
|
+
...commonShape,
|
|
55
|
+
}, async (args) => {
|
|
56
|
+
try {
|
|
57
|
+
return enqueuedResult(await generateWithControlNet(args, deps), "generate_with_controlnet");
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
return errorToToolResult(err);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
server.tool("generate_with_ip_adapter", "Generate an image guided by a reference image's style/subject via IP-Adapter, plus a text prompt. Requires the ComfyUI_IPAdapter_plus custom nodes. Upload the reference first with upload_image, then pass its filename as reference_image. Unspecified params fall back to your defaults; checkpoint auto-resolves. Returns prompt_id immediately; asset_id arrives in the completion notification.", {
|
|
64
|
+
prompt: z.string().describe("Positive text prompt"),
|
|
65
|
+
reference_image: z.string().describe("Filename of the (already-uploaded) reference image in ComfyUI's input dir"),
|
|
66
|
+
weight: z.number().optional().describe("IP-Adapter weight (default 0.8)"),
|
|
67
|
+
preset: z.string().optional().describe("IPAdapterUnifiedLoader preset (default 'PLUS (high strength)')"),
|
|
68
|
+
...commonShape,
|
|
69
|
+
}, async (args) => {
|
|
70
|
+
try {
|
|
71
|
+
return enqueuedResult(await generateWithIpAdapter(args, deps), "generate_with_ip_adapter");
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
return errorToToolResult(err);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=generate-conditioned.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-conditioned.js","sourceRoot":"","sources":["../../src/tools/generate-conditioned.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GAEtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAoB;IAC5B,iBAAiB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC;IACzD,sBAAsB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC;IAC7D,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;CACjD,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;CAC5F,CAAC;AAEF,SAAS,cAAc,CAAC,MAA2E,EAAE,IAAY;IAC/G,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;oBACE,MAAM,EAAE,UAAU;oBAClB,IAAI;oBACJ,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,IAAI,EAAE,kGAAkG;iBACzG,EACD,IAAI,EACJ,CAAC,CACF;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,MAAiB;IAClE,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,4ZAA4Z,EAC5Z;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACnD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;QAC7G,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;QAC3H,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACrG,GAAG,WAAW;KACf,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,cAAc,CAAC,MAAM,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,uYAAuY,EACvY;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACnD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2EAA2E,CAAC;QACjH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACzE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;QACxG,GAAG,WAAW;KACf,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,cAAc,CAAC,MAAM,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAC7F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvE"}
|
package/dist/tools/index.js
CHANGED
|
@@ -16,6 +16,7 @@ import { registerAssetTools } from "./assets.js";
|
|
|
16
16
|
import { registerAutoloadedWorkflows } from "./workflow-autoload.js";
|
|
17
17
|
import { registerDefaultsTools } from "./defaults.js";
|
|
18
18
|
import { registerGenerateImageTool } from "./generate-image.js";
|
|
19
|
+
import { registerConditionedGenerationTools } from "./generate-conditioned.js";
|
|
19
20
|
import { DefaultsManager } from "../services/defaults-manager.js";
|
|
20
21
|
export async function registerAllTools(server) {
|
|
21
22
|
// Hydrate persisted defaults before any tool registration so subsequent
|
|
@@ -38,6 +39,7 @@ export async function registerAllTools(server) {
|
|
|
38
39
|
registerAssetTools(server);
|
|
39
40
|
registerDefaultsTools(server);
|
|
40
41
|
registerGenerateImageTool(server);
|
|
42
|
+
registerConditionedGenerationTools(server);
|
|
41
43
|
await registerAutoloadedWorkflows(server);
|
|
42
44
|
}
|
|
43
45
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAiB;IACtD,wEAAwE;IACxE,2EAA2E;IAC3E,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;IAC7B,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAiB;IACtD,wEAAwE;IACxE,2EAA2E;IAC3E,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;IAC7B,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,kCAAkC,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type TransportMode = "stdio" | "http";
|
|
2
|
+
export interface CliOptions {
|
|
3
|
+
transport: TransportMode;
|
|
4
|
+
host: string;
|
|
5
|
+
port: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Parse transport-related CLI flags and env vars. stdio is the default so
|
|
9
|
+
* existing Claude Code / Desktop users are unaffected; --http opts into the
|
|
10
|
+
* streamable-HTTP server. Supports both "--flag value" and "--flag=value".
|
|
11
|
+
*
|
|
12
|
+
* Precedence: explicit CLI flag > env var > built-in default.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseCliArgs(argv: string[], env?: NodeJS.ProcessEnv): CliOptions;
|
|
15
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/transport/cli.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAKD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,UAAU,CAkCZ"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const DEFAULT_HOST = "127.0.0.1";
|
|
2
|
+
const DEFAULT_PORT = 9100;
|
|
3
|
+
/**
|
|
4
|
+
* Parse transport-related CLI flags and env vars. stdio is the default so
|
|
5
|
+
* existing Claude Code / Desktop users are unaffected; --http opts into the
|
|
6
|
+
* streamable-HTTP server. Supports both "--flag value" and "--flag=value".
|
|
7
|
+
*
|
|
8
|
+
* Precedence: explicit CLI flag > env var > built-in default.
|
|
9
|
+
*/
|
|
10
|
+
export function parseCliArgs(argv, env = process.env) {
|
|
11
|
+
const args = argv.slice(2);
|
|
12
|
+
let transport = env.MCP_TRANSPORT === "http" ? "http" : "stdio";
|
|
13
|
+
let host = env.MCP_HOST ?? DEFAULT_HOST;
|
|
14
|
+
let port = env.MCP_PORT ? Number(env.MCP_PORT) : DEFAULT_PORT;
|
|
15
|
+
const valueOf = (current, inline, i) => {
|
|
16
|
+
if (current.includes("="))
|
|
17
|
+
return [current.slice(current.indexOf("=") + 1), i];
|
|
18
|
+
return [args[i + 1] ?? "", i + 1];
|
|
19
|
+
};
|
|
20
|
+
for (let i = 0; i < args.length; i++) {
|
|
21
|
+
const a = args[i];
|
|
22
|
+
if (a === "--http") {
|
|
23
|
+
transport = "http";
|
|
24
|
+
}
|
|
25
|
+
else if (a === "--stdio") {
|
|
26
|
+
transport = "stdio";
|
|
27
|
+
}
|
|
28
|
+
else if (a === "--transport" || a.startsWith("--transport=")) {
|
|
29
|
+
const [v, ni] = valueOf(a, "--transport", i);
|
|
30
|
+
transport = v === "http" ? "http" : "stdio";
|
|
31
|
+
i = ni;
|
|
32
|
+
}
|
|
33
|
+
else if (a === "--host" || a.startsWith("--host=")) {
|
|
34
|
+
const [v, ni] = valueOf(a, "--host", i);
|
|
35
|
+
if (v)
|
|
36
|
+
host = v;
|
|
37
|
+
i = ni;
|
|
38
|
+
}
|
|
39
|
+
else if (a === "--port" || a.startsWith("--port=")) {
|
|
40
|
+
const [v, ni] = valueOf(a, "--port", i);
|
|
41
|
+
if (v)
|
|
42
|
+
port = Number(v);
|
|
43
|
+
i = ni;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return { transport, host, port };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/transport/cli.ts"],"names":[],"mappings":"AAQA,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAc,EACd,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,SAAS,GAAkB,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/E,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,IAAI,YAAY,CAAC;IACxC,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAE9D,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,MAAc,EAAE,CAAS,EAAoB,EAAE;QAC/E,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnB,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,SAAS,GAAG,OAAO,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/D,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;YAC7C,SAAS,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5C,CAAC,GAAG,EAAE,CAAC;QACT,CAAC;aAAM,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC;gBAAE,IAAI,GAAG,CAAC,CAAC;YAChB,CAAC,GAAG,EAAE,CAAC;QACT,CAAC;aAAM,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC;gBAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,GAAG,EAAE,CAAC;QACT,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ComfyUITarget {
|
|
2
|
+
host: string;
|
|
3
|
+
port: number;
|
|
4
|
+
ssl: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Parse a full ComfyUI URL (e.g. http://127.0.0.1:8188, https://comfy.example.com)
|
|
8
|
+
* into host/port/ssl. Used by --comfyui-url / COMFYUI_URL to target any (incl.
|
|
9
|
+
* remote) ComfyUI instance, overriding the COMFYUI_HOST/PORT/SSL env vars.
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseComfyUIUrl(url: string): ComfyUITarget;
|
|
12
|
+
//# sourceMappingURL=comfyui-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comfyui-url.d.ts","sourceRoot":"","sources":["../../src/transport/comfyui-url.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAQ1D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse a full ComfyUI URL (e.g. http://127.0.0.1:8188, https://comfy.example.com)
|
|
3
|
+
* into host/port/ssl. Used by --comfyui-url / COMFYUI_URL to target any (incl.
|
|
4
|
+
* remote) ComfyUI instance, overriding the COMFYUI_HOST/PORT/SSL env vars.
|
|
5
|
+
*/
|
|
6
|
+
export function parseComfyUIUrl(url) {
|
|
7
|
+
const u = new URL(url);
|
|
8
|
+
if (u.protocol !== "http:" && u.protocol !== "https:") {
|
|
9
|
+
throw new Error(`Unsupported protocol "${u.protocol}" in --comfyui-url (expected http or https)`);
|
|
10
|
+
}
|
|
11
|
+
const ssl = u.protocol === "https:";
|
|
12
|
+
const port = u.port ? Number(u.port) : ssl ? 443 : 80;
|
|
13
|
+
return { host: u.hostname, port, ssl };
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=comfyui-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comfyui-url.js","sourceRoot":"","sources":["../../src/transport/comfyui-url.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,QAAQ,6CAA6C,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
export interface HttpServerOptions {
|
|
4
|
+
host: string;
|
|
5
|
+
port: number;
|
|
6
|
+
/** Factory invoked once per session to build a fully-configured McpServer. */
|
|
7
|
+
createServer: () => Promise<McpServer> | McpServer;
|
|
8
|
+
/** Path the MCP endpoint is served on (default /mcp). */
|
|
9
|
+
path?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Start a streamable-HTTP MCP server using the canonical SDK session pattern:
|
|
13
|
+
* a new transport + McpServer is created on the initialize request and reused
|
|
14
|
+
* for subsequent requests carrying the mcp-session-id header.
|
|
15
|
+
*/
|
|
16
|
+
export declare function startHttpServer(opts: HttpServerOptions): Promise<http.Server>;
|
|
17
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,YAAY,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACnD,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA8BD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAwDnF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
4
|
+
import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
|
|
5
|
+
import { logger } from "../utils/logger.js";
|
|
6
|
+
function readBody(req) {
|
|
7
|
+
return new Promise((resolve, reject) => {
|
|
8
|
+
const chunks = [];
|
|
9
|
+
req.on("data", (c) => chunks.push(c));
|
|
10
|
+
req.on("end", () => {
|
|
11
|
+
const raw = Buffer.concat(chunks).toString("utf-8");
|
|
12
|
+
if (raw.length === 0)
|
|
13
|
+
return resolve(undefined);
|
|
14
|
+
try {
|
|
15
|
+
resolve(JSON.parse(raw));
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
reject(err);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
req.on("error", reject);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function sendJsonError(res, status, message) {
|
|
25
|
+
res.writeHead(status, { "Content-Type": "application/json" });
|
|
26
|
+
res.end(JSON.stringify({
|
|
27
|
+
jsonrpc: "2.0",
|
|
28
|
+
error: { code: -32000, message },
|
|
29
|
+
id: null,
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Start a streamable-HTTP MCP server using the canonical SDK session pattern:
|
|
34
|
+
* a new transport + McpServer is created on the initialize request and reused
|
|
35
|
+
* for subsequent requests carrying the mcp-session-id header.
|
|
36
|
+
*/
|
|
37
|
+
export async function startHttpServer(opts) {
|
|
38
|
+
const path = opts.path ?? "/mcp";
|
|
39
|
+
const transports = new Map();
|
|
40
|
+
const httpServer = http.createServer(async (req, res) => {
|
|
41
|
+
try {
|
|
42
|
+
const url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
|
|
43
|
+
if (url.pathname !== path) {
|
|
44
|
+
sendJsonError(res, 404, `Not found. MCP endpoint is ${path}`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
48
|
+
let transport = sessionId ? transports.get(sessionId) : undefined;
|
|
49
|
+
if (req.method === "POST") {
|
|
50
|
+
const body = await readBody(req);
|
|
51
|
+
if (!transport) {
|
|
52
|
+
if (!isInitializeRequest(body)) {
|
|
53
|
+
sendJsonError(res, 400, "No valid session: first request must be an initialize request");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
transport = new StreamableHTTPServerTransport({
|
|
57
|
+
sessionIdGenerator: () => randomUUID(),
|
|
58
|
+
onsessioninitialized: (sid) => {
|
|
59
|
+
transports.set(sid, transport);
|
|
60
|
+
logger.info("HTTP MCP session initialized", { session: sid });
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
transport.onclose = () => {
|
|
64
|
+
const sid = transport.sessionId;
|
|
65
|
+
if (sid)
|
|
66
|
+
transports.delete(sid);
|
|
67
|
+
};
|
|
68
|
+
const server = await opts.createServer();
|
|
69
|
+
await server.connect(transport);
|
|
70
|
+
}
|
|
71
|
+
await transport.handleRequest(req, res, body);
|
|
72
|
+
}
|
|
73
|
+
else if (req.method === "GET" || req.method === "DELETE") {
|
|
74
|
+
if (!transport) {
|
|
75
|
+
sendJsonError(res, 400, "Missing or unknown mcp-session-id");
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
await transport.handleRequest(req, res);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
sendJsonError(res, 405, "Method not allowed");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
logger.error("HTTP MCP request error", {
|
|
86
|
+
error: err instanceof Error ? err.message : err,
|
|
87
|
+
});
|
|
88
|
+
if (!res.headersSent)
|
|
89
|
+
sendJsonError(res, 500, "Internal server error");
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
await new Promise((resolve) => httpServer.listen(opts.port, opts.host, resolve));
|
|
93
|
+
return httpServer;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAW5C,SAAS,QAAQ,CAAC,GAAyB;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC,CAAC;QAChD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,GAAwB,EAAE,MAAc,EAAE,OAAe;IAC9E,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9D,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE;QAChC,EAAE,EAAE,IAAI;KACT,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAuB;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyC,CAAC;IAEpE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;YACjF,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC1B,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,8BAA8B,IAAI,EAAE,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;YACtE,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAElE,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC/B,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,+DAA+D,CAAC,CAAC;wBACzF,OAAO;oBACT,CAAC;oBACD,SAAS,GAAG,IAAI,6BAA6B,CAAC;wBAC5C,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;wBACtC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;4BAC5B,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,SAAU,CAAC,CAAC;4BAChC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;wBAChE,CAAC;qBACF,CAAC,CAAC;oBACH,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;wBACvB,MAAM,GAAG,GAAG,SAAU,CAAC,SAAS,CAAC;wBACjC,IAAI,GAAG;4BAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAClC,CAAC,CAAC;oBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;oBACzC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,mCAAmC,CAAC,CAAC;oBAC7D,OAAO;gBACT,CAAC;gBACD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;gBACrC,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;aAChD,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,WAAW;gBAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,uBAAuB,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACvF,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "comfyui-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"mcpName": "io.github.artokun/comfyui-mcp",
|
|
4
5
|
"description": "MCP server for ComfyUI — workflow execution, visualization, composition, registry, and skill generation",
|
|
5
6
|
"type": "module",
|
|
6
7
|
"main": "dist/index.js",
|
package/server.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
|
|
3
|
+
"name": "io.github.artokun/comfyui-mcp",
|
|
4
|
+
"description": "MCP server + Claude Code plugin for ComfyUI: run workflows, generate images, manage models & VRAM.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"url": "https://github.com/artokun/comfyui-mcp",
|
|
7
|
+
"source": "github"
|
|
8
|
+
},
|
|
9
|
+
"version": "0.5.0",
|
|
10
|
+
"packages": [
|
|
11
|
+
{
|
|
12
|
+
"registryType": "npm",
|
|
13
|
+
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
|
+
"identifier": "comfyui-mcp",
|
|
15
|
+
"version": "0.5.0",
|
|
16
|
+
"transport": {
|
|
17
|
+
"type": "stdio"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|