@mcptoolshop/style-dataset-lab 3.3.0 → 3.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/CHANGELOG.md +60 -0
- package/README.es.md +117 -55
- package/README.fr.md +125 -65
- package/README.hi.md +117 -68
- package/README.it.md +119 -58
- package/README.ja.md +124 -74
- package/README.md +73 -7
- package/README.pt-BR.md +128 -63
- package/README.zh.md +116 -65
- package/bin/sdlab.js +100 -4
- package/lib/adapters/ai-toolkit.js +224 -35
- package/lib/adapters/comfyui-runner.js +79 -26
- package/lib/adapters/comfyui-workflows.js +94 -11
- package/lib/adapters/diffusers-lora.js +37 -5
- package/lib/adapters/generic-image-caption.js +43 -5
- package/lib/args.js +16 -1
- package/lib/asset-ingest.js +575 -0
- package/lib/asset-masks.js +323 -0
- package/lib/asset-source.js +1176 -0
- package/lib/batch-modes.js +29 -8
- package/lib/batch-runs.js +29 -1
- package/lib/batch-sheet-render.js +13 -3
- package/lib/brief-compiler.js +19 -0
- package/lib/candidate-sheet.js +327 -0
- package/lib/canon-author.js +350 -0
- package/lib/canon-build/build.js +146 -93
- package/lib/canon-review-gate.js +205 -0
- package/lib/captions.js +57 -0
- package/lib/card.js +74 -2
- package/lib/colab-launcher-guards.js +285 -0
- package/lib/comfyui.js +116 -18
- package/lib/config.js +116 -12
- package/lib/critique-engine.js +36 -2
- package/lib/eligibility.js +121 -9
- package/lib/eval-pack.js +14 -14
- package/lib/eval-runs.js +33 -0
- package/lib/export.js +122 -34
- package/lib/freeze-gate.js +16 -3
- package/lib/freeze-stamp.js +28 -3
- package/lib/generated-provenance.js +194 -6
- package/lib/implementation-packs.js +95 -17
- package/lib/ingest.js +396 -0
- package/lib/judgment-provenance.js +220 -0
- package/lib/lane1-render.js +668 -0
- package/lib/measure.js +422 -0
- package/lib/memory-store.js +663 -0
- package/lib/model-licences.js +305 -0
- package/lib/npy-meta.js +130 -0
- package/lib/paths.js +196 -7
- package/lib/png-meta.js +512 -0
- package/lib/records.js +54 -8
- package/lib/reingest-selected.js +113 -17
- package/lib/reingest.js +27 -3
- package/lib/run-manifest.js +159 -25
- package/lib/run-summary.js +12 -6
- package/lib/runtime-runs.js +45 -4
- package/lib/snapshot.js +114 -15
- package/lib/split.js +364 -48
- package/lib/train-runs.js +214 -0
- package/lib/training-manifests.js +114 -21
- package/lib/training-packages.js +147 -15
- package/lib/verifier.js +3 -0
- package/lib/verify-chain.js +367 -0
- package/lib/workflow-profiles.js +24 -3
- package/package.json +4 -3
- package/runtime/comfyui/txt2img-qwen.json +38 -0
- package/runtime/comfyui/txt2img-standard.json +21 -0
- package/scripts/_resume.js +62 -0
- package/scripts/_shared-args.js +44 -0
- package/scripts/asset-ingest.js +160 -0
- package/scripts/brief-compile.js +2 -1
- package/scripts/brief-show.js +2 -1
- package/scripts/canon-bind.js +2 -2
- package/scripts/canon-build.js +27 -20
- package/scripts/canon-draft.js +82 -0
- package/scripts/canon-drift.js +16 -7
- package/scripts/canon-freeze-status.js +14 -6
- package/scripts/canon-freeze.js +31 -11
- package/scripts/canon-unfreeze.js +17 -9
- package/scripts/card.js +2 -2
- package/scripts/colab/REAL_SERVICE_ASSUMPTIONS.md +14 -0
- package/scripts/colab/ai-toolkit-override-py315.txt +45 -0
- package/scripts/colab/colab_window.sh +587 -0
- package/scripts/colab/lane1_render.py +970 -0
- package/scripts/colab/launch_guards.py +564 -0
- package/scripts/colab/launch_lane1_stub.sh +309 -0
- package/scripts/colab/launch_lane3_stub.sh +366 -0
- package/scripts/colab/remote_runner.py +59 -0
- package/scripts/compare.js +2 -2
- package/scripts/critique.js +16 -1
- package/scripts/curate.js +2 -2
- package/scripts/doctor.js +182 -55
- package/scripts/eligibility.js +42 -2
- package/scripts/eval-pack.js +2 -2
- package/scripts/eval-run.js +2 -2
- package/scripts/export.js +2 -2
- package/scripts/generate-controlnet.js +45 -25
- package/scripts/generate-identity.js +53 -23
- package/scripts/generate-ipadapter.js +44 -23
- package/scripts/generate.js +86 -17
- package/scripts/implementation-pack.js +2 -2
- package/scripts/ingest.js +145 -0
- package/scripts/init.js +73 -13
- package/scripts/measure.js +170 -0
- package/scripts/measure_image.py +458 -0
- package/scripts/migrate-records.js +142 -0
- package/scripts/painterly-test.js +4 -3
- package/scripts/painterly.js +7 -3
- package/scripts/qwen_generate.py +138 -20
- package/scripts/reingest.js +2 -2
- package/scripts/sheet.js +142 -0
- package/scripts/snapshot.js +2 -2
- package/scripts/split.js +2 -2
- package/scripts/training-manifest.js +2 -2
- package/scripts/training-package.js +2 -2
- package/scripts/training-profile.js +2 -2
- package/scripts/verify.js +67 -0
- package/scripts/workflow-list.js +2 -1
- package/scripts/workflow-show.js +2 -1
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { join } from 'node:path';
|
|
14
14
|
import { parseArgs, getProjectName } from '../lib/args.js';
|
|
15
|
-
import {
|
|
15
|
+
import { getProjectRoot } from '../lib/paths.js';
|
|
16
16
|
import { inputError, handleCliError } from '../lib/errors.js';
|
|
17
17
|
import { listExports } from '../lib/export.js';
|
|
18
18
|
import {
|
|
@@ -35,7 +35,7 @@ export async function run(argv = process.argv.slice(2)) {
|
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
const projectName = flags.project || getProjectName(argv);
|
|
38
|
-
const projectRoot =
|
|
38
|
+
const projectRoot = getProjectRoot(projectName);
|
|
39
39
|
const subcommand = positionals.find(a => !a.startsWith('tm-')) || 'list';
|
|
40
40
|
|
|
41
41
|
if (subcommand === 'create') {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
import { join } from 'node:path';
|
|
13
13
|
import { parseArgs, getProjectName } from '../lib/args.js';
|
|
14
|
-
import {
|
|
14
|
+
import { getProjectRoot } from '../lib/paths.js';
|
|
15
15
|
import { inputError, handleCliError } from '../lib/errors.js';
|
|
16
16
|
import { listTrainingManifests } from '../lib/training-manifests.js';
|
|
17
17
|
import { buildTrainingPackage, listTrainingPackages, loadTrainingPackage } from '../lib/training-packages.js';
|
|
@@ -28,7 +28,7 @@ export async function run(argv = process.argv.slice(2)) {
|
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
const projectName = flags.project || getProjectName(argv);
|
|
31
|
-
const projectRoot =
|
|
31
|
+
const projectRoot = getProjectRoot(projectName);
|
|
32
32
|
const subcommand = positionals.find(a => !a.startsWith('tp-') && !a.startsWith('tm-')) || 'list';
|
|
33
33
|
|
|
34
34
|
if (subcommand === 'build') {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
import { join } from 'node:path';
|
|
12
12
|
import { parseArgs, getProjectName } from '../lib/args.js';
|
|
13
|
-
import {
|
|
13
|
+
import { getProjectRoot } from '../lib/paths.js';
|
|
14
14
|
import { inputError, handleCliError } from '../lib/errors.js';
|
|
15
15
|
import { listTrainingProfiles, loadTrainingProfile } from '../lib/training-profiles.js';
|
|
16
16
|
|
|
@@ -21,7 +21,7 @@ export async function run(argv = process.argv.slice(2)) {
|
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
const projectName = flags.project || getProjectName(argv);
|
|
24
|
-
const projectRoot =
|
|
24
|
+
const projectRoot = getProjectRoot(projectName);
|
|
25
25
|
const subcommand = positionals[0] || 'list';
|
|
26
26
|
|
|
27
27
|
if (subcommand === 'list') {
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* sdlab verify — Offline end-to-end provenance chain verification (G9, §2.2–§2.3).
|
|
5
|
+
*
|
|
6
|
+
* Walks:
|
|
7
|
+
* image -> record (G5 owner + CC-BY-4.0)
|
|
8
|
+
* -> canon (G6 canon_sha + entry_sha256)
|
|
9
|
+
* -> model licence (G4 SPDX id + licence_url + date_read)
|
|
10
|
+
* -> run manifest (workflow sha + quarantine guard + verdict separation)
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { parseArgs, getProjectName } from '../lib/args.js';
|
|
14
|
+
import { getProjectRoot } from '../lib/paths.js';
|
|
15
|
+
import { inputError, handleCliError } from '../lib/errors.js';
|
|
16
|
+
import { verifyProvenanceChain } from '../lib/verify-chain.js';
|
|
17
|
+
|
|
18
|
+
export async function run(argv = process.argv.slice(2)) {
|
|
19
|
+
const parsed = parseArgs(argv, {
|
|
20
|
+
flags: {
|
|
21
|
+
project: { type: 'string' },
|
|
22
|
+
game: { type: 'string' },
|
|
23
|
+
record: { type: 'string' },
|
|
24
|
+
snapshot: { type: 'string' },
|
|
25
|
+
json: { type: 'boolean' },
|
|
26
|
+
'allow-empty': { type: 'boolean' },
|
|
27
|
+
},
|
|
28
|
+
deprecated: { game: 'project' },
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const projectName = getProjectName(argv);
|
|
32
|
+
const projectDir = getProjectRoot(projectName);
|
|
33
|
+
|
|
34
|
+
const report = await verifyProvenanceChain(projectDir, {
|
|
35
|
+
recordId: parsed.flags.record || null,
|
|
36
|
+
snapshotId: parsed.flags.snapshot || null,
|
|
37
|
+
allowEmpty: parsed.flags['allow-empty'] === true,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
if (parsed.flags.json) {
|
|
41
|
+
console.log(JSON.stringify(report, null, 2));
|
|
42
|
+
} else {
|
|
43
|
+
console.log(`\x1b[1msdlab verify\x1b[0m — ${projectName}`);
|
|
44
|
+
console.log(` Records checked: ${report.records_checked} (${report.passed_count} passed, ${report.failed_count} failed)`);
|
|
45
|
+
for (const f of report.failures) {
|
|
46
|
+
console.error(` \x1b[31m✗\x1b[0m [${f.code}] ${f.message}`);
|
|
47
|
+
}
|
|
48
|
+
if (report.ok) {
|
|
49
|
+
console.log(` \x1b[32m✓\x1b[0m Provenance chain intact (CC-BY-4.0 eligible)`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (!report.ok) {
|
|
54
|
+
const codes = [...new Set(report.failures.map((f) => f.code))].join(', ');
|
|
55
|
+
throw inputError(
|
|
56
|
+
'PROVENANCE_VERIFY_FAILED',
|
|
57
|
+
`Provenance verification failed for project "${projectName}" (${report.failures.length} failure(s): ${codes})`,
|
|
58
|
+
'Fix the broken provenance link(s) reported above before releasing or exporting under CC-BY-4.0.',
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return report;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (process.argv[1] && (process.argv[1].endsWith('verify.js') || process.argv[1].endsWith('verify'))) {
|
|
66
|
+
run().catch(handleCliError);
|
|
67
|
+
}
|
package/scripts/workflow-list.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { getProjectName, parseArgs } from '../lib/args.js';
|
|
12
12
|
import { getProjectRoot } from '../lib/paths.js';
|
|
13
13
|
import { listWorkflowProfiles } from '../lib/workflow-profiles.js';
|
|
14
|
+
import { handleCliError } from '../lib/errors.js';
|
|
14
15
|
|
|
15
16
|
export async function run(argv = process.argv.slice(2)) {
|
|
16
17
|
const { flags } = parseArgs(argv, {
|
|
@@ -57,5 +58,5 @@ export async function run(argv = process.argv.slice(2)) {
|
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
if (process.argv[1] && (process.argv[1].endsWith('workflow-list.js') || process.argv[1].endsWith('workflow-list'))) {
|
|
60
|
-
run().catch(
|
|
61
|
+
run().catch(handleCliError);
|
|
61
62
|
}
|
package/scripts/workflow-show.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { parseArgs, getProjectName } from '../lib/args.js';
|
|
12
12
|
import { getProjectRoot } from '../lib/paths.js';
|
|
13
13
|
import { getWorkflowProfile } from '../lib/workflow-profiles.js';
|
|
14
|
+
import { handleCliError } from '../lib/errors.js';
|
|
14
15
|
|
|
15
16
|
export async function run(argv = process.argv.slice(2)) {
|
|
16
17
|
const { flags, positionals } = parseArgs(argv, {
|
|
@@ -93,5 +94,5 @@ export async function run(argv = process.argv.slice(2)) {
|
|
|
93
94
|
}
|
|
94
95
|
|
|
95
96
|
if (process.argv[1] && (process.argv[1].endsWith('workflow-show.js') || process.argv[1].endsWith('workflow-show'))) {
|
|
96
|
-
run().catch(
|
|
97
|
+
run().catch(handleCliError);
|
|
97
98
|
}
|