comfyui-mcp 0.3.1 → 0.3.2
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/services/workflow-sections.d.ts.map +1 -1
- package/dist/services/workflow-sections.js +41 -6
- package/dist/services/workflow-sections.js.map +1 -1
- package/package.json +1 -1
- package/.github/workflows/ci.yml +0 -27
- package/.github/workflows/release.yml +0 -34
- package/docs/design/generation-tracker.md +0 -457
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-sections.d.ts","sourceRoot":"","sources":["../../src/services/workflow-sections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGpE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"workflow-sections.d.ts","sourceRoot":"","sources":["../../src/services/workflow-sections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGpE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AA8BD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2B9D;AAeD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,EAAE,CAiCxE;AAuDD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,UAAU,GACrB,eAAe,CA+KjB"}
|
|
@@ -4,18 +4,52 @@ const CATEGORY_ALIASES = {
|
|
|
4
4
|
_for_testing: "utility",
|
|
5
5
|
api: "utility",
|
|
6
6
|
utils: "utility",
|
|
7
|
+
// Custom node pack categories
|
|
8
|
+
bootleg: "loading", // ComfyUI-GGUF (UNET/CLIP loaders)
|
|
9
|
+
gguf: "loading", // gguf pack (CLIP loaders)
|
|
10
|
+
rgthree: "loading", // rgthree (Lora Loader Stack, etc.)
|
|
11
|
+
seedvr2: "image", // SeedVR2 (video upscaler)
|
|
12
|
+
"video helper suite": "output", // VHS (Video Combine)
|
|
7
13
|
};
|
|
8
14
|
// Meta-categories where the second level is more meaningful
|
|
9
15
|
const META_CATEGORIES = new Set(["advanced"]);
|
|
16
|
+
// Known core pipeline section names
|
|
17
|
+
const KNOWN_SECTIONS = new Set([
|
|
18
|
+
"loading", "conditioning", "sampling", "latent",
|
|
19
|
+
"image", "output", "mask", "utility",
|
|
20
|
+
]);
|
|
21
|
+
// Strip emoji and special characters from a category string
|
|
22
|
+
function cleanCategory(category) {
|
|
23
|
+
return category.replace(/[^\p{L}\p{N}\s/\-_]/gu, "").trim();
|
|
24
|
+
}
|
|
10
25
|
// Normalize a ComfyUI category string to a top-level section name
|
|
11
26
|
export function normalizeCategoryName(category) {
|
|
12
|
-
const
|
|
27
|
+
const cleaned = cleanCategory(category);
|
|
28
|
+
const parts = cleaned.split("/").map((p) => p.toLowerCase().trim());
|
|
13
29
|
// For meta-categories like "advanced/loaders", use the second level
|
|
14
30
|
let key = parts[0];
|
|
15
31
|
if (META_CATEGORIES.has(key) && parts.length > 1) {
|
|
16
32
|
key = parts[1];
|
|
17
33
|
}
|
|
18
|
-
|
|
34
|
+
// Check direct alias
|
|
35
|
+
const aliased = CATEGORY_ALIASES[key];
|
|
36
|
+
if (aliased)
|
|
37
|
+
return aliased;
|
|
38
|
+
// If key is already a known section, use it
|
|
39
|
+
if (KNOWN_SECTIONS.has(key))
|
|
40
|
+
return key;
|
|
41
|
+
// Check if any sub-part of the category path is a known section or has an alias
|
|
42
|
+
// e.g., "KJNodes/image" → sub-part "image" is known
|
|
43
|
+
// e.g., "GetSetNode_Pro/loaders" → sub-part "loaders" aliases to "loading"
|
|
44
|
+
for (let i = 1; i < parts.length; i++) {
|
|
45
|
+
const part = parts[i];
|
|
46
|
+
if (CATEGORY_ALIASES[part])
|
|
47
|
+
return CATEGORY_ALIASES[part];
|
|
48
|
+
if (KNOWN_SECTIONS.has(part))
|
|
49
|
+
return part;
|
|
50
|
+
}
|
|
51
|
+
// Fall back to the cleaned key
|
|
52
|
+
return key;
|
|
19
53
|
}
|
|
20
54
|
// Get/Set node class types we recognize
|
|
21
55
|
const GET_NODE_TYPES = new Set(["GetNode", "PRO_GetNode", "SetNode_GetNode"]);
|
|
@@ -32,15 +66,16 @@ export function resolveGetSetPairs(workflow) {
|
|
|
32
66
|
const getters = new Map(); // key -> node IDs
|
|
33
67
|
for (const [id, node] of Object.entries(workflow)) {
|
|
34
68
|
if (isSetNode(node.class_type)) {
|
|
35
|
-
|
|
36
|
-
|
|
69
|
+
// Prefer Constant (the actual wire key) over title (which may have "Set_" prefix)
|
|
70
|
+
const key = node.inputs.Constant ??
|
|
71
|
+
node._meta?.title ??
|
|
37
72
|
"";
|
|
38
73
|
if (key)
|
|
39
74
|
setters.set(key, id);
|
|
40
75
|
}
|
|
41
76
|
else if (isGetNode(node.class_type)) {
|
|
42
|
-
const key = node.
|
|
43
|
-
node.
|
|
77
|
+
const key = node.inputs.Constant ??
|
|
78
|
+
node._meta?.title ??
|
|
44
79
|
"";
|
|
45
80
|
if (key) {
|
|
46
81
|
if (!getters.has(key))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-sections.js","sourceRoot":"","sources":["../../src/services/workflow-sections.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-sections.js","sourceRoot":"","sources":["../../src/services/workflow-sections.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/.github/workflows/ci.yml
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
branches: [main]
|
|
6
|
-
push:
|
|
7
|
-
branches: [main]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
build:
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
strategy:
|
|
13
|
-
matrix:
|
|
14
|
-
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
15
|
-
name: Build (${{ matrix.os }})
|
|
16
|
-
steps:
|
|
17
|
-
- uses: actions/checkout@v4
|
|
18
|
-
|
|
19
|
-
- uses: actions/setup-node@v4
|
|
20
|
-
with:
|
|
21
|
-
node-version: 22
|
|
22
|
-
cache: npm
|
|
23
|
-
|
|
24
|
-
- run: npm ci
|
|
25
|
-
- run: npm run lint
|
|
26
|
-
- run: npm run build
|
|
27
|
-
- run: npm test
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
tags:
|
|
6
|
-
- "v*"
|
|
7
|
-
|
|
8
|
-
permissions: {}
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
publish:
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
permissions:
|
|
14
|
-
id-token: write
|
|
15
|
-
contents: write
|
|
16
|
-
steps:
|
|
17
|
-
- uses: actions/checkout@v4
|
|
18
|
-
|
|
19
|
-
- uses: actions/setup-node@v4
|
|
20
|
-
with:
|
|
21
|
-
node-version: 24
|
|
22
|
-
registry-url: https://registry.npmjs.org
|
|
23
|
-
|
|
24
|
-
- run: npm ci
|
|
25
|
-
- run: npm run build
|
|
26
|
-
- run: npm test
|
|
27
|
-
|
|
28
|
-
- name: Publish to npm
|
|
29
|
-
run: npm publish --provenance --access public
|
|
30
|
-
|
|
31
|
-
- name: Create GitHub Release
|
|
32
|
-
uses: softprops/action-gh-release@v2
|
|
33
|
-
with:
|
|
34
|
-
generate_release_notes: true
|
|
@@ -1,457 +0,0 @@
|
|
|
1
|
-
# Generation Tracker & Community Settings
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
A local SQLite database that tracks every generation's settings, counts reuse,
|
|
6
|
-
and optionally shares anonymized public-LoRA settings to a Cloudflare backend.
|
|
7
|
-
The MCP server queries the local DB to suggest "what worked before" when building
|
|
8
|
-
new workflows, and can also fetch community-aggregated settings.
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Architecture
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
16
|
-
│ ComfyUI MCP Server │
|
|
17
|
-
│ │
|
|
18
|
-
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
19
|
-
│ │ Workflow │───▶│ Generation │───▶│ Settings │ │
|
|
20
|
-
│ │ Executor │ │ Tracker │ │ Advisor │ │
|
|
21
|
-
│ │ (existing) │ │ (new) │ │ (new) │ │
|
|
22
|
-
│ └──────────────┘ └──────┬───────┘ └──────┬───────┘ │
|
|
23
|
-
│ │ │ │
|
|
24
|
-
│ ┌──────▼───────┐ ┌─────▼────────┐ │
|
|
25
|
-
│ │ SQLite DB │ │ Community │ │
|
|
26
|
-
│ │ (local) │ │ API Client │ │
|
|
27
|
-
│ │ better- │ │ (optional) │ │
|
|
28
|
-
│ │ sqlite3 │ └─────┬────────┘ │
|
|
29
|
-
│ └──────────────┘ │ │
|
|
30
|
-
└─────────────────────────────────────────────────┼──────────┘
|
|
31
|
-
│
|
|
32
|
-
┌───────▼─────────┐
|
|
33
|
-
│ Cloudflare │
|
|
34
|
-
│ Workers + D1 │
|
|
35
|
-
│ (community API) │
|
|
36
|
-
└─────────────────┘
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## Local Database: `generations.db`
|
|
42
|
-
|
|
43
|
-
Location: `<comfyui_path>/comfyui-mcp/generations.db`
|
|
44
|
-
(Lives alongside the user's ComfyUI data, gitignored.)
|
|
45
|
-
|
|
46
|
-
### Schema
|
|
47
|
-
|
|
48
|
-
```sql
|
|
49
|
-
-- Core generation log
|
|
50
|
-
CREATE TABLE generations (
|
|
51
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
52
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
53
|
-
|
|
54
|
-
-- Settings fingerprint (SHA256 of canonical JSON of tracked fields)
|
|
55
|
-
settings_hash TEXT NOT NULL,
|
|
56
|
-
|
|
57
|
-
-- Model identification (by content hash, not filename)
|
|
58
|
-
model_family TEXT NOT NULL, -- 'qwen_image', 'sdxl', 'flux', etc.
|
|
59
|
-
model_hash TEXT NOT NULL, -- AutoV2 (first 10 chars of SHA256) of checkpoint/unet
|
|
60
|
-
model_name TEXT, -- checkpoint/unet filename (for full-text search, not part of hash)
|
|
61
|
-
preset_name TEXT, -- from model-settings.json, or 'custom'
|
|
62
|
-
|
|
63
|
-
-- Sampler settings
|
|
64
|
-
sampler TEXT NOT NULL,
|
|
65
|
-
scheduler TEXT NOT NULL,
|
|
66
|
-
steps INTEGER NOT NULL,
|
|
67
|
-
cfg REAL NOT NULL,
|
|
68
|
-
denoise REAL DEFAULT 1.0,
|
|
69
|
-
shift REAL, -- auraflow_shift for Qwen
|
|
70
|
-
|
|
71
|
-
-- Resolution (tracked per-generation, NOT part of settings_hash)
|
|
72
|
-
width INTEGER NOT NULL,
|
|
73
|
-
height INTEGER NOT NULL,
|
|
74
|
-
|
|
75
|
-
-- LoRA (nullable — not all gens use LoRAs)
|
|
76
|
-
lora_hash TEXT, -- AutoV2 of LoRA file (content-addressed)
|
|
77
|
-
lora_name TEXT, -- LoRA filename (for full-text search, not part of hash)
|
|
78
|
-
lora_strength REAL,
|
|
79
|
-
lora_civitai_id INTEGER, -- NULL = private/unknown, populated after hash lookup
|
|
80
|
-
|
|
81
|
-
-- Satisfaction signal
|
|
82
|
-
-- Implicit: if the user runs the same settings_hash again, we increment reuse_count
|
|
83
|
-
-- Explicit: user can thumbs-up/down via MCP tool (future)
|
|
84
|
-
reuse_count INTEGER NOT NULL DEFAULT 1,
|
|
85
|
-
|
|
86
|
-
-- Negative prompt hash (for dedup, not stored in full)
|
|
87
|
-
neg_prompt_hash TEXT
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
-- Fast lookups
|
|
91
|
-
CREATE INDEX idx_gen_settings_hash ON generations(settings_hash);
|
|
92
|
-
CREATE INDEX idx_gen_model_family ON generations(model_family);
|
|
93
|
-
CREATE INDEX idx_gen_model_hash ON generations(model_hash);
|
|
94
|
-
CREATE INDEX idx_gen_lora_hash ON generations(lora_hash);
|
|
95
|
-
CREATE INDEX idx_gen_lora_civitai ON generations(lora_civitai_id);
|
|
96
|
-
CREATE INDEX idx_gen_created ON generations(created_at);
|
|
97
|
-
|
|
98
|
-
-- File hash cache (avoid re-hashing large .safetensors files)
|
|
99
|
-
-- Covers both models (checkpoints, unets) and LoRAs.
|
|
100
|
-
-- Keyed on filename + size + mtime — if any change, re-hash.
|
|
101
|
-
CREATE TABLE file_hashes (
|
|
102
|
-
filename TEXT PRIMARY KEY, -- basename of the file
|
|
103
|
-
file_path TEXT NOT NULL, -- full path (local only, never shared)
|
|
104
|
-
file_size INTEGER NOT NULL,
|
|
105
|
-
file_mtime TEXT NOT NULL,
|
|
106
|
-
sha256 TEXT NOT NULL,
|
|
107
|
-
autov2 TEXT NOT NULL, -- sha256[:10].toUpperCase()
|
|
108
|
-
file_type TEXT NOT NULL, -- 'checkpoint' | 'unet' | 'lora' | 'vae'
|
|
109
|
-
civitai_id INTEGER, -- NULL = not found / not checked
|
|
110
|
-
civitai_name TEXT,
|
|
111
|
-
civitai_model_id INTEGER, -- parent model ID on CivitAI
|
|
112
|
-
checked_at TEXT -- last time we queried CivitAI
|
|
113
|
-
);
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Settings Hash
|
|
117
|
-
|
|
118
|
-
The `settings_hash` is a SHA256 of a canonical JSON string containing only
|
|
119
|
-
the **settings identity fields**, sorted alphabetically. This is what defines
|
|
120
|
-
"the same combo" — resolution is intentionally excluded because the same
|
|
121
|
-
sampler/steps/CFG combo works across resolutions and we want those to count
|
|
122
|
-
together.
|
|
123
|
-
|
|
124
|
-
Models and LoRAs are identified by their **AutoV2 content hash** (first 10 chars
|
|
125
|
-
of SHA256), not filenames. This means renamed files, different quantizations of
|
|
126
|
-
the same weights, or the same model downloaded from different sources all map to
|
|
127
|
-
the same identity.
|
|
128
|
-
|
|
129
|
-
```json
|
|
130
|
-
{
|
|
131
|
-
"cfg": 4.0,
|
|
132
|
-
"denoise": 1.0,
|
|
133
|
-
"lora_hash": "A1B2C3D4E5",
|
|
134
|
-
"lora_strength": 1.0,
|
|
135
|
-
"model_family": "qwen_image",
|
|
136
|
-
"model_hash": "F6G7H8I9J0",
|
|
137
|
-
"sampler": "euler",
|
|
138
|
-
"scheduler": "simple",
|
|
139
|
-
"shift": 3.1,
|
|
140
|
-
"steps": 4
|
|
141
|
-
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
**Excluded from hash** (tracked per-row but not part of the fingerprint):
|
|
145
|
-
- `width`, `height` — resolution is a per-generation choice
|
|
146
|
-
- `model_name`, `lora_name` — display names, not identity
|
|
147
|
-
- `preset_name` — informational only
|
|
148
|
-
- `neg_prompt_hash` — prompt content is never part of settings identity
|
|
149
|
-
|
|
150
|
-
When a generation runs with an already-seen `settings_hash`, we UPDATE
|
|
151
|
-
`reuse_count += 1` and `created_at` to the latest timestamp instead of inserting
|
|
152
|
-
a duplicate row. This keeps the DB compact and gives us a natural popularity signal.
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## File Identification Flow
|
|
157
|
-
|
|
158
|
-
All models (checkpoints, UNETs) and LoRAs go through the same hashing pipeline.
|
|
159
|
-
The `file_hashes` table caches results so we only compute SHA256 once per file version.
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
1. Workflow references a file → extract filename + resolve full path
|
|
163
|
-
2. stat() the file → get size + mtime
|
|
164
|
-
3. Check file_hashes table (by filename + size + mtime)
|
|
165
|
-
├─ Cache hit → use cached autov2 / civitai_id
|
|
166
|
-
└─ Cache miss →
|
|
167
|
-
a. Compute SHA256 of the .safetensors file
|
|
168
|
-
b. Derive AutoV2 = sha256[:10].toUpperCase()
|
|
169
|
-
c. Query CivitAI: GET /api/v1/model-versions/by-hash/{autov2}
|
|
170
|
-
├─ Found → store civitai_id, civitai_name, civitai_model_id
|
|
171
|
-
└─ Not found → civitai_id = NULL (private/unknown)
|
|
172
|
-
d. INSERT into file_hashes cache
|
|
173
|
-
4. Use autov2 as model_hash / lora_hash in the generations row
|
|
174
|
-
5. Use civitai_id for LoRA privacy filtering
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
**Privacy rule**: Only generations where `lora_civitai_id IS NOT NULL` (or no LoRA)
|
|
178
|
-
are eligible for community sharing. Private LoRAs never leave the machine.
|
|
179
|
-
|
|
180
|
-
**Hashing note**: SHA256 of large safetensors files (2-12GB) takes 5-20 seconds.
|
|
181
|
-
We run this in a worker thread and cache aggressively. The cache invalidates only
|
|
182
|
-
when file size or mtime changes (renamed files keep their hash).
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
## Settings Advisor (MCP Hook)
|
|
187
|
-
|
|
188
|
-
When building a new workflow, the MCP server queries the local DB:
|
|
189
|
-
|
|
190
|
-
```sql
|
|
191
|
-
-- "What worked well for this model?"
|
|
192
|
-
-- Groups by settings_hash (resolution-agnostic), shows most popular combos
|
|
193
|
-
SELECT sampler, scheduler, steps, cfg, shift, denoise,
|
|
194
|
-
lora_hash, lora_name, lora_strength,
|
|
195
|
-
model_hash, model_name,
|
|
196
|
-
reuse_count, preset_name
|
|
197
|
-
FROM generations
|
|
198
|
-
WHERE model_family = ?
|
|
199
|
-
ORDER BY reuse_count DESC, created_at DESC
|
|
200
|
-
LIMIT 10;
|
|
201
|
-
|
|
202
|
-
-- "What worked well for this specific LoRA?"
|
|
203
|
-
SELECT sampler, scheduler, steps, cfg, shift, denoise,
|
|
204
|
-
model_hash, model_name, reuse_count
|
|
205
|
-
FROM generations
|
|
206
|
-
WHERE lora_hash = ?
|
|
207
|
-
ORDER BY reuse_count DESC
|
|
208
|
-
LIMIT 10;
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
The advisor returns the top settings to the LLM as context, letting it
|
|
212
|
-
suggest proven combos to the user. Combined with model-settings.json presets,
|
|
213
|
-
this creates a feedback loop: defaults → user experiments → local tracking →
|
|
214
|
-
better suggestions.
|
|
215
|
-
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
## NPM Scripts
|
|
219
|
-
|
|
220
|
-
### `npm run generations:review`
|
|
221
|
-
|
|
222
|
-
Interactive CLI that shows what would be shared:
|
|
223
|
-
|
|
224
|
-
```
|
|
225
|
-
$ npm run generations:review
|
|
226
|
-
|
|
227
|
-
=== Generation Settings Ready to Share ===
|
|
228
|
-
|
|
229
|
-
Model Family Sampler/Sched Steps CFG LoRA Uses
|
|
230
|
-
───────────── ──────────────── ───── ──── ──────────────────────────── ────
|
|
231
|
-
qwen_image euler/simple 4 1.0 Lightning-4steps (CivitAI) 47
|
|
232
|
-
qwen_image euler_a/beta 50 4.0 (none) 12
|
|
233
|
-
sdxl dpmpp_2m/karras 25 6.5 (none) 8
|
|
234
|
-
illustrious euler_a/simple 22 4.5 (none) 5
|
|
235
|
-
|
|
236
|
-
4 entries (private LoRAs excluded)
|
|
237
|
-
|
|
238
|
-
Share these with the community? [y/N]
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### `npm run generations:stats`
|
|
242
|
-
|
|
243
|
-
Local-only stats view:
|
|
244
|
-
|
|
245
|
-
```
|
|
246
|
-
$ npm run generations:stats
|
|
247
|
-
|
|
248
|
-
Total generations tracked: 234
|
|
249
|
-
Unique setting combos: 18
|
|
250
|
-
Most used: qwen_image / euler/simple / 4 steps (47 uses)
|
|
251
|
-
Models: qwen_image (142), sdxl (52), illustrious (28), flux (12)
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## Community Backend (Cloudflare)
|
|
257
|
-
|
|
258
|
-
### Stack
|
|
259
|
-
|
|
260
|
-
- **Cloudflare Workers** — API endpoints (free tier: 100k req/day)
|
|
261
|
-
- **Cloudflare D1** — SQLite-compatible edge database (free tier: 5M reads/day, 100k writes/day)
|
|
262
|
-
- **Rate limiting** — Cloudflare's built-in rate limiting rules
|
|
263
|
-
|
|
264
|
-
### Endpoints
|
|
265
|
-
|
|
266
|
-
#### `POST /api/v1/settings/submit`
|
|
267
|
-
|
|
268
|
-
Submit anonymized generation settings.
|
|
269
|
-
|
|
270
|
-
```json
|
|
271
|
-
// Request
|
|
272
|
-
{
|
|
273
|
-
"client_version": "0.2.0",
|
|
274
|
-
"entries": [
|
|
275
|
-
{
|
|
276
|
-
"settings_hash": "abc123...",
|
|
277
|
-
"model_family": "qwen_image",
|
|
278
|
-
"model_hash": "F6G7H8I9J0",
|
|
279
|
-
"model_name": "qwen_image_2512_fp8_e4m3fn.safetensors",
|
|
280
|
-
"model_civitai_id": 789012,
|
|
281
|
-
"sampler": "euler",
|
|
282
|
-
"scheduler": "simple",
|
|
283
|
-
"steps": 4,
|
|
284
|
-
"cfg": 1.0,
|
|
285
|
-
"denoise": 1.0,
|
|
286
|
-
"shift": 3.1,
|
|
287
|
-
"lora_hash": "A1B2C3D4E5",
|
|
288
|
-
"lora_name": "Qwen-Image-Lightning-4steps-V1.0.safetensors",
|
|
289
|
-
"lora_civitai_id": 123456,
|
|
290
|
-
"lora_strength": 1.0,
|
|
291
|
-
"reuse_count": 47
|
|
292
|
-
}
|
|
293
|
-
]
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// Response
|
|
297
|
-
{ "accepted": 1, "thank_you": true }
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
**What is sent**: content hashes (AutoV2), CivitAI IDs, sampler params, reuse counts.
|
|
301
|
-
|
|
302
|
-
**What is NOT sent**: prompts, negative prompts, image data, filenames, file paths,
|
|
303
|
-
resolutions, private LoRA/model hashes (no CivitAI match), usernames, IP-derived
|
|
304
|
-
location, timestamps.
|
|
305
|
-
|
|
306
|
-
#### `GET /api/v1/settings/search`
|
|
307
|
-
|
|
308
|
-
Query community-aggregated settings.
|
|
309
|
-
|
|
310
|
-
```
|
|
311
|
-
GET /api/v1/settings/search?model_family=qwen_image&lora_civitai_id=123456
|
|
312
|
-
|
|
313
|
-
// Response
|
|
314
|
-
{
|
|
315
|
-
"results": [
|
|
316
|
-
{
|
|
317
|
-
"model_family": "qwen_image",
|
|
318
|
-
"model_hash": "F6G7H8I9J0",
|
|
319
|
-
"model_name": "qwen_image_2512_fp8_e4m3fn.safetensors",
|
|
320
|
-
"model_civitai_id": 789012,
|
|
321
|
-
"sampler": "euler",
|
|
322
|
-
"scheduler": "simple",
|
|
323
|
-
"steps": 4,
|
|
324
|
-
"cfg": 1.0,
|
|
325
|
-
"denoise": 1.0,
|
|
326
|
-
"shift": 3.1,
|
|
327
|
-
"lora_hash": "A1B2C3D4E5",
|
|
328
|
-
"lora_name": "Qwen-Image-Lightning-4steps-V1.0.safetensors",
|
|
329
|
-
"lora_civitai_id": 123456,
|
|
330
|
-
"lora_strength": 1.0,
|
|
331
|
-
"total_uses": 1247,
|
|
332
|
-
"unique_users": 89,
|
|
333
|
-
"avg_reuse": 14.0
|
|
334
|
-
}
|
|
335
|
-
],
|
|
336
|
-
"total": 1,
|
|
337
|
-
"cache_ttl": 3600
|
|
338
|
-
}
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
Searchable by: `model_family`, `model_hash`, `model_civitai_id`, `model_name`,
|
|
342
|
-
`lora_hash`, `lora_civitai_id`, `lora_name`, `sampler`, `scheduler`.
|
|
343
|
-
All filters are AND-combined. Name fields support `LIKE` / substring matching
|
|
344
|
-
(e.g. `?model_name=copax` matches "CopaxTimelessV11.safetensors").
|
|
345
|
-
|
|
346
|
-
Rate limit: 60 req/min per IP.
|
|
347
|
-
|
|
348
|
-
#### `GET /api/v1/settings/popular`
|
|
349
|
-
|
|
350
|
-
Top settings across all users, filterable.
|
|
351
|
-
|
|
352
|
-
```
|
|
353
|
-
GET /api/v1/settings/popular?model_family=sdxl&limit=10
|
|
354
|
-
|
|
355
|
-
// Response — same shape as search, ordered by total_uses DESC
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
### D1 Schema (Cloudflare)
|
|
359
|
-
|
|
360
|
-
```sql
|
|
361
|
-
CREATE TABLE community_settings (
|
|
362
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
363
|
-
settings_hash TEXT NOT NULL UNIQUE,
|
|
364
|
-
|
|
365
|
-
-- Identity (hashes for dedup, names for full-text search)
|
|
366
|
-
model_family TEXT NOT NULL,
|
|
367
|
-
model_hash TEXT NOT NULL, -- AutoV2 of checkpoint/unet
|
|
368
|
-
model_name TEXT, -- e.g. "qwen_image_2512_fp8_e4m3fn.safetensors"
|
|
369
|
-
model_civitai_id INTEGER, -- CivitAI model version ID
|
|
370
|
-
lora_hash TEXT, -- AutoV2 of LoRA (NULL if none)
|
|
371
|
-
lora_name TEXT, -- e.g. "Qwen-Image-Lightning-4steps-V1.0.safetensors"
|
|
372
|
-
lora_civitai_id INTEGER, -- CivitAI model version ID
|
|
373
|
-
lora_strength REAL,
|
|
374
|
-
|
|
375
|
-
-- Settings
|
|
376
|
-
sampler TEXT NOT NULL,
|
|
377
|
-
scheduler TEXT NOT NULL,
|
|
378
|
-
steps INTEGER NOT NULL,
|
|
379
|
-
cfg REAL NOT NULL,
|
|
380
|
-
denoise REAL,
|
|
381
|
-
shift REAL,
|
|
382
|
-
|
|
383
|
-
-- Aggregates
|
|
384
|
-
total_uses INTEGER NOT NULL DEFAULT 0,
|
|
385
|
-
unique_users INTEGER NOT NULL DEFAULT 0,
|
|
386
|
-
first_seen TEXT NOT NULL DEFAULT (datetime('now')),
|
|
387
|
-
last_seen TEXT NOT NULL DEFAULT (datetime('now'))
|
|
388
|
-
);
|
|
389
|
-
|
|
390
|
-
CREATE INDEX idx_cs_model ON community_settings(model_family);
|
|
391
|
-
CREATE INDEX idx_cs_model_hash ON community_settings(model_hash);
|
|
392
|
-
CREATE INDEX idx_cs_lora_hash ON community_settings(lora_hash);
|
|
393
|
-
CREATE INDEX idx_cs_lora_civ ON community_settings(lora_civitai_id);
|
|
394
|
-
CREATE INDEX idx_cs_popular ON community_settings(total_uses DESC);
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
On submit, the worker does an UPSERT keyed on `settings_hash`:
|
|
398
|
-
- If new: INSERT with `total_uses = reuse_count`, `unique_users = 1`
|
|
399
|
-
- If exists: `total_uses += reuse_count`, `unique_users += 1`
|
|
400
|
-
|
|
401
|
-
---
|
|
402
|
-
|
|
403
|
-
## MCP Tools (New)
|
|
404
|
-
|
|
405
|
-
### `generation_log`
|
|
406
|
-
Called automatically when `enqueue_workflow` is invoked.
|
|
407
|
-
Extracts settings from the executed workflow and logs to SQLite.
|
|
408
|
-
Not exposed to the user — internal hook.
|
|
409
|
-
|
|
410
|
-
### `suggest_settings`
|
|
411
|
-
```
|
|
412
|
-
Input: { model_family: "qwen_image", use_case?: "portrait" | "landscape" | ... }
|
|
413
|
-
Output: Top local + community settings for the given model, ranked by reuse.
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
### `generation_stats`
|
|
417
|
-
```
|
|
418
|
-
Input: { model_family?: string }
|
|
419
|
-
Output: Local generation statistics summary.
|
|
420
|
-
```
|
|
421
|
-
|
|
422
|
-
---
|
|
423
|
-
|
|
424
|
-
## Implementation Order
|
|
425
|
-
|
|
426
|
-
### Phase 1: Local tracking (no network)
|
|
427
|
-
1. Add `better-sqlite3` dependency
|
|
428
|
-
2. Create `src/services/generation-tracker.ts` — DB init, log, query
|
|
429
|
-
3. Create `src/services/lora-identifier.ts` — SHA256 hashing + cache
|
|
430
|
-
4. Hook into workflow executor — log after successful run
|
|
431
|
-
5. Add `suggest_settings` MCP tool
|
|
432
|
-
6. Add `npm run generations:stats` script
|
|
433
|
-
|
|
434
|
-
### Phase 2: CivitAI identification
|
|
435
|
-
7. Add CivitAI hash lookup in lora-identifier
|
|
436
|
-
8. Cache results in `lora_hashes` table
|
|
437
|
-
9. Filter shareable vs private in generation log
|
|
438
|
-
|
|
439
|
-
### Phase 3: Community sharing
|
|
440
|
-
10. Stand up Cloudflare Worker + D1
|
|
441
|
-
11. Add `npm run generations:review` script (preview + confirm)
|
|
442
|
-
12. Add submit endpoint client in MCP server
|
|
443
|
-
13. Add `search_community_settings` MCP tool
|
|
444
|
-
14. Rate limiting + privacy review
|
|
445
|
-
|
|
446
|
-
---
|
|
447
|
-
|
|
448
|
-
## Privacy Guarantees
|
|
449
|
-
|
|
450
|
-
1. **Opt-in only** — Nothing is shared without explicit `npm run generations:review` confirmation
|
|
451
|
-
2. **No prompts** — Text prompts and negative prompts are never stored in shareable form
|
|
452
|
-
3. **No images** — No generated images or thumbnails
|
|
453
|
-
4. **No private LoRAs** — Only LoRAs with a verified CivitAI hash are included
|
|
454
|
-
5. **No PII** — No usernames, paths, IPs stored server-side (Cloudflare Workers don't log by default)
|
|
455
|
-
6. **Local-first** — The local DB works fully offline; community features are additive
|
|
456
|
-
7. **Reviewable** — Users see exactly what will be sent before confirming
|
|
457
|
-
8. **No tracking** — No analytics cookies, no device fingerprinting, no session tracking
|