@bitmagic/cli 0.1.52-dev.11 → 0.1.52-dev.13
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/assets/add.js +2 -1
- package/dist/assets/add.js.map +1 -1
- package/dist/assets/voxelize-glb.d.ts +17 -1
- package/dist/assets/voxelize-glb.js +43 -19
- package/dist/assets/voxelize-glb.js.map +1 -1
- package/dist/cli.js +6 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/generate.d.ts +14 -0
- package/dist/commands/generate.js +62 -63
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/levels.d.ts +10 -17
- package/dist/commands/levels.js +48 -48
- package/dist/commands/levels.js.map +1 -1
- package/dist/editor/journal.js +13 -7
- package/dist/editor/journal.js.map +1 -1
- package/dist/generate/model.d.ts +13 -2
- package/dist/generate/model.js +70 -21
- package/dist/generate/model.js.map +1 -1
- package/dist/generate/prop.d.ts +8 -0
- package/dist/generate/prop.js +8 -6
- package/dist/generate/prop.js.map +1 -1
- package/dist/levels/registry.d.ts +5 -2
- package/dist/levels/registry.js +32 -27
- package/dist/levels/registry.js.map +1 -1
- package/dist/project/jobs.js +16 -20
- package/dist/project/jobs.js.map +1 -1
- package/package.json +4 -4
package/dist/assets/add.js
CHANGED
|
@@ -188,7 +188,8 @@ export async function addAssetFile(options) {
|
|
|
188
188
|
+ `asset (the GLB from this run is already uploaded at ${url}).`;
|
|
189
189
|
const voxelize = options.voxelize ?? voxelizeGlbIntoAsset;
|
|
190
190
|
const engineAsset = await voxelize({
|
|
191
|
-
context, environment, token, name,
|
|
191
|
+
context, environment, token, name, source: { kind: 'glb', glbUrl: url }, assetId,
|
|
192
|
+
voxel: options.voxel, retryHint,
|
|
192
193
|
requestPrefix: 'upload', log,
|
|
193
194
|
});
|
|
194
195
|
assertEngineHonouredId(engineAsset, assetId, name, `the GLB is already uploaded at ${url}`);
|
package/dist/assets/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/assets/add.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/assets/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,13 +8,29 @@ export interface VoxelizeFlags {
|
|
|
8
8
|
targetHeight?: number;
|
|
9
9
|
fillInterior: boolean;
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* What the bake was handed.
|
|
13
|
+
*
|
|
14
|
+
* A union rather than two optional URLs because exactly one is always true, and because the two
|
|
15
|
+
* take different engine messages. Shared with `generate prop`, which makes the same choice for the
|
|
16
|
+
* same reason — see generate/prop.ts.
|
|
17
|
+
*/
|
|
18
|
+
export type BakeSource = {
|
|
19
|
+
kind: 'glb';
|
|
20
|
+
glbUrl: string;
|
|
21
|
+
} | {
|
|
22
|
+
kind: 'master';
|
|
23
|
+
masterUrl: string;
|
|
24
|
+
};
|
|
25
|
+
/** The URL a source carries, for messages that just need to name what is kept. */
|
|
26
|
+
export declare function bakeSourceUrl(source: BakeSource): string;
|
|
11
27
|
export interface VoxelizeGlbRequest {
|
|
12
28
|
context: ProjectContext;
|
|
13
29
|
environment: Environment;
|
|
14
30
|
token: string;
|
|
15
31
|
/** Asset name; also what the engine builds its uploaded `.vxl` filename from. */
|
|
16
32
|
name: string;
|
|
17
|
-
|
|
33
|
+
source: BakeSource;
|
|
18
34
|
/** The id to register under. The engine echoes it back, and callers must check that it did. */
|
|
19
35
|
assetId: string;
|
|
20
36
|
voxel: VoxelizeFlags;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bake one
|
|
2
|
+
* Bake one generated source into a NEW voxel asset, in the project's own headless engine.
|
|
3
3
|
*
|
|
4
|
-
* Two lanes need exactly this and differ only in where the
|
|
4
|
+
* Two lanes need exactly this and differ only in where the source came from:
|
|
5
5
|
*
|
|
6
6
|
* - `bitmagic assets add model.glb` uploads a file the creator already has;
|
|
7
7
|
* - `bitmagic generate model --prompt …` pays the Asset Forger for one.
|
|
@@ -11,38 +11,62 @@
|
|
|
11
11
|
* rather than in both. `generate prop` deliberately does NOT use this: it upgrades an EXISTING
|
|
12
12
|
* asset in place, constrained to that asset's recorded `fitBox`, which is a different operation
|
|
13
13
|
* with a different precondition (see generate/prop.ts).
|
|
14
|
+
*
|
|
15
|
+
* The source is a mesh or a voxel master — see `BakeSource`. Both are answered on the same engine
|
|
16
|
+
* reply channel, so only the request differs.
|
|
14
17
|
*/
|
|
15
18
|
import { CliError } from '../errors.js';
|
|
16
19
|
import { VOXELIZE_TIMEOUT_MS, withVoxelizeSession } from '../forge/voxelize-session.js';
|
|
17
20
|
import { isJsonObject } from '../project/world-json.js';
|
|
21
|
+
/** The URL a source carries, for messages that just need to name what is kept. */
|
|
22
|
+
export function bakeSourceUrl(source) {
|
|
23
|
+
return source.kind === 'glb' ? source.glbUrl : source.masterUrl;
|
|
24
|
+
}
|
|
18
25
|
export const voxelizeGlbIntoAsset = async (request) => {
|
|
19
|
-
const { context, environment, token, name,
|
|
26
|
+
const { context, environment, token, name, source, assetId, voxel, retryHint, requestPrefix, log } = request;
|
|
20
27
|
return withVoxelizeSession({
|
|
21
28
|
context, environment, token, log, subject: `"${name}"`, retryHint,
|
|
22
29
|
}, async ({ host, port }) => {
|
|
23
|
-
log(`
|
|
24
|
-
|
|
25
|
-
|
|
30
|
+
log(`Baking "${name}" at ${voxel.minVoxelSize}m…`);
|
|
31
|
+
// No `fitBox` on either branch: there is no placed instance to fit. `placeholder: false`
|
|
32
|
+
// because this is a finished asset, never a World-Forger stand-in awaiting regeneration.
|
|
33
|
+
const common = {
|
|
26
34
|
requestId: `${requestPrefix}-${assetId}-${port}`,
|
|
27
35
|
name,
|
|
28
|
-
glbUrl,
|
|
29
36
|
assetId,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
...
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
};
|
|
38
|
+
const request_ = source.kind === 'glb'
|
|
39
|
+
? {
|
|
40
|
+
...common,
|
|
41
|
+
type: 'CREATE_ASSET_FROM_GLB_URL',
|
|
42
|
+
glbUrl: source.glbUrl,
|
|
43
|
+
options: {
|
|
44
|
+
minVoxelSize: voxel.minVoxelSize,
|
|
45
|
+
maxVoxelSize: voxel.maxVoxelSize,
|
|
46
|
+
...(voxel.targetHeight !== undefined ? { targetHeight: voxel.targetHeight } : {}),
|
|
47
|
+
fillInterior: voxel.fillInterior,
|
|
48
|
+
placeholder: false,
|
|
49
|
+
},
|
|
50
|
+
}
|
|
51
|
+
: {
|
|
52
|
+
...common,
|
|
53
|
+
type: 'CREATE_ASSET_FROM_VXL_MASTER',
|
|
54
|
+
masterUrl: source.masterUrl,
|
|
55
|
+
// No `fillInterior`: a master already carries its own occupancy, which is the thing that
|
|
56
|
+
// flag exists to infer from a mesh's surface.
|
|
57
|
+
options: {
|
|
58
|
+
minVoxelSize: voxel.minVoxelSize,
|
|
59
|
+
maxVoxelSize: voxel.maxVoxelSize,
|
|
60
|
+
...(voxel.targetHeight !== undefined ? { targetHeight: voxel.targetHeight } : {}),
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
const result = await host.transport.sendAndWait(request_, 'ASSET_FROM_GLB_URL_RESULT', VOXELIZE_TIMEOUT_MS, { maxRetries: 1 });
|
|
40
64
|
if (!result) {
|
|
41
|
-
throw new CliError(`
|
|
65
|
+
throw new CliError(`Baking "${name}" timed out. ${retryHint}`);
|
|
42
66
|
}
|
|
43
67
|
if (result.success === false || !isJsonObject(result.asset)) {
|
|
44
68
|
const reason = typeof result.error === 'string' ? result.error : 'unknown error';
|
|
45
|
-
throw new CliError(`
|
|
69
|
+
throw new CliError(`Baking "${name}" failed: ${reason}. ${retryHint}`);
|
|
46
70
|
}
|
|
47
71
|
return result.asset;
|
|
48
72
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voxelize-glb.js","sourceRoot":"","sources":["../../src/assets/voxelize-glb.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"voxelize-glb.js","sourceRoot":"","sources":["../../src/assets/voxelize-glb.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -53,12 +53,6 @@ const realRunDeps = {
|
|
|
53
53
|
refreshMessages: refreshUnreadMessages,
|
|
54
54
|
now: Date.now,
|
|
55
55
|
};
|
|
56
|
-
/**
|
|
57
|
-
* The name the wrapper reports for `command`, when the caller did not give one: its own
|
|
58
|
-
* `meta.name`, or `unknown` for a command that has none. Every entry in `rawCommands` is named
|
|
59
|
-
* from the map key instead (and its subcommands as `parent sub`), so this only decides for a
|
|
60
|
-
* command wrapped on its own — which, in practice, means a test's.
|
|
61
|
-
*/
|
|
62
56
|
/**
|
|
63
57
|
* The `--env` this command will actually honour, or undefined.
|
|
64
58
|
*
|
|
@@ -77,6 +71,12 @@ function declaredExplicitEnv(command, args) {
|
|
|
77
71
|
const value = args?.env;
|
|
78
72
|
return typeof value === 'string' ? value : undefined;
|
|
79
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* The name the wrapper reports for `command`, when the caller did not give one: its own
|
|
76
|
+
* `meta.name`, or `unknown` for a command that has none. Every entry in `rawCommands` is named
|
|
77
|
+
* from the map key instead (and its subcommands as `parent sub`), so this only decides for a
|
|
78
|
+
* command wrapped on its own — which, in practice, means a test's.
|
|
79
|
+
*/
|
|
80
80
|
function commandNameOf(command) {
|
|
81
81
|
// citty's `meta` is a Resolvable (a value, a promise, or a function returning either); every
|
|
82
82
|
// meta in this CLI is a plain object, and a test double that is not simply reports `unknown`.
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAA0B,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAsB,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,6FAA6F;AAC7F,2FAA2F;AAC3F,+FAA+F;AAC/F,gGAAgG;AAChG,8FAA8F;AAC9F,4EAA4E;AAE5E,gGAAgG;AAChG,+FAA+F;AAC/F,iFAAiF;AACjF,MAAM,WAAW,GAAG,IAAI,OAAO,EAAU,CAAC;AAE1C;;;;;GAKG;AACH,SAAS,aAAa,CACpB,OAAsB;IAEtB,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IACjC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACxD,OAAO,IAA2C,CAAC;AACrD,CAAC;AAeD,MAAM,WAAW,GAAmB;IAClC,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,kBAAkB;IAC1B,eAAe,EAAE,qBAAqB;IACtC,GAAG,EAAE,IAAI,CAAC,GAAG;CACd,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type CommandRunDeps } from './run-deps.js';
|
|
2
|
+
import type { Environment } from '../config/environments.js';
|
|
2
3
|
import { type GenerationOutcome } from '../generate/stream.js';
|
|
3
4
|
import { type PropVoxelizeResult } from '../generate/prop.js';
|
|
4
5
|
import { type VehicleInstallResult } from '../generate/vehicle.js';
|
|
@@ -103,11 +104,22 @@ export declare function runAssetGeneration(type: string, label: string, body: Re
|
|
|
103
104
|
* that longer flow — and validates the target asset BEFORE the paid generation, so a mistyped id
|
|
104
105
|
* or an asset with no `fitBox` costs nothing.
|
|
105
106
|
*/
|
|
107
|
+
/**
|
|
108
|
+
* Refuses `--direct-voxels` outside `dev`, rather than ignoring it.
|
|
109
|
+
*
|
|
110
|
+
* The flag asks for a materially different asset — voxels tapped straight from the generator
|
|
111
|
+
* instead of a voxelized mesh — so quietly producing the other thing would be the wrong answer to
|
|
112
|
+
* a question the creator asked explicitly. Everywhere but dev, api-server does not expose the
|
|
113
|
+
* generator at all.
|
|
114
|
+
*/
|
|
115
|
+
export declare function assertDirectVoxelsAllowed(environment: Environment, directVoxels: boolean): void;
|
|
106
116
|
export declare function runPropGeneration(options: {
|
|
107
117
|
assetId: string;
|
|
108
118
|
prompt: string;
|
|
109
119
|
/** Skip the paid generation and voxelize this mesh instead — how a failed run is retried. */
|
|
110
120
|
glbUrl?: string;
|
|
121
|
+
/** `--direct-voxels`: ask for voxels rather than a mesh. Dev only. */
|
|
122
|
+
directVoxels?: boolean;
|
|
111
123
|
json: boolean;
|
|
112
124
|
deps?: GenerateRunDeps;
|
|
113
125
|
}): Promise<PropVoxelizeResult>;
|
|
@@ -149,6 +161,8 @@ export declare function runModelGeneration(options: {
|
|
|
149
161
|
fillInterior: boolean;
|
|
150
162
|
/** Skip the paid generation and voxelize this mesh instead — how a failed run is retried. */
|
|
151
163
|
glbUrl?: string;
|
|
164
|
+
/** `--direct-voxels`: ask for voxels rather than a mesh. Dev only. */
|
|
165
|
+
directVoxels?: boolean;
|
|
152
166
|
json: boolean;
|
|
153
167
|
deps?: GenerateRunDeps;
|
|
154
168
|
}): Promise<GenerateModelResult>;
|
|
@@ -3,6 +3,9 @@ import { authoredClipSpecSchema, formatSpecIssues, GAIT_PRESET_NAMES } from '@bi
|
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import * as path from 'path';
|
|
5
5
|
import { CliError, errnoCode } from '../errors.js';
|
|
6
|
+
// citty hands every non-boolean flag back as a string, always — so every numeric flag below is
|
|
7
|
+
// declared `type: 'string'` and goes through this one parser. See number-flag.ts for why it is
|
|
8
|
+
// shared rather than re-implemented per command.
|
|
6
9
|
import { parseNumberFlag } from './number-flag.js';
|
|
7
10
|
import { createOutput } from '../output.js';
|
|
8
11
|
import { commandRunDeps, decoratedError } from './run-deps.js';
|
|
@@ -18,15 +21,6 @@ import { generateAndInstallVehicle } from '../generate/vehicle.js';
|
|
|
18
21
|
import { generateAndInstallModel } from '../generate/model.js';
|
|
19
22
|
import { DEFAULT_MAX_VOXEL_SIZE, DEFAULT_MIN_VOXEL_SIZE, SOLID_FILL_MAX_HEIGHT_M } from './assets.js';
|
|
20
23
|
// ============================================================================
|
|
21
|
-
// Numeric flag parsing
|
|
22
|
-
//
|
|
23
|
-
// citty hands every non-boolean flag to us as a string, always. A previous command in this
|
|
24
|
-
// package (verify.ts's --timeout) shipped a bug where an unparseable value silently became NaN
|
|
25
|
-
// and produced a false failure that pointed nowhere near the real cause. Every numeric flag below
|
|
26
|
-
// goes through this one function so a typo is rejected up front, naming the flag, instead of
|
|
27
|
-
// reaching the server as `null`/`NaN` or (worse) as the literal string.
|
|
28
|
-
// ============================================================================
|
|
29
|
-
// ============================================================================
|
|
30
24
|
// Body builders
|
|
31
25
|
//
|
|
32
26
|
// Each of these maps parsed CLI flags onto exactly the field names its generator's zod schema
|
|
@@ -355,11 +349,26 @@ export async function runAssetGeneration(type, label, body, json = false, deps)
|
|
|
355
349
|
* that longer flow — and validates the target asset BEFORE the paid generation, so a mistyped id
|
|
356
350
|
* or an asset with no `fitBox` costs nothing.
|
|
357
351
|
*/
|
|
352
|
+
/**
|
|
353
|
+
* Refuses `--direct-voxels` outside `dev`, rather than ignoring it.
|
|
354
|
+
*
|
|
355
|
+
* The flag asks for a materially different asset — voxels tapped straight from the generator
|
|
356
|
+
* instead of a voxelized mesh — so quietly producing the other thing would be the wrong answer to
|
|
357
|
+
* a question the creator asked explicitly. Everywhere but dev, api-server does not expose the
|
|
358
|
+
* generator at all.
|
|
359
|
+
*/
|
|
360
|
+
export function assertDirectVoxelsAllowed(environment, directVoxels) {
|
|
361
|
+
if (!directVoxels || environment.name === 'dev')
|
|
362
|
+
return;
|
|
363
|
+
throw new CliError(`--direct-voxels is only available in the dev environment (this project is on "${environment.name}"). `
|
|
364
|
+
+ 'Omit it to generate through the mesh path.');
|
|
365
|
+
}
|
|
358
366
|
export async function runPropGeneration(options) {
|
|
359
367
|
const output = createOutput(options.json);
|
|
360
368
|
const runDeps = options.deps ?? defaultDeps(options.json);
|
|
361
369
|
const context = loadProjectContext(runDeps.startDir);
|
|
362
370
|
const environment = resolveEnvironmentForCommand({ cwd: context.root, baseDir: runDeps.baseDir });
|
|
371
|
+
assertDirectVoxelsAllowed(environment, options.directVoxels === true);
|
|
363
372
|
const token = await getAccessToken(environment, resolveAuth0ClientId(environment), { fetch: runDeps.fetch, sleep: runDeps.sleep, now: runDeps.now }, runDeps.baseDir);
|
|
364
373
|
const result = await withJobRecord({
|
|
365
374
|
root: context.root,
|
|
@@ -378,6 +387,7 @@ export async function runPropGeneration(options) {
|
|
|
378
387
|
assetId: options.assetId,
|
|
379
388
|
prompt: options.prompt,
|
|
380
389
|
...(options.glbUrl ? { glbUrl: options.glbUrl } : {}),
|
|
390
|
+
...(options.directVoxels === true ? { directVoxels: true } : {}),
|
|
381
391
|
fetchImpl: runDeps.fetch,
|
|
382
392
|
log,
|
|
383
393
|
});
|
|
@@ -471,6 +481,7 @@ export async function runModelGeneration(options) {
|
|
|
471
481
|
const runDeps = options.deps ?? defaultDeps(options.json);
|
|
472
482
|
const context = loadProjectContext(runDeps.startDir);
|
|
473
483
|
const environment = resolveEnvironmentForCommand({ cwd: context.root, baseDir: runDeps.baseDir });
|
|
484
|
+
assertDirectVoxelsAllowed(environment, options.directVoxels === true);
|
|
474
485
|
const token = await getAccessToken(environment, resolveAuth0ClientId(environment), { fetch: runDeps.fetch, sleep: runDeps.sleep, now: runDeps.now }, runDeps.baseDir);
|
|
475
486
|
const result = await withJobRecord({
|
|
476
487
|
root: context.root,
|
|
@@ -488,6 +499,7 @@ export async function runModelGeneration(options) {
|
|
|
488
499
|
...(options.name !== undefined ? { name: options.name } : {}),
|
|
489
500
|
...(options.assetId !== undefined ? { assetId: options.assetId } : {}),
|
|
490
501
|
...(options.glbUrl !== undefined ? { glbUrl: options.glbUrl } : {}),
|
|
502
|
+
...(options.directVoxels === true ? { directVoxels: true } : {}),
|
|
491
503
|
voxel: {
|
|
492
504
|
minVoxelSize: options.minVoxelSize,
|
|
493
505
|
maxVoxelSize: options.maxVoxelSize,
|
|
@@ -506,8 +518,8 @@ export async function runModelGeneration(options) {
|
|
|
506
518
|
runDeps.log(`Added "${result.assetName}" (id ${result.assetId})`
|
|
507
519
|
+ `${result.voxelCount !== undefined ? `, ${result.voxelCount} voxels` : ''}. Place it from game `
|
|
508
520
|
+ 'code, or drag it in from the dev view\'s Add-object palette.');
|
|
509
|
-
// `result` carries
|
|
510
|
-
// JSON document rather than only in the error text.
|
|
521
|
+
// `result` carries whichever source was paid for — glbUrl or masterUrl — so a retry after a
|
|
522
|
+
// later failure can find it in the JSON document rather than only in the error text.
|
|
511
523
|
output.result({ ok: true, kind: 'model', ...result });
|
|
512
524
|
runDeps.log('A running `bitmagic dev` reloads the browser by itself to show it.');
|
|
513
525
|
return result;
|
|
@@ -520,6 +532,23 @@ export async function runModelGeneration(options) {
|
|
|
520
532
|
// agent's actual discovery mechanism for what it can ask for — prints exactly the flag spelling
|
|
521
533
|
// documented for this command, instead of the camelCase form citty would show by default.
|
|
522
534
|
// Reading them back out of `args` below therefore uses the same kebab-case bracket key.
|
|
535
|
+
/**
|
|
536
|
+
* The two flags several subcommands share, declared once — the same shape `assets.ts` and
|
|
537
|
+
* `levels.ts` already use for their own `JSON_FLAG`.
|
|
538
|
+
*
|
|
539
|
+
* `--help` is an agent's discovery mechanism, so the wording is part of the interface: restated
|
|
540
|
+
* once per subcommand it drifts, and two subcommands describing the same flag differently read as
|
|
541
|
+
* two different flags. `as const` preserves the literal `type`, which is what citty infers
|
|
542
|
+
* `args.json`'s boolean and `args['reference-image-url']`'s string from.
|
|
543
|
+
*/
|
|
544
|
+
const JSON_FLAG = {
|
|
545
|
+
type: 'boolean',
|
|
546
|
+
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
547
|
+
};
|
|
548
|
+
const REFERENCE_IMAGE_FLAG = {
|
|
549
|
+
type: 'string',
|
|
550
|
+
description: 'Style/composition reference image URL forwarded to the image model.',
|
|
551
|
+
};
|
|
523
552
|
const skyboxCommand = defineCommand({
|
|
524
553
|
meta: { name: 'skybox', description: 'Generate a 360° skybox and apply it to world.json.' },
|
|
525
554
|
args: {
|
|
@@ -528,14 +557,8 @@ const skyboxCommand = defineCommand({
|
|
|
528
557
|
required: true,
|
|
529
558
|
description: 'Description of the skybox environment.',
|
|
530
559
|
},
|
|
531
|
-
'reference-image-url':
|
|
532
|
-
|
|
533
|
-
description: 'Style/composition reference image URL forwarded to the image model.',
|
|
534
|
-
},
|
|
535
|
-
json: {
|
|
536
|
-
type: 'boolean',
|
|
537
|
-
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
538
|
-
},
|
|
560
|
+
'reference-image-url': REFERENCE_IMAGE_FLAG,
|
|
561
|
+
json: JSON_FLAG,
|
|
539
562
|
},
|
|
540
563
|
async run({ args }) {
|
|
541
564
|
const body = buildSkyboxBody({
|
|
@@ -557,14 +580,8 @@ const backgroundCommand = defineCommand({
|
|
|
557
580
|
required: true,
|
|
558
581
|
description: 'Description of the background scene.',
|
|
559
582
|
},
|
|
560
|
-
'reference-image-url':
|
|
561
|
-
|
|
562
|
-
description: 'Style/composition reference image URL forwarded to the image model.',
|
|
563
|
-
},
|
|
564
|
-
json: {
|
|
565
|
-
type: 'boolean',
|
|
566
|
-
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
567
|
-
},
|
|
583
|
+
'reference-image-url': REFERENCE_IMAGE_FLAG,
|
|
584
|
+
json: JSON_FLAG,
|
|
568
585
|
},
|
|
569
586
|
async run({ args }) {
|
|
570
587
|
const body = buildBackgroundBody({
|
|
@@ -595,14 +612,8 @@ const blockTypeCommand = defineCommand({
|
|
|
595
612
|
type: 'string',
|
|
596
613
|
description: 'Give the side faces their own texture from this description. Generates a second texture.',
|
|
597
614
|
},
|
|
598
|
-
'reference-image-url':
|
|
599
|
-
|
|
600
|
-
description: 'Style/composition reference image URL forwarded to the image model.',
|
|
601
|
-
},
|
|
602
|
-
json: {
|
|
603
|
-
type: 'boolean',
|
|
604
|
-
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
605
|
-
},
|
|
615
|
+
'reference-image-url': REFERENCE_IMAGE_FLAG,
|
|
616
|
+
json: JSON_FLAG,
|
|
606
617
|
},
|
|
607
618
|
async run({ args }) {
|
|
608
619
|
const body = buildBlockTypeBody({
|
|
@@ -635,10 +646,7 @@ const soundCommand = defineCommand({
|
|
|
635
646
|
type: 'boolean',
|
|
636
647
|
description: 'Ask upstream for a seamlessly loopable SFX.',
|
|
637
648
|
},
|
|
638
|
-
json:
|
|
639
|
-
type: 'boolean',
|
|
640
|
-
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
641
|
-
},
|
|
649
|
+
json: JSON_FLAG,
|
|
642
650
|
},
|
|
643
651
|
async run({ args }) {
|
|
644
652
|
const body = buildSoundBody({
|
|
@@ -673,14 +681,8 @@ const imageCommand = defineCommand({
|
|
|
673
681
|
type: 'string',
|
|
674
682
|
description: 'Image height in pixels. Omit to use the generator default.',
|
|
675
683
|
},
|
|
676
|
-
'reference-image-url':
|
|
677
|
-
|
|
678
|
-
description: 'Style/composition reference image URL forwarded to the image model.',
|
|
679
|
-
},
|
|
680
|
-
json: {
|
|
681
|
-
type: 'boolean',
|
|
682
|
-
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
683
|
-
},
|
|
684
|
+
'reference-image-url': REFERENCE_IMAGE_FLAG,
|
|
685
|
+
json: JSON_FLAG,
|
|
684
686
|
},
|
|
685
687
|
async run({ args }) {
|
|
686
688
|
const body = buildImageBody({
|
|
@@ -714,10 +716,7 @@ const characterCommand = defineCommand({
|
|
|
714
716
|
type: 'string',
|
|
715
717
|
description: 'Head size as a percentage of normal, 50-300. Omit to use the generator default.',
|
|
716
718
|
},
|
|
717
|
-
json:
|
|
718
|
-
type: 'boolean',
|
|
719
|
-
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
720
|
-
},
|
|
719
|
+
json: JSON_FLAG,
|
|
721
720
|
},
|
|
722
721
|
async run({ args }) {
|
|
723
722
|
const body = buildCharacterBody({
|
|
@@ -776,10 +775,7 @@ const animationCommand = defineCommand({
|
|
|
776
775
|
type: 'string',
|
|
777
776
|
description: 'Pre-minted asset_… id to store the clip under, so code already referencing that id resolves.',
|
|
778
777
|
},
|
|
779
|
-
json:
|
|
780
|
-
type: 'boolean',
|
|
781
|
-
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
782
|
-
},
|
|
778
|
+
json: JSON_FLAG,
|
|
783
779
|
},
|
|
784
780
|
async run({ args }) {
|
|
785
781
|
const body = buildAnimationBody({
|
|
@@ -817,16 +813,19 @@ const propCommand = defineCommand({
|
|
|
817
813
|
type: 'string',
|
|
818
814
|
description: 'Voxelize this existing mesh instead of generating one — how to retry for free.',
|
|
819
815
|
},
|
|
820
|
-
|
|
816
|
+
'direct-voxels': {
|
|
821
817
|
type: 'boolean',
|
|
822
|
-
description: '
|
|
818
|
+
description: 'Dev only. Generate voxels directly instead of a mesh the bake then discards — '
|
|
819
|
+
+ 'smaller and faster, but newer. Falls back to the mesh path if it is unavailable.',
|
|
823
820
|
},
|
|
821
|
+
json: JSON_FLAG,
|
|
824
822
|
},
|
|
825
823
|
async run({ args }) {
|
|
826
824
|
await runPropGeneration({
|
|
827
825
|
assetId: args.asset,
|
|
828
826
|
prompt: args.prompt,
|
|
829
827
|
...(args['glb-url'] ? { glbUrl: args['glb-url'] } : {}),
|
|
828
|
+
...(args['direct-voxels'] === true ? { directVoxels: true } : {}),
|
|
830
829
|
json: args.json === true,
|
|
831
830
|
});
|
|
832
831
|
},
|
|
@@ -857,10 +856,7 @@ const vehicleCommand = defineCommand({
|
|
|
857
856
|
type: 'string',
|
|
858
857
|
description: 'Bake resolution, only with --glb-url. The failed run prints the exact value to use.',
|
|
859
858
|
},
|
|
860
|
-
json:
|
|
861
|
-
type: 'boolean',
|
|
862
|
-
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
863
|
-
},
|
|
859
|
+
json: JSON_FLAG,
|
|
864
860
|
},
|
|
865
861
|
async run({ args }) {
|
|
866
862
|
const minVoxelSize = parseNumberFlag('voxel-size', args['voxel-size'], { min: 0.01, max: 1 });
|
|
@@ -917,10 +913,12 @@ const modelCommand = defineCommand({
|
|
|
917
913
|
type: 'string',
|
|
918
914
|
description: 'Voxelize this existing mesh instead of generating one — how to retry for free.',
|
|
919
915
|
},
|
|
920
|
-
|
|
916
|
+
'direct-voxels': {
|
|
921
917
|
type: 'boolean',
|
|
922
|
-
description: '
|
|
918
|
+
description: 'Dev only. Generate voxels directly instead of a mesh the bake then discards — '
|
|
919
|
+
+ 'smaller and faster, but newer. Falls back to the mesh path if it is unavailable.',
|
|
923
920
|
},
|
|
921
|
+
json: JSON_FLAG,
|
|
924
922
|
},
|
|
925
923
|
async run({ args }) {
|
|
926
924
|
const minVoxelSize = parseNumberFlag('voxel-size', args['voxel-size'], { min: 0.01, max: 1 })
|
|
@@ -946,6 +944,7 @@ const modelCommand = defineCommand({
|
|
|
946
944
|
fillInterior: args.solid === true
|
|
947
945
|
|| (args.hollow !== true && (targetHeight === undefined || targetHeight <= SOLID_FILL_MAX_HEIGHT_M)),
|
|
948
946
|
...(args['glb-url'] !== undefined ? { glbUrl: args['glb-url'] } : {}),
|
|
947
|
+
...(args['direct-voxels'] === true ? { directVoxels: true } : {}),
|
|
949
948
|
json: args.json === true,
|
|
950
949
|
});
|
|
951
950
|
},
|