@bitmagic/cli 0.1.65-dev.2 → 0.1.65-dev.20
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 +137 -14
- package/assets/skills/trailer-craft.md +180 -0
- package/dist/assets/materials.d.ts +9 -0
- package/dist/assets/materials.js +10 -2
- package/dist/assets/materials.js.map +1 -1
- package/dist/cli.d.ts +9 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/character.d.ts +18 -0
- package/dist/commands/character.js +268 -0
- package/dist/commands/character.js.map +1 -0
- package/dist/commands/forge.d.ts +15 -0
- package/dist/commands/forge.js +143 -38
- package/dist/commands/forge.js.map +1 -1
- package/dist/commands/generate.d.ts +31 -13
- package/dist/commands/generate.js +48 -56
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/trailer.js +1 -1
- package/dist/commands/trailer.js.map +1 -1
- package/dist/editor/animation-preview-page.js +43 -1
- package/dist/editor/animation-preview-page.js.map +1 -1
- package/dist/editor/asset-detail-panel.d.ts +2 -2
- package/dist/editor/asset-detail-panel.js +21 -0
- package/dist/editor/asset-detail-panel.js.map +1 -1
- package/dist/editor/asset-viewer.js +31 -8
- package/dist/editor/asset-viewer.js.map +1 -1
- package/dist/editor/shell-page.js +63 -1
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/forge/edit-target.d.ts +30 -0
- package/dist/forge/edit-target.js +88 -0
- package/dist/forge/edit-target.js.map +1 -0
- package/dist/forge/prune-store.d.ts +46 -0
- package/dist/forge/prune-store.js +86 -0
- package/dist/forge/prune-store.js.map +1 -0
- package/dist/forge/remote-store.d.ts +36 -0
- package/dist/forge/remote-store.js +113 -0
- package/dist/forge/remote-store.js.map +1 -0
- package/dist/forge/run-pipeline.js +5 -1
- package/dist/forge/run-pipeline.js.map +1 -1
- package/dist/forge/stream.d.ts +5 -1
- package/dist/forge/stream.js +4 -0
- package/dist/forge/stream.js.map +1 -1
- package/dist/generate/character-body.d.ts +79 -0
- package/dist/generate/character-body.js +100 -0
- package/dist/generate/character-body.js.map +1 -0
- package/dist/mobile/asset-hosts.d.ts +7 -9
- package/dist/mobile/asset-hosts.js +7 -16
- package/dist/mobile/asset-hosts.js.map +1 -1
- package/dist/project/character-search.d.ts +30 -0
- package/dist/project/character-search.js +82 -0
- package/dist/project/character-search.js.map +1 -0
- package/dist/scaffold/asset-pipeline-skill-files.d.ts +38 -0
- package/dist/scaffold/asset-pipeline-skill-files.js +202 -0
- package/dist/scaffold/asset-pipeline-skill-files.js.map +1 -0
- package/dist/scaffold/blender-level-skill-files.js +3 -2
- package/dist/scaffold/blender-level-skill-files.js.map +1 -1
- package/dist/scaffold/project-files.js +16 -12
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/project.js +4 -1
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/skill-files.d.ts +32 -5
- package/dist/scaffold/skill-files.js +102 -63
- package/dist/scaffold/skill-files.js.map +1 -1
- package/dist/telemetry/creator-prompt.d.ts +18 -2
- package/dist/telemetry/creator-prompt.js +24 -3
- package/dist/telemetry/creator-prompt.js.map +1 -1
- package/dist/telemetry/report.js +31 -16
- package/dist/telemetry/report.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-target.js","sourceRoot":"","sources":["../../src/forge/edit-target.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Forge-store housekeeping — the job directories under `.bitmagic/forge` that
|
|
3
|
+
* nothing will read again are removed once a forge has landed.
|
|
4
|
+
*
|
|
5
|
+
* Every edit is a NEW job and the level keeps only its newest job's id, so a
|
|
6
|
+
* level edited a dozen times leaves a dozen finished job directories behind
|
|
7
|
+
* (dev-games/alien held 13, 6 MB, after one afternoon). A job is kept while
|
|
8
|
+
* anything could still want it:
|
|
9
|
+
*
|
|
10
|
+
* - an asset of the world names it as its forge job (`parentForgeJobId`, the
|
|
11
|
+
* same reading `--edit` uses) — that is the parent an edit reuses bakes from;
|
|
12
|
+
* - it is the job that just ran;
|
|
13
|
+
* - it never finished (no `persisted` record) — an unfinished job is what
|
|
14
|
+
* `--resume` continues, and its local bakes are the progress a resume keeps.
|
|
15
|
+
*
|
|
16
|
+
* The server's copy of every job is untouched: it is what a resume or an edit
|
|
17
|
+
* from another machine reads, and its lifetime is the server's call. The
|
|
18
|
+
* resolution is pure over world.json and a listing, so the rules are testable
|
|
19
|
+
* without a project on disk; the removal is best-effort, since a directory
|
|
20
|
+
* that will not delete must never fail a forge that has already landed.
|
|
21
|
+
*/
|
|
22
|
+
import { type JsonObject } from '../project/world-json.js';
|
|
23
|
+
export interface ForgeJobDir {
|
|
24
|
+
jobId: string;
|
|
25
|
+
/** The job wrote its `persisted` record: world.json has what it built. */
|
|
26
|
+
finished: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** The job ids the world's assets name — the jobs an edit could reuse bakes from. */
|
|
29
|
+
export declare function referencedForgeJobs(world: JsonObject): Set<string>;
|
|
30
|
+
/** Of `jobs`, the finished ones neither the world nor `keep` refers to, in listing order. */
|
|
31
|
+
export declare function staleForgeJobs(world: JsonObject, jobs: ReadonlyArray<ForgeJobDir>, keep: ReadonlyArray<string>): string[];
|
|
32
|
+
/** `<root>/.bitmagic/forge/worlds/v3/forged-work` — the store's job directories, by the shared key layout. */
|
|
33
|
+
export declare function forgeJobsDir(projectRoot: string): string;
|
|
34
|
+
/** The store's job directories, finished or not; an absent store lists nothing. */
|
|
35
|
+
export declare function listForgeJobDirs(projectRoot: string): ForgeJobDir[];
|
|
36
|
+
/**
|
|
37
|
+
* Remove the finished jobs the project no longer refers to. One line when
|
|
38
|
+
* something was removed, a warning when something would not go; silent otherwise.
|
|
39
|
+
*/
|
|
40
|
+
export declare function pruneForgeStore(options: {
|
|
41
|
+
projectRoot: string;
|
|
42
|
+
world: JsonObject;
|
|
43
|
+
/** Jobs to keep whatever the world says — the one that just ran. */
|
|
44
|
+
keep: ReadonlyArray<string>;
|
|
45
|
+
log: (message: string) => void;
|
|
46
|
+
}): string[];
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Forge-store housekeeping — the job directories under `.bitmagic/forge` that
|
|
3
|
+
* nothing will read again are removed once a forge has landed.
|
|
4
|
+
*
|
|
5
|
+
* Every edit is a NEW job and the level keeps only its newest job's id, so a
|
|
6
|
+
* level edited a dozen times leaves a dozen finished job directories behind
|
|
7
|
+
* (dev-games/alien held 13, 6 MB, after one afternoon). A job is kept while
|
|
8
|
+
* anything could still want it:
|
|
9
|
+
*
|
|
10
|
+
* - an asset of the world names it as its forge job (`parentForgeJobId`, the
|
|
11
|
+
* same reading `--edit` uses) — that is the parent an edit reuses bakes from;
|
|
12
|
+
* - it is the job that just ran;
|
|
13
|
+
* - it never finished (no `persisted` record) — an unfinished job is what
|
|
14
|
+
* `--resume` continues, and its local bakes are the progress a resume keeps.
|
|
15
|
+
*
|
|
16
|
+
* The server's copy of every job is untouched: it is what a resume or an edit
|
|
17
|
+
* from another machine reads, and its lifetime is the server's call. The
|
|
18
|
+
* resolution is pure over world.json and a listing, so the rules are testable
|
|
19
|
+
* without a project on disk; the removal is best-effort, since a directory
|
|
20
|
+
* that will not delete must never fail a forge that has already landed.
|
|
21
|
+
*/
|
|
22
|
+
import * as fs from 'fs';
|
|
23
|
+
import * as path from 'path';
|
|
24
|
+
import { forgeArtifactKey, parentForgeJobId } from '@bitmagic/world-forger/pipeline/index.js';
|
|
25
|
+
import { FORGE_STORE_DIR } from './local-store.js';
|
|
26
|
+
import { isJsonObject } from '../project/world-json.js';
|
|
27
|
+
/** The job ids the world's assets name — the jobs an edit could reuse bakes from. */
|
|
28
|
+
export function referencedForgeJobs(world) {
|
|
29
|
+
const assets = Array.isArray(world.assets) ? world.assets.filter(isJsonObject) : [];
|
|
30
|
+
const jobs = new Set();
|
|
31
|
+
for (const asset of assets) {
|
|
32
|
+
const jobId = parentForgeJobId(asset);
|
|
33
|
+
if (jobId !== null)
|
|
34
|
+
jobs.add(jobId);
|
|
35
|
+
}
|
|
36
|
+
return jobs;
|
|
37
|
+
}
|
|
38
|
+
/** Of `jobs`, the finished ones neither the world nor `keep` refers to, in listing order. */
|
|
39
|
+
export function staleForgeJobs(world, jobs, keep) {
|
|
40
|
+
const referenced = referencedForgeJobs(world);
|
|
41
|
+
for (const jobId of keep)
|
|
42
|
+
referenced.add(jobId);
|
|
43
|
+
return jobs.filter((job) => job.finished && !referenced.has(job.jobId)).map((job) => job.jobId);
|
|
44
|
+
}
|
|
45
|
+
/** `<root>/.bitmagic/forge/worlds/v3/forged-work` — the store's job directories, by the shared key layout. */
|
|
46
|
+
export function forgeJobsDir(projectRoot) {
|
|
47
|
+
const oneJob = path.dirname(forgeArtifactKey('job', 'persisted'));
|
|
48
|
+
return path.join(projectRoot, FORGE_STORE_DIR, path.dirname(oneJob));
|
|
49
|
+
}
|
|
50
|
+
/** The store's job directories, finished or not; an absent store lists nothing. */
|
|
51
|
+
export function listForgeJobDirs(projectRoot) {
|
|
52
|
+
const dir = forgeJobsDir(projectRoot);
|
|
53
|
+
if (!fs.existsSync(dir))
|
|
54
|
+
return [];
|
|
55
|
+
return fs.readdirSync(dir, { withFileTypes: true })
|
|
56
|
+
.filter((entry) => entry.isDirectory())
|
|
57
|
+
.map((entry) => ({
|
|
58
|
+
jobId: entry.name,
|
|
59
|
+
finished: fs.existsSync(path.join(projectRoot, FORGE_STORE_DIR, forgeArtifactKey(entry.name, 'persisted'))),
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Remove the finished jobs the project no longer refers to. One line when
|
|
64
|
+
* something was removed, a warning when something would not go; silent otherwise.
|
|
65
|
+
*/
|
|
66
|
+
export function pruneForgeStore(options) {
|
|
67
|
+
const { projectRoot, world, keep, log } = options;
|
|
68
|
+
const stale = staleForgeJobs(world, listForgeJobDirs(projectRoot), keep);
|
|
69
|
+
const removed = [];
|
|
70
|
+
for (const jobId of stale) {
|
|
71
|
+
const dir = path.join(forgeJobsDir(projectRoot), jobId);
|
|
72
|
+
try {
|
|
73
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
74
|
+
removed.push(jobId);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
78
|
+
log(`warning: could not remove the finished forge job ${jobId} from ${FORGE_STORE_DIR} (${detail}); it is safe to delete by hand.`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (removed.length > 0) {
|
|
82
|
+
log(`Removed ${removed.length} finished forge job${removed.length === 1 ? '' : 's'} from ${FORGE_STORE_DIR} that no level refers to any more.`);
|
|
83
|
+
}
|
|
84
|
+
return removed;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=prune-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prune-store.js","sourceRoot":"","sources":["../../src/forge/prune-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The forge store with a server behind it.
|
|
3
|
+
*
|
|
4
|
+
* The CLI keeps every forge artifact in the project's `.bitmagic/forge` (see
|
|
5
|
+
* local-store.ts). This wraps that storage so the artifacts the BROWSER steps
|
|
6
|
+
* write are also PUT to api-server, and anything missing locally is fetched
|
|
7
|
+
* from it — so a job can be resumed, and a forged level edited, from a
|
|
8
|
+
* machine that never ran the original forge. The server owns `input`, `spec`
|
|
9
|
+
* and `forge` and refuses a client write of them; those are written locally
|
|
10
|
+
* only (they arrive on the forge's terminal frame anyway).
|
|
11
|
+
*
|
|
12
|
+
* The mirror is best-effort by design: the local write is the one the run
|
|
13
|
+
* depends on, and a server that cannot be reached must not fail a bake that
|
|
14
|
+
* has already been paid for. A failed mirror is said once, plainly, because
|
|
15
|
+
* its cost is real — the artifact will not be there for another machine.
|
|
16
|
+
* Reads that fall through to the server are cached locally, so a resumed job
|
|
17
|
+
* reads from disk from then on.
|
|
18
|
+
*/
|
|
19
|
+
import type { ForgeStorageEnv } from '@bitmagic/world-forger/pipeline/index.js';
|
|
20
|
+
import type { Environment } from '../config/environments.js';
|
|
21
|
+
export interface RemoteForgeStoreDeps {
|
|
22
|
+
environment: Environment;
|
|
23
|
+
/**
|
|
24
|
+
* Resolved on the FIRST remote call, not when the store is built: the store
|
|
25
|
+
* is created before the command's cheap pre-request checks, and a run that
|
|
26
|
+
* never leaves the machine (a fresh forge with every artifact local) must
|
|
27
|
+
* not demand a login it would not otherwise need until the request.
|
|
28
|
+
*/
|
|
29
|
+
accessToken: () => Promise<string>;
|
|
30
|
+
fetch: typeof globalThis.fetch;
|
|
31
|
+
/** Where a failed mirror or fetch is said. */
|
|
32
|
+
warn: (message: string) => void;
|
|
33
|
+
}
|
|
34
|
+
export declare function forgeArtifactUrl(environment: Environment, jobId: string, name: string): string;
|
|
35
|
+
/** Wrap a local storage env so forged-work artifacts are mirrored to, and fetched from, the server. */
|
|
36
|
+
export declare function createMirroredForgeStorage(local: ForgeStorageEnv, deps: RemoteForgeStoreDeps): ForgeStorageEnv;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The forge store with a server behind it.
|
|
3
|
+
*
|
|
4
|
+
* The CLI keeps every forge artifact in the project's `.bitmagic/forge` (see
|
|
5
|
+
* local-store.ts). This wraps that storage so the artifacts the BROWSER steps
|
|
6
|
+
* write are also PUT to api-server, and anything missing locally is fetched
|
|
7
|
+
* from it — so a job can be resumed, and a forged level edited, from a
|
|
8
|
+
* machine that never ran the original forge. The server owns `input`, `spec`
|
|
9
|
+
* and `forge` and refuses a client write of them; those are written locally
|
|
10
|
+
* only (they arrive on the forge's terminal frame anyway).
|
|
11
|
+
*
|
|
12
|
+
* The mirror is best-effort by design: the local write is the one the run
|
|
13
|
+
* depends on, and a server that cannot be reached must not fail a bake that
|
|
14
|
+
* has already been paid for. A failed mirror is said once, plainly, because
|
|
15
|
+
* its cost is real — the artifact will not be there for another machine.
|
|
16
|
+
* Reads that fall through to the server are cached locally, so a resumed job
|
|
17
|
+
* reads from disk from then on.
|
|
18
|
+
*/
|
|
19
|
+
import { CLIENT_FORGE_ARTIFACTS, parseForgeArtifactKey } from '@bitmagic/world-forger/pipeline/index.js';
|
|
20
|
+
import { apiServerHeaders } from '../telemetry/request-headers.js';
|
|
21
|
+
export function forgeArtifactUrl(environment, jobId, name) {
|
|
22
|
+
return `${environment.apiUrl}/api/cli/v1/forge/jobs/${encodeURIComponent(jobId)}/artifacts/${encodeURIComponent(name)}`;
|
|
23
|
+
}
|
|
24
|
+
/** Wrap a local storage env so forged-work artifacts are mirrored to, and fetched from, the server. */
|
|
25
|
+
export function createMirroredForgeStorage(local, deps) {
|
|
26
|
+
const said = new Set();
|
|
27
|
+
const warnOnce = (key, message) => {
|
|
28
|
+
if (said.has(key))
|
|
29
|
+
return;
|
|
30
|
+
said.add(key);
|
|
31
|
+
deps.warn(message);
|
|
32
|
+
};
|
|
33
|
+
const headers = async () => ({
|
|
34
|
+
...apiServerHeaders(),
|
|
35
|
+
Authorization: `Bearer ${await deps.accessToken()}`,
|
|
36
|
+
});
|
|
37
|
+
const failure = (error) => (error instanceof Error ? error.message : String(error));
|
|
38
|
+
const client = {
|
|
39
|
+
async putObject(params) {
|
|
40
|
+
const written = await local.storageClient.putObject(params);
|
|
41
|
+
const parsed = parseForgeArtifactKey(params.key);
|
|
42
|
+
if (parsed === null || !CLIENT_FORGE_ARTIFACTS.includes(parsed.name))
|
|
43
|
+
return written;
|
|
44
|
+
const body = typeof params.body === 'string' ? params.body : new TextDecoder().decode(params.body);
|
|
45
|
+
try {
|
|
46
|
+
const response = await deps.fetch(forgeArtifactUrl(deps.environment, parsed.jobId, parsed.name), {
|
|
47
|
+
method: 'PUT',
|
|
48
|
+
headers: { ...(await headers()), 'Content-Type': 'application/json' },
|
|
49
|
+
body,
|
|
50
|
+
});
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
warnOnce(`put:${parsed.name}`, `Could not mirror the forge's "${parsed.name}" record to api-server (HTTP ${response.status}). The run continues from `
|
|
53
|
+
+ 'the local copy, but resuming or editing this level from another machine will re-bake it.');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
warnOnce(`put:${parsed.name}`, `Could not mirror the forge's "${parsed.name}" record to api-server (${failure(error)}). The run continues from `
|
|
58
|
+
+ 'the local copy, but resuming or editing this level from another machine will re-bake it.');
|
|
59
|
+
}
|
|
60
|
+
return written;
|
|
61
|
+
},
|
|
62
|
+
async headObject(params) {
|
|
63
|
+
if (await local.storageClient.headObject(params))
|
|
64
|
+
return true;
|
|
65
|
+
const parsed = parseForgeArtifactKey(params.key);
|
|
66
|
+
if (parsed === null)
|
|
67
|
+
return false;
|
|
68
|
+
try {
|
|
69
|
+
const response = await deps.fetch(forgeArtifactUrl(deps.environment, parsed.jobId, parsed.name), {
|
|
70
|
+
method: 'HEAD',
|
|
71
|
+
headers: await headers(),
|
|
72
|
+
});
|
|
73
|
+
return response.ok;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
warnOnce('head', `Could not ask api-server for the job's saved state (${failure(error)}) — working from the local copy only.`);
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
async getObject(params) {
|
|
81
|
+
const here = await local.storageClient.getObject(params);
|
|
82
|
+
if (here !== null)
|
|
83
|
+
return here;
|
|
84
|
+
const parsed = parseForgeArtifactKey(params.key);
|
|
85
|
+
if (parsed === null)
|
|
86
|
+
return null;
|
|
87
|
+
try {
|
|
88
|
+
const response = await deps.fetch(forgeArtifactUrl(deps.environment, parsed.jobId, parsed.name), {
|
|
89
|
+
method: 'GET',
|
|
90
|
+
headers: await headers(),
|
|
91
|
+
});
|
|
92
|
+
if (response.status === 404)
|
|
93
|
+
return null;
|
|
94
|
+
if (!response.ok) {
|
|
95
|
+
warnOnce(`get:${parsed.name}`, `api-server refused the job's "${parsed.name}" record (HTTP ${response.status}) — working from the local copy only.`);
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
const bytes = new Uint8Array(await response.arrayBuffer());
|
|
99
|
+
// Cached locally so the rest of the run, and the next one, read from disk.
|
|
100
|
+
await local.storageClient.putObject({
|
|
101
|
+
bucket: params.bucket, key: params.key, body: bytes, contentType: 'application/json', cacheControl: 'no-store, max-age=0',
|
|
102
|
+
});
|
|
103
|
+
return bytes;
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
warnOnce('get', `Could not fetch the job's saved state from api-server (${failure(error)}) — working from the local copy only.`);
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
return { ...local, storageClient: client };
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=remote-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-store.js","sourceRoot":"","sources":["../../src/forge/remote-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -265,7 +265,11 @@ export async function runForgePipeline(options) {
|
|
|
265
265
|
return { summary, applied: true, changes: outcome.summary };
|
|
266
266
|
}
|
|
267
267
|
if (await store.has('level-bake')) {
|
|
268
|
-
|
|
268
|
+
// An edit seeds the parent's bake here (seed-edit-store.ts); a resume finds its own.
|
|
269
|
+
const editing = (await store.get('input'))?.parentJobId !== undefined;
|
|
270
|
+
tracker.skip('voxelize', editing
|
|
271
|
+
? 'Level bake reused from the level being edited — nothing it bakes changed.'
|
|
272
|
+
: 'Level already baked — skipping (resumed).');
|
|
269
273
|
}
|
|
270
274
|
else {
|
|
271
275
|
await voxelizeLevel(store, deps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-pipeline.js","sourceRoot":"","sources":["../../src/forge/run-pipeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run-pipeline.js","sourceRoot":"","sources":["../../src/forge/run-pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/forge/stream.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* `{ success, message, patches }` — and so is what a failure means to the creator, which is what
|
|
11
11
|
* {@link classifyForgeFailure} is for.
|
|
12
12
|
*/
|
|
13
|
-
import type { ForgeArtifact, ForgeProgressEvent } from '@bitmagic/world-forger/pipeline/index.js';
|
|
13
|
+
import type { ForgeReusePlan, ForgeArtifact, ForgeProgressEvent } from '@bitmagic/world-forger/pipeline/index.js';
|
|
14
14
|
import type { Environment } from '../config/environments.js';
|
|
15
15
|
export interface ForgeSuccess {
|
|
16
16
|
success: true;
|
|
@@ -24,6 +24,10 @@ export interface ForgeSuccess {
|
|
|
24
24
|
* `warnIfPlatformerMovementMissing`, which stays as the older-server fallback.
|
|
25
25
|
*/
|
|
26
26
|
platformerMovement?: Record<string, unknown>;
|
|
27
|
+
/** EDIT jobs: the forge that built the level being edited. */
|
|
28
|
+
parentJobId?: string;
|
|
29
|
+
/** EDIT jobs: what the server says this run may reuse from the parent (see seed-edit-store.ts). */
|
|
30
|
+
reuse?: ForgeReusePlan;
|
|
27
31
|
}
|
|
28
32
|
export interface ForgeFailure {
|
|
29
33
|
success: false;
|
package/dist/forge/stream.js
CHANGED
|
@@ -258,6 +258,10 @@ function asForgeSuccess(data) {
|
|
|
258
258
|
// Absent on every non-platformer forge, and absent from any server deployed before the field
|
|
259
259
|
// existed — so it is optional here rather than a reason to reject the frame.
|
|
260
260
|
...(isRecord(data.platformerMovement) ? { platformerMovement: data.platformerMovement } : {}),
|
|
261
|
+
// An edit's terminal frame. Trusted structurally like the artifact: the plan is
|
|
262
|
+
// produced by the same package this CLI hands it back to.
|
|
263
|
+
...(stringField(data.parentJobId) !== null ? { parentJobId: stringField(data.parentJobId) } : {}),
|
|
264
|
+
...(isRecord(data.reuse) ? { reuse: data.reuse } : {}),
|
|
261
265
|
};
|
|
262
266
|
}
|
|
263
267
|
/**
|
package/dist/forge/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/forge/stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/forge/stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export interface CharacterArgs {
|
|
2
|
+
name: string;
|
|
3
|
+
prompt: string;
|
|
4
|
+
applyToPlayer?: boolean;
|
|
5
|
+
headScale?: string;
|
|
6
|
+
/** `--fresh`: forge a new one, never substitute a stored body. */
|
|
7
|
+
fresh?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* citty's negative boolean: `--no-library` arrives as `false`; the flag has no positive form.
|
|
10
|
+
* The deprecated spelling of `--fresh`, kept working because every scaffolded AGENTS.md
|
|
11
|
+
* written before the rename teaches it.
|
|
12
|
+
*/
|
|
13
|
+
library?: boolean;
|
|
14
|
+
/** `--library-only`: take the closest stored body, never forge, never charge. */
|
|
15
|
+
libraryOnly?: boolean;
|
|
16
|
+
/** A row a prior search returned, which `bitmagic character add --id` adds verbatim. */
|
|
17
|
+
libraryPick?: {
|
|
18
|
+
sid: string;
|
|
19
|
+
assetUrl: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
similarity: number;
|
|
22
|
+
};
|
|
23
|
+
/** Absent = the generator's default (true); the command fills it from the project's art style. */
|
|
24
|
+
voxelize?: boolean;
|
|
25
|
+
/** Asset Forger image-to-mesh model; absent = the Forger default. */
|
|
26
|
+
meshModel?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The character default a project's art style implies: a low-poly game keeps the textured rig.
|
|
30
|
+
* Read from the cwd's project like every other generate command; outside a project the answer
|
|
31
|
+
* is "declares nothing", so the generator's own default (voxelize) stands and `loadProjectContext`
|
|
32
|
+
* reports the missing project on the very next line.
|
|
33
|
+
*/
|
|
34
|
+
export declare function defaultVoxelizeForProject(): boolean | undefined;
|
|
35
|
+
export declare function buildCharacterBody(args: CharacterArgs): Record<string, unknown>;
|
|
36
|
+
export declare const NAME_ARG: {
|
|
37
|
+
readonly type: "string";
|
|
38
|
+
readonly required: true;
|
|
39
|
+
readonly description: "Unique name for the character.";
|
|
40
|
+
};
|
|
41
|
+
export declare const PROMPT_ARG: {
|
|
42
|
+
readonly type: "string";
|
|
43
|
+
readonly required: true;
|
|
44
|
+
readonly description: "Description of the character.";
|
|
45
|
+
};
|
|
46
|
+
export declare const APPLY_TO_PLAYER_ARG: {
|
|
47
|
+
readonly type: "boolean";
|
|
48
|
+
readonly description: "Set this character as the PLAYER. Omit to use the generator default (true).";
|
|
49
|
+
};
|
|
50
|
+
export declare const HEAD_SCALE_ARG: {
|
|
51
|
+
readonly type: "string";
|
|
52
|
+
readonly description: "Head size as a percentage of normal, 50-300. Omit to use the generator default.";
|
|
53
|
+
};
|
|
54
|
+
export declare const FRESH_ARG: {
|
|
55
|
+
readonly type: "boolean";
|
|
56
|
+
readonly description: string;
|
|
57
|
+
};
|
|
58
|
+
export declare const VOXELIZE_ARG: {
|
|
59
|
+
readonly type: "boolean";
|
|
60
|
+
readonly description: "Voxelize the rigged body. Omit to follow game.json artStyle: voxel games voxelize, low-poly games keep the textured rig.";
|
|
61
|
+
readonly negativeDescription: "Keep the textured low-poly rig instead of voxelizing it.";
|
|
62
|
+
};
|
|
63
|
+
export declare const MESH_MODEL_ARG: {
|
|
64
|
+
readonly type: "string";
|
|
65
|
+
readonly description: "Image-to-mesh model. Low-poly characters already default to 'runware-rodin-gen-2', which bills 60 sparks and takes ~3 min; pass 'unified-trellis' to put one back on the cheap lane at 15 sparks. Voxel characters ignore the default and use the Forger's.";
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* The deprecated spelling of `--fresh`.
|
|
69
|
+
*
|
|
70
|
+
* Kept declared because citty derives `--no-library` from an argument NAMED
|
|
71
|
+
* `library`, so there is no way to accept the old flag without it — and no way
|
|
72
|
+
* to hide it either: citty's `ArgDef` has no `hidden` field (only `CommandMeta`
|
|
73
|
+
* does). So it stays visible and says what it is.
|
|
74
|
+
*/
|
|
75
|
+
export declare const LIBRARY_ARG: {
|
|
76
|
+
readonly type: "boolean";
|
|
77
|
+
readonly description: "Deprecated and unnecessary — the library is consulted by default. Use --fresh to skip it.";
|
|
78
|
+
readonly negativeDescription: "Deprecated spelling of --fresh. Always makes a new character.";
|
|
79
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The character request: its flags, and the body they map onto.
|
|
3
|
+
*
|
|
4
|
+
* Lives here rather than in either command because TWO commands present it —
|
|
5
|
+
* `bitmagic character generate` and the deprecated `bitmagic generate character`
|
|
6
|
+
* it replaced — and a deprecated alias whose flags have drifted from the command
|
|
7
|
+
* it aliases is worse than no alias at all. One definition, imported by both.
|
|
8
|
+
*
|
|
9
|
+
* Field names are exactly what `characterParamsSchema`
|
|
10
|
+
* (shared/asset-core/src/generators/character.ts) expects, and a flag the
|
|
11
|
+
* creator did not pass is OMITTED rather than sent as `undefined` or as a
|
|
12
|
+
* restated default — the generator owns its defaults.
|
|
13
|
+
*/
|
|
14
|
+
import { findProjectRootOrNull } from '../project/context.js';
|
|
15
|
+
import { readArtStyleDeclaration } from '../project/art-style.js';
|
|
16
|
+
import { parseNumberFlag } from '../commands/number-flag.js';
|
|
17
|
+
/** Drops the keys an absent flag left `undefined`; `false` and `0` are deliberate values. */
|
|
18
|
+
function withoutAbsentFlags(fields) {
|
|
19
|
+
return Object.fromEntries(Object.entries(fields).filter(([, value]) => value !== undefined));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The character default a project's art style implies: a low-poly game keeps the textured rig.
|
|
23
|
+
* Read from the cwd's project like every other generate command; outside a project the answer
|
|
24
|
+
* is "declares nothing", so the generator's own default (voxelize) stands and `loadProjectContext`
|
|
25
|
+
* reports the missing project on the very next line.
|
|
26
|
+
*/
|
|
27
|
+
export function defaultVoxelizeForProject() {
|
|
28
|
+
const root = findProjectRootOrNull();
|
|
29
|
+
if (root === null)
|
|
30
|
+
return undefined;
|
|
31
|
+
return readArtStyleDeclaration(root).artStyle === 'low-poly' ? false : undefined;
|
|
32
|
+
}
|
|
33
|
+
export function buildCharacterBody(args) {
|
|
34
|
+
return withoutAbsentFlags({
|
|
35
|
+
name: args.name,
|
|
36
|
+
prompt: args.prompt,
|
|
37
|
+
applyToPlayer: args.applyToPlayer,
|
|
38
|
+
headScale: parseNumberFlag('head-scale', args.headScale, { min: 50, max: 300 }),
|
|
39
|
+
// `--fresh` and the deprecated `--no-library` are the same request. Neither
|
|
40
|
+
// passed leaves the field absent, so the generator's default (search first)
|
|
41
|
+
// stands rather than being restated here.
|
|
42
|
+
useLibrary: args.fresh === true ? false : args.library,
|
|
43
|
+
libraryOnly: args.libraryOnly,
|
|
44
|
+
libraryPick: args.libraryPick,
|
|
45
|
+
voxelize: args.voxelize,
|
|
46
|
+
meshModel: args.meshModel,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// Flag definitions, shared by `character generate` and the deprecated alias
|
|
51
|
+
// ============================================================================
|
|
52
|
+
export const NAME_ARG = {
|
|
53
|
+
type: 'string',
|
|
54
|
+
required: true,
|
|
55
|
+
description: 'Unique name for the character.',
|
|
56
|
+
};
|
|
57
|
+
export const PROMPT_ARG = {
|
|
58
|
+
type: 'string',
|
|
59
|
+
required: true,
|
|
60
|
+
description: 'Description of the character.',
|
|
61
|
+
};
|
|
62
|
+
export const APPLY_TO_PLAYER_ARG = {
|
|
63
|
+
type: 'boolean',
|
|
64
|
+
description: 'Set this character as the PLAYER. Omit to use the generator default (true).',
|
|
65
|
+
};
|
|
66
|
+
export const HEAD_SCALE_ARG = {
|
|
67
|
+
type: 'string',
|
|
68
|
+
description: 'Head size as a percentage of normal, 50-300. Omit to use the generator default.',
|
|
69
|
+
};
|
|
70
|
+
export const FRESH_ARG = {
|
|
71
|
+
type: 'boolean',
|
|
72
|
+
description: 'Forge a new character even when the library has a close match. '
|
|
73
|
+
+ 'Use it when you want this exact brief made rather than the nearest ready-made body.',
|
|
74
|
+
};
|
|
75
|
+
export const VOXELIZE_ARG = {
|
|
76
|
+
type: 'boolean',
|
|
77
|
+
description: 'Voxelize the rigged body. Omit to follow game.json artStyle: voxel games voxelize, low-poly games keep the textured rig.',
|
|
78
|
+
negativeDescription: 'Keep the textured low-poly rig instead of voxelizing it.',
|
|
79
|
+
};
|
|
80
|
+
export const MESH_MODEL_ARG = {
|
|
81
|
+
type: 'string',
|
|
82
|
+
description: "Image-to-mesh model. Low-poly characters already default to 'runware-rodin-gen-2', which bills 60 sparks and takes ~3 min; pass 'unified-trellis' to put one back on the cheap lane at 15 sparks. Voxel characters ignore the default and use the Forger's.",
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* The deprecated spelling of `--fresh`.
|
|
86
|
+
*
|
|
87
|
+
* Kept declared because citty derives `--no-library` from an argument NAMED
|
|
88
|
+
* `library`, so there is no way to accept the old flag without it — and no way
|
|
89
|
+
* to hide it either: citty's `ArgDef` has no `hidden` field (only `CommandMeta`
|
|
90
|
+
* does). So it stays visible and says what it is.
|
|
91
|
+
*/
|
|
92
|
+
export const LIBRARY_ARG = {
|
|
93
|
+
type: 'boolean',
|
|
94
|
+
// Both forms get a description, because citty renders a positive row for any
|
|
95
|
+
// boolean arg whether or not the flag is meant to be used. Left undescribed it
|
|
96
|
+
// was a blank line in `--help` sitting next to `--fresh`.
|
|
97
|
+
description: 'Deprecated and unnecessary — the library is consulted by default. Use --fresh to skip it.',
|
|
98
|
+
negativeDescription: 'Deprecated spelling of --fresh. Always makes a new character.',
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=character-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-body.js","sourceRoot":"","sources":["../../src/generate/character-body.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,6FAA6F;AAC7F,SAAS,kBAAkB,CAAC,MAA+B;IACzD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC;AAC/F,CAAC;AAyBD;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;IACrC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAmB;IACpD,OAAO,kBAAkB,CAAC;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,SAAS,EAAE,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC/E,4EAA4E;QAC5E,4EAA4E;QAC5E,0CAA0C;QAC1C,UAAU,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;QACtD,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,gCAAgC;CACrC,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,+BAA+B;CACpC,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,6EAA6E;CAClF,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,iFAAiF;CACtF,CAAC;AAEX,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,iEAAiE;UAC1E,qFAAqF;CACjF,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,0HAA0H;IACvI,mBAAmB,EAAE,0DAA0D;CACvE,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,6PAA6P;CAClQ,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,SAAS;IACf,6EAA6E;IAC7E,+EAA+E;IAC/E,0DAA0D;IAC1D,WAAW,EAAE,2FAA2F;IACxG,mBAAmB,EAAE,+DAA+D;CAC5E,CAAC"}
|