@mcptoolshop/style-dataset-lab 1.2.1 → 2.1.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/CHANGELOG.md +73 -0
- package/README.md +138 -113
- package/bin/sdlab.js +126 -0
- package/lib/args.js +106 -0
- package/lib/card.js +145 -0
- package/lib/comfyui.js +109 -0
- package/lib/config.js +248 -0
- package/lib/deprecation.js +14 -0
- package/lib/eligibility.js +110 -0
- package/lib/eval-pack.js +283 -0
- package/lib/export.js +259 -0
- package/lib/paths.js +38 -0
- package/lib/records.js +69 -0
- package/lib/snapshot.js +211 -0
- package/lib/split.js +409 -0
- package/package.json +20 -9
- package/scripts/bulk-curate-wave2-5.js +1 -1
- package/scripts/bulk-curate-waves11-18.js +1 -1
- package/scripts/canon-bind.js +188 -338
- package/scripts/card.js +73 -0
- package/scripts/compare.js +40 -30
- package/scripts/curate-wave25.js +1 -1
- package/scripts/curate.js +34 -28
- package/scripts/doctor.js +324 -0
- package/scripts/eligibility.js +91 -0
- package/scripts/eval-pack.js +92 -0
- package/scripts/export.js +85 -0
- package/scripts/generate-controlnet.js +36 -121
- package/scripts/generate-identity.js +38 -106
- package/scripts/generate-ipadapter.js +42 -119
- package/scripts/generate.js +22 -81
- package/scripts/init.js +229 -0
- package/scripts/migrate-records.js +15 -21
- package/scripts/painterly-test.js +20 -47
- package/scripts/painterly.js +27 -106
- package/scripts/snapshot.js +132 -0
- package/scripts/split.js +154 -0
- package/templates/domains/architecture/constitution.json +97 -0
- package/templates/domains/architecture/lanes.json +41 -0
- package/templates/domains/architecture/project.json +20 -0
- package/templates/domains/architecture/rubric.json +40 -0
- package/templates/domains/architecture/terminology.json +19 -0
- package/templates/domains/character-design/constitution.json +88 -0
- package/templates/domains/character-design/lanes.json +35 -0
- package/templates/domains/character-design/project.json +17 -0
- package/templates/domains/character-design/rubric.json +38 -0
- package/templates/domains/character-design/terminology.json +21 -0
- package/templates/domains/creature-design/constitution.json +87 -0
- package/templates/domains/creature-design/lanes.json +41 -0
- package/templates/domains/creature-design/project.json +18 -0
- package/templates/domains/creature-design/rubric.json +39 -0
- package/templates/domains/creature-design/terminology.json +20 -0
- package/templates/domains/game-art/constitution.json +113 -0
- package/templates/domains/game-art/lanes.json +47 -0
- package/templates/domains/game-art/project.json +17 -0
- package/templates/domains/game-art/rubric.json +36 -0
- package/templates/domains/game-art/terminology.json +30 -0
- package/templates/domains/vehicle-mech/constitution.json +87 -0
- package/templates/domains/vehicle-mech/lanes.json +41 -0
- package/templates/domains/vehicle-mech/project.json +17 -0
- package/templates/domains/vehicle-mech/rubric.json +40 -0
- package/templates/domains/vehicle-mech/terminology.json +21 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "TEMPLATE",
|
|
3
|
+
"display_name": "TEMPLATE",
|
|
4
|
+
"domain": "game-art",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"defaults": {
|
|
7
|
+
"checkpoint": "",
|
|
8
|
+
"loras": [],
|
|
9
|
+
"width": 1024,
|
|
10
|
+
"height": 1024,
|
|
11
|
+
"steps": 8,
|
|
12
|
+
"cfg": 2.0,
|
|
13
|
+
"sampler": "dpmpp_sde",
|
|
14
|
+
"scheduler": "karras",
|
|
15
|
+
"comfy_url": "http://127.0.0.1:8188"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dimensions": [
|
|
3
|
+
"silhouette_clarity",
|
|
4
|
+
"palette_adherence",
|
|
5
|
+
"material_fidelity",
|
|
6
|
+
"style_group_read",
|
|
7
|
+
"wear_level",
|
|
8
|
+
"style_consistency",
|
|
9
|
+
"composition",
|
|
10
|
+
"detail_quality"
|
|
11
|
+
],
|
|
12
|
+
"thresholds": {
|
|
13
|
+
"approved": {
|
|
14
|
+
"pass": 0.7,
|
|
15
|
+
"partial": 0.5
|
|
16
|
+
},
|
|
17
|
+
"borderline": {
|
|
18
|
+
"pass": 0.7,
|
|
19
|
+
"partial": 0.5
|
|
20
|
+
},
|
|
21
|
+
"rejected": {
|
|
22
|
+
"fail_ceiling": 0.4,
|
|
23
|
+
"partial_ceiling": 0.6
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"failure_to_rules": {
|
|
27
|
+
"generic_look": ["GEN-001", "GRP-001"],
|
|
28
|
+
"wrong_style": ["STY-001", "GRP-001"],
|
|
29
|
+
"bad_composition": ["CMP-001", "SCL-001"],
|
|
30
|
+
"too_clean": ["WEA-001", "MAT-001"],
|
|
31
|
+
"bad_silhouette": ["SIL-001", "SHP-001"],
|
|
32
|
+
"wrong_palette": ["COL-001"],
|
|
33
|
+
"wrong_material": ["MAT-001"],
|
|
34
|
+
"style_group_unreadable": ["GRP-001", "SHP-001", "COL-001"]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"group_label": "style_group",
|
|
3
|
+
"id_detection_order": [],
|
|
4
|
+
"prompt_detection_order": [],
|
|
5
|
+
"groups": {},
|
|
6
|
+
"cross_group_patterns": {},
|
|
7
|
+
"edge_defaults": {},
|
|
8
|
+
"null_faction_patterns": [
|
|
9
|
+
"generic_fantasy",
|
|
10
|
+
"generic_scifi",
|
|
11
|
+
"stock_art",
|
|
12
|
+
"asset_store",
|
|
13
|
+
"too_clean",
|
|
14
|
+
"photorealistic",
|
|
15
|
+
"anime_style",
|
|
16
|
+
"chibi"
|
|
17
|
+
],
|
|
18
|
+
"id_fallbacks": {},
|
|
19
|
+
"faction_context": {},
|
|
20
|
+
"training_profiles": [
|
|
21
|
+
{
|
|
22
|
+
"profile_id": "style-lora",
|
|
23
|
+
"intended_use": "LoRA fine-tuning for project style",
|
|
24
|
+
"eligible_lanes": ["character", "environment", "prop"],
|
|
25
|
+
"minimum_review_threshold": 0.7,
|
|
26
|
+
"excluded_content": ["rejected", "borderline"],
|
|
27
|
+
"export_format": "trl"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"rules": [
|
|
4
|
+
{
|
|
5
|
+
"id": "MEC-001",
|
|
6
|
+
"category": "mechanical",
|
|
7
|
+
"desc": "Mechanical plausibility — joints articulate, engines have intake/exhaust, moving parts have clearance",
|
|
8
|
+
"dims": ["mechanical_logic"],
|
|
9
|
+
"rationale_pass": "Mechanical logic holds — joints, engines, and moving parts are plausible (${scorePct}%)",
|
|
10
|
+
"rationale_fail": "Mechanical logic broken — impossible joints, sealed engines, or non-functional moving parts (${scorePct}%)"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": "PRO-001",
|
|
14
|
+
"category": "proportion",
|
|
15
|
+
"desc": "Proportion consistency — same vehicle reads at the same scale and mass across all views",
|
|
16
|
+
"dims": ["proportion"],
|
|
17
|
+
"rationale_pass": "Proportions are consistent — vehicle reads at correct scale and mass across views (${scorePct}%)",
|
|
18
|
+
"rationale_fail": "Proportions drift between views — vehicle reads as different size or mass (${scorePct}%)"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "SUR-001",
|
|
22
|
+
"category": "surface",
|
|
23
|
+
"desc": "Surface detail density — panel lines, rivets, wear marks at scale-appropriate density",
|
|
24
|
+
"dims": ["surface_detail"],
|
|
25
|
+
"rationale_pass": "Surface detail is at appropriate density — panel lines and hardware read at scale (${scorePct}%)",
|
|
26
|
+
"rationale_fail": "Surface detail wrong — too sparse, too noisy, or inconsistent density for scale (${scorePct}%)"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "SIL-001",
|
|
30
|
+
"category": "silhouette",
|
|
31
|
+
"desc": "Silhouette readability — vehicle class identifiable from silhouette alone at distance",
|
|
32
|
+
"dims": ["silhouette_read"],
|
|
33
|
+
"rationale_pass": "Silhouette reads clearly — vehicle class identifiable at distance (${scorePct}%)",
|
|
34
|
+
"rationale_fail": "Silhouette is generic or ambiguous — vehicle class not identifiable at distance (${scorePct}%)"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "SCL-001",
|
|
38
|
+
"category": "scale",
|
|
39
|
+
"desc": "Scale reference — cockpit, hatches, or crew figures imply correct crew scale",
|
|
40
|
+
"dims": ["scale_reference"],
|
|
41
|
+
"rationale_pass": "Scale reads correctly — cockpit and access points imply correct crew size (${scorePct}%)",
|
|
42
|
+
"rationale_fail": "Scale is ambiguous or wrong — no crew reference or hatches imply impossible crew size (${scorePct}%)"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "FUN-001",
|
|
46
|
+
"category": "function",
|
|
47
|
+
"desc": "Functional design language — purpose reads from form (transport vs combat vs utility)",
|
|
48
|
+
"dims": ["functional_read"],
|
|
49
|
+
"rationale_pass": "Function reads from form — vehicle purpose is clear from design language (${scorePct}%)",
|
|
50
|
+
"rationale_fail": "Function is unreadable — form does not communicate purpose (${scorePct}%)"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "ACC-001",
|
|
54
|
+
"category": "access",
|
|
55
|
+
"desc": "Access points visible — hatches, ladders, maintenance panels, boarding points",
|
|
56
|
+
"dims": ["access_logic"],
|
|
57
|
+
"lanes": ["exterior", "cockpit"],
|
|
58
|
+
"rationale_pass": "Access points present and logical — hatches, ladders, and panels are placed correctly (${scorePct}%)",
|
|
59
|
+
"rationale_fail": "Access points missing or illogical — crew cannot board, maintain, or operate this vehicle (${scorePct}%)"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "WEA-001",
|
|
63
|
+
"category": "wear",
|
|
64
|
+
"desc": "Wear pattern follows use — high-traffic areas show more damage, sheltered areas less",
|
|
65
|
+
"dims": ["wear_logic"],
|
|
66
|
+
"rationale_pass": "Wear pattern is use-driven — high-traffic and exposed areas show appropriate wear (${scorePct}%)",
|
|
67
|
+
"rationale_fail": "Wear pattern is random — damage does not follow usage or exposure logic (${scorePct}%)"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "STY-001",
|
|
71
|
+
"category": "style",
|
|
72
|
+
"desc": "Style consistency within vehicle class or faction — shared design DNA across the lineup",
|
|
73
|
+
"dims": ["style_consistency"],
|
|
74
|
+
"rationale_pass": "Style is consistent — vehicle shares design DNA with its class or faction (${scorePct}%)",
|
|
75
|
+
"rationale_fail": "Style breaks from class or faction — design language does not match lineup (${scorePct}%)"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "DMG-001",
|
|
79
|
+
"category": "damage",
|
|
80
|
+
"desc": "Damage reads as battle history — scars, repairs, and patches tell a story, not random destruction",
|
|
81
|
+
"dims": ["damage_narrative"],
|
|
82
|
+
"lanes": ["damage_variant"],
|
|
83
|
+
"rationale_pass": "Damage reads as battle history — scars and repairs tell a coherent story (${scorePct}%)",
|
|
84
|
+
"rationale_fail": "Damage is random destruction — no narrative, just noise (${scorePct}%)"
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"default_lane": "exterior",
|
|
3
|
+
"lanes": [
|
|
4
|
+
{
|
|
5
|
+
"id": "exterior",
|
|
6
|
+
"label": "Exterior / Hull",
|
|
7
|
+
"description": "Full vehicle exterior views — hull design, body panels, overall form language",
|
|
8
|
+
"id_patterns": ["^ext_", "^vehicle_", "^hull_"]
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "cockpit",
|
|
12
|
+
"label": "Cockpit / Cabin",
|
|
13
|
+
"description": "Cockpit interiors, bridge layouts, cabin instruments, pilot seating",
|
|
14
|
+
"id_patterns": ["^cockpit_", "^cabin_", "^bridge_"]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "component",
|
|
18
|
+
"label": "Component / Part Detail",
|
|
19
|
+
"description": "Individual mechanical components — engines, weapons, joints, thrusters, subsystems",
|
|
20
|
+
"id_patterns": ["^component_", "^part_", "^mechanism_"]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "schematic",
|
|
24
|
+
"label": "Schematic / Blueprint",
|
|
25
|
+
"description": "Technical diagrams, orthographic breakdowns, cross-sections, exploded views",
|
|
26
|
+
"id_patterns": ["^schematic_", "^blueprint_", "^diagram_"]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "silhouette_sheet",
|
|
30
|
+
"label": "Silhouette / Profile Sheet",
|
|
31
|
+
"description": "Silhouette studies, profile comparisons, class lineup sheets, scale charts",
|
|
32
|
+
"id_patterns": ["^silhouette_", "^profile_", "^outline_"]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "damage_variant",
|
|
36
|
+
"label": "Damage / Battle Variant",
|
|
37
|
+
"description": "Battle-damaged states, wear progression, field-repaired configurations",
|
|
38
|
+
"id_patterns": ["^damage_", "^battle_", "^wear_"]
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "TEMPLATE",
|
|
3
|
+
"display_name": "TEMPLATE",
|
|
4
|
+
"domain": "vehicle-mech",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"defaults": {
|
|
7
|
+
"checkpoint": "",
|
|
8
|
+
"loras": [],
|
|
9
|
+
"width": 1024,
|
|
10
|
+
"height": 1024,
|
|
11
|
+
"steps": 8,
|
|
12
|
+
"cfg": 2.0,
|
|
13
|
+
"sampler": "dpmpp_sde",
|
|
14
|
+
"scheduler": "karras",
|
|
15
|
+
"comfy_url": "http://127.0.0.1:8188"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dimensions": [
|
|
3
|
+
"mechanical_logic",
|
|
4
|
+
"proportion",
|
|
5
|
+
"surface_detail",
|
|
6
|
+
"silhouette_read",
|
|
7
|
+
"scale_reference",
|
|
8
|
+
"functional_read",
|
|
9
|
+
"access_logic",
|
|
10
|
+
"wear_logic",
|
|
11
|
+
"style_consistency",
|
|
12
|
+
"damage_narrative"
|
|
13
|
+
],
|
|
14
|
+
"thresholds": {
|
|
15
|
+
"approved": {
|
|
16
|
+
"pass": 0.7,
|
|
17
|
+
"partial": 0.5
|
|
18
|
+
},
|
|
19
|
+
"borderline": {
|
|
20
|
+
"pass": 0.7,
|
|
21
|
+
"partial": 0.5
|
|
22
|
+
},
|
|
23
|
+
"rejected": {
|
|
24
|
+
"fail_ceiling": 0.4,
|
|
25
|
+
"partial_ceiling": 0.6
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"failure_to_rules": {
|
|
29
|
+
"impossible_mechanism": ["MEC-001"],
|
|
30
|
+
"wrong_scale": ["SCL-001"],
|
|
31
|
+
"generic_vehicle": ["SIL-001"],
|
|
32
|
+
"random_damage": ["DMG-001"],
|
|
33
|
+
"proportion_drift": ["PRO-001"],
|
|
34
|
+
"no_surface_detail": ["SUR-001"],
|
|
35
|
+
"unclear_function": ["FUN-001"],
|
|
36
|
+
"no_access_points": ["ACC-001"],
|
|
37
|
+
"random_wear": ["WEA-001"],
|
|
38
|
+
"style_drift": ["STY-001"]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"group_label": "vehicle_class",
|
|
3
|
+
"id_detection_order": [],
|
|
4
|
+
"prompt_detection_order": [],
|
|
5
|
+
"groups": {},
|
|
6
|
+
"cross_group_patterns": {},
|
|
7
|
+
"edge_defaults": {},
|
|
8
|
+
"null_faction_patterns": [],
|
|
9
|
+
"id_fallbacks": {},
|
|
10
|
+
"faction_context": {},
|
|
11
|
+
"training_profiles": [
|
|
12
|
+
{
|
|
13
|
+
"profile_id": "vehicle-style",
|
|
14
|
+
"intended_use": "Vehicle design consistency LoRA",
|
|
15
|
+
"eligible_lanes": ["exterior", "cockpit", "component"],
|
|
16
|
+
"minimum_review_threshold": 0.7,
|
|
17
|
+
"excluded_content": ["rejected"],
|
|
18
|
+
"export_format": "trl"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|