@bitmagic/cli 0.1.52-dev.4 → 0.1.52-dev.6
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 +52 -5
- package/dist/assets/add.d.ts +1 -27
- package/dist/assets/add.js +5 -52
- package/dist/assets/add.js.map +1 -1
- package/dist/assets/voxelize-glb.d.ts +37 -0
- package/dist/assets/voxelize-glb.js +65 -0
- package/dist/assets/voxelize-glb.js.map +1 -0
- package/dist/commands/assets.d.ts +2 -1
- package/dist/commands/assets.js +1 -25
- package/dist/commands/assets.js.map +1 -1
- package/dist/commands/generate.d.ts +26 -0
- package/dist/commands/generate.js +144 -18
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/number-flag.d.ts +7 -0
- package/dist/commands/number-flag.js +38 -0
- package/dist/commands/number-flag.js.map +1 -0
- package/dist/editor/journal.d.ts +31 -0
- package/dist/editor/journal.js +42 -0
- package/dist/editor/journal.js.map +1 -1
- package/dist/editor/server.js +196 -4
- package/dist/editor/server.js.map +1 -1
- package/dist/editor/shell-page.js +127 -27
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/editor/voxel-save.d.ts +47 -0
- package/dist/editor/voxel-save.js +53 -0
- package/dist/editor/voxel-save.js.map +1 -0
- package/dist/generate/model.d.ts +36 -0
- package/dist/generate/model.js +90 -0
- package/dist/generate/model.js.map +1 -0
- package/dist/project/jobs.d.ts +1 -1
- package/dist/scaffold/project-files.js +17 -11
- package/dist/scaffold/project-files.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -190,7 +190,7 @@ browser reloads itself on every change and the assets panel shows each generatio
|
|
|
190
190
|
| `bitmagic build` | Bundle the game into one self-contained `.bitmagic/build/index.html`. Rarely needs to be run by hand — `publish` builds automatically when the project changed. |
|
|
191
191
|
| `bitmagic publish [--visibility public\|private] [--name <name>] [--description <desc>] [--force]` | Verify-gate, build if needed, and upload straight to GCS. **Private unless `--visibility public` is passed.** |
|
|
192
192
|
| `bitmagic upgrade [--engine <version>] [--force]` | Refresh vendored platform files and the CLI's own skills to the currently published engine. Refuses a dirty git tree unless `--force`. Also records the project's `environment` in `bitmagic.json` if it has none yet — the engine it just vendored came from that api-server — and says so when it does. |
|
|
193
|
-
| `bitmagic generate <skybox\|sound\|image\|character\|animation\|prop\|vehicle> ...` | Generate one asset directly into `src/work/world.json`. Costs sparks. `prop` upgrades an existing placeholder
|
|
193
|
+
| `bitmagic generate <skybox\|sound\|image\|character\|animation\|model\|prop\|vehicle> ...` | Generate one asset directly into `src/work/world.json`. Costs sparks. `model` mints a **new** 3D object from a prompt, `prop` upgrades an existing placeholder **in place**, `vehicle` adds a new drivable one, `animation` takes a parameter spec rather than a prompt — see below. |
|
|
194
194
|
| `bitmagic assets add <file> [--name <n>] [--asset-id <id>] [--keep-glb] [--voxel-size <m>] [--max-voxel-size <m>] [--height <m>] [--hollow\|--solid] [--force]` | Upload **your own** file — `.glb`, `.vxl`, `.png/.jpg/.webp`, `.opus/.ogg/.m4a/.mp3`, `.json` — into the game's assets and write its entry into `src/work/world.json`. A `.glb` is voxelized in a headless browser (Chrome + a free port in 3000–3199, like `prop`) unless `--keep-glb`. Free — no sparks. See **Adding your own assets** below. |
|
|
195
195
|
| `bitmagic assets list` | The assets in `world.json`: id, name, type, size, placed instances, and total references. Local, no network. |
|
|
196
196
|
| `bitmagic assets remove <assetId> [--force]` | Remove an asset from `world.json` (the uploaded file stays in storage). Refuses while anything in `world.json` still references it; `--force` removes the asset and its placed instances together. |
|
|
@@ -470,9 +470,15 @@ did without inferring it from a diff:
|
|
|
470
470
|
|
|
471
471
|
```
|
|
472
472
|
{"at":"…","event":"object.moved","objectId":"inst_…","position":{"from":{…},"to":{…}}}
|
|
473
|
+
{"at":"…","event":"terrain.saved","voxelUrl":"https://…/game-terrain-….vxl"}
|
|
473
474
|
{"at":"…","event":"hq.requested","assetId":"asset_…","prompt":"a mossy stone arch","command":"bitmagic generate prop …"}
|
|
474
475
|
```
|
|
475
476
|
|
|
477
|
+
Most lines are worked out by comparing `world.json` before and after a save. The sculpting ones are
|
|
478
|
+
not: a terrain save changes one URL that says nothing about what was carved, and a save that
|
|
479
|
+
**failed** changes no file at all — so the editor reports those itself rather than leaving your
|
|
480
|
+
agent to infer a thing that left no trace.
|
|
481
|
+
|
|
476
482
|
### Regenerating a placeholder
|
|
477
483
|
|
|
478
484
|
Forged levels are built from placeholder assets — box-model stand-ins. Select one and the object
|
|
@@ -496,10 +502,18 @@ carries the URL: retry with `--glb-url <url>` and you are not charged again.
|
|
|
496
502
|
Both ports must fall between 3000 and 3199. That is the window the asset CDN allows as an origin;
|
|
497
503
|
outside it the game loads with no terrain and no error.
|
|
498
504
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
505
|
+
### Sculpting the ground
|
|
506
|
+
|
|
507
|
+
Click the ground and you are in the engine's terrain tools; **Save & Exit** in their toolbar keeps
|
|
508
|
+
the work. The sculpted volume is uploaded and `src/work/world.json` gets the one line that points at
|
|
509
|
+
it, the same surgical write every other edit here makes.
|
|
510
|
+
|
|
511
|
+
That upload is the only part of `bitmagic dev` that needs an account — everything else runs offline.
|
|
512
|
+
Logged out, the save fails and **says so in the toolbar, leaving your edits where they are**: run
|
|
513
|
+
`bitmagic login`, then press Save & Exit again. Nothing is thrown away without you saying so, and
|
|
514
|
+
`terrain.saveFailed` lands in the journal either way, so your agent knows what happened.
|
|
515
|
+
|
|
516
|
+
Per-object voxel sculpting works the same way — select a voxel object, edit it, Save & Exit.
|
|
503
517
|
|
|
504
518
|
## Adding your own assets
|
|
505
519
|
|
|
@@ -561,6 +575,39 @@ code that names the id (`engine.playSound(...)`, `spawnFromAsset(...)`) is not c
|
|
|
561
575
|
is a lookup by *name* — `loadJsonAsset` resolves the first asset with a matching name, so `add`
|
|
562
576
|
warns when a name is already taken.
|
|
563
577
|
|
|
578
|
+
## Generating a 3D model
|
|
579
|
+
|
|
580
|
+
`bitmagic generate model` turns a sentence into a new placeable asset: the Asset Forger builds a
|
|
581
|
+
mesh, the engine voxelizes it, and the result lands in `assets[]` under a fresh id.
|
|
582
|
+
|
|
583
|
+
```bash
|
|
584
|
+
bitmagic generate model --prompt "a mossy stone arch"
|
|
585
|
+
bitmagic generate model --prompt "a market stall" --name marketStall --height 3
|
|
586
|
+
bitmagic generate model --prompt "a cathedral" --height 30 # hollow above 6 m, automatically
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
Place it from game code by name, or drag it in from the dev view's Add-object palette.
|
|
590
|
+
|
|
591
|
+
**Which of the three 3D lanes you want** matters, because picking wrong wastes a generation:
|
|
592
|
+
|
|
593
|
+
| Command | Makes | Existing instances |
|
|
594
|
+
|---|---|---|
|
|
595
|
+
| `generate model --prompt "..."` | a **new** asset from a prompt | none yet — nothing is placed |
|
|
596
|
+
| `generate prop --asset <id> --prompt "..."` | replaces the mesh of an **existing** placeholder | **all of them upgrade at once** |
|
|
597
|
+
| `assets add <file>` | a new asset from a file you already have | none yet |
|
|
598
|
+
|
|
599
|
+
Like `prop` and `vehicle` it needs Chrome and a free port between 3000 and 3199 — only the engine
|
|
600
|
+
can voxelize, so the CLI drives its own headless browser. `--voxel-size` (default 0.1 m) and
|
|
601
|
+
`--max-voxel-size` (default 0.5 m) set the bake resolution; `--height` scales the model, and
|
|
602
|
+
interiors fill solid at or below 6 m and stay hollow above it (`--hollow` / `--solid` override),
|
|
603
|
+
because a solid-filled building is millions of wasted voxels.
|
|
604
|
+
|
|
605
|
+
It costs the same sparks as generating the same object in the web editor — both bill the Asset
|
|
606
|
+
Forger call under one price, so the lane you choose never changes what a creator pays.
|
|
607
|
+
|
|
608
|
+
If the bake fails after the mesh exists, the error prints the exact
|
|
609
|
+
`--glb-url … --asset-id …` command to retry the browser step **without paying again**.
|
|
610
|
+
|
|
564
611
|
## Drivable vehicles
|
|
565
612
|
|
|
566
613
|
`bitmagic generate vehicle` designs a vehicle and registers it as a **new** asset — unlike
|
package/dist/assets/add.d.ts
CHANGED
|
@@ -1,26 +1,6 @@
|
|
|
1
1
|
import type { Environment } from '../config/environments.js';
|
|
2
2
|
import type { ProjectContext } from '../project/context.js';
|
|
3
|
-
|
|
4
|
-
minVoxelSize: number;
|
|
5
|
-
maxVoxelSize: number;
|
|
6
|
-
/** Metres. Absent = the GLB's own size, as the Creator's dialog leaves it by default. */
|
|
7
|
-
targetHeight?: number;
|
|
8
|
-
fillInterior: boolean;
|
|
9
|
-
}
|
|
10
|
-
/** What the headless engine is asked to bake. */
|
|
11
|
-
export interface VoxelizeGlbRequest {
|
|
12
|
-
context: ProjectContext;
|
|
13
|
-
environment: Environment;
|
|
14
|
-
token: string;
|
|
15
|
-
name: string;
|
|
16
|
-
glbUrl: string;
|
|
17
|
-
assetId: string;
|
|
18
|
-
voxel: VoxelizeFlags;
|
|
19
|
-
retryHint: string;
|
|
20
|
-
log: (message: string) => void;
|
|
21
|
-
}
|
|
22
|
-
/** Runs the bake and returns the engine's asset record. Injected in tests, real everywhere else. */
|
|
23
|
-
export type VoxelizeGlb = (request: VoxelizeGlbRequest) => Promise<Record<string, unknown>>;
|
|
3
|
+
import { type VoxelizeFlags, type VoxelizeGlb } from './voxelize-glb.js';
|
|
24
4
|
export interface AddAssetOptions {
|
|
25
5
|
context: ProjectContext;
|
|
26
6
|
environment: Environment;
|
|
@@ -57,10 +37,4 @@ export interface AddAssetResult {
|
|
|
57
37
|
* upload cannot be taken back.
|
|
58
38
|
*/
|
|
59
39
|
export declare const MAX_ASSET_BYTES: number;
|
|
60
|
-
/**
|
|
61
|
-
* The real bake: the shared headless session, one `CREATE_ASSET_FROM_GLB_URL`, the engine's record
|
|
62
|
-
* back. Same message and options as `generate prop`, minus `fitBox` (there is no placed instance
|
|
63
|
-
* to fit) and with the creator's own resolution flags.
|
|
64
|
-
*/
|
|
65
|
-
export declare const voxelizeUploadedGlb: VoxelizeGlb;
|
|
66
40
|
export declare function addAssetFile(options: AddAssetOptions): Promise<AddAssetResult>;
|
package/dist/assets/add.js
CHANGED
|
@@ -25,12 +25,12 @@ import * as fs from 'fs';
|
|
|
25
25
|
import { CliError } from '../errors.js';
|
|
26
26
|
import { applyModificationsToWorld } from '../forge/apply-modifications.js';
|
|
27
27
|
import { projectWorldJsonPath } from '../forge/run-pipeline.js';
|
|
28
|
-
import { VOXELIZE_TIMEOUT_MS, withVoxelizeSession } from '../forge/voxelize-session.js';
|
|
29
28
|
import { uploadProjectFile } from '../http/signed-upload.js';
|
|
30
29
|
import { isJsonObject, readWorldJson } from '../project/world-json.js';
|
|
31
30
|
import { audioAssetEntry, glbAssetEntry, imageAssetEntry, jsonAssetEntry, voxelizedGlbAssetEntry, vxlAssetEntry, } from './entry.js';
|
|
32
31
|
import { audioTranscodeNote, classifyAssetFile, defaultAssetName, mintAssetId, uploadFilename, validateAssetName, } from './file-kind.js';
|
|
33
32
|
import { findAssetReferences } from './remove.js';
|
|
33
|
+
import { assertEngineHonouredId, voxelizeGlbIntoAsset, } from './voxelize-glb.js';
|
|
34
34
|
import { summarizeVxl } from './vxl-summary.js';
|
|
35
35
|
import { formatSize } from './list.js';
|
|
36
36
|
function errnoCode(error) {
|
|
@@ -99,41 +99,6 @@ function requireVxlSummary(bytes, filename) {
|
|
|
99
99
|
}
|
|
100
100
|
return summary;
|
|
101
101
|
}
|
|
102
|
-
/**
|
|
103
|
-
* The real bake: the shared headless session, one `CREATE_ASSET_FROM_GLB_URL`, the engine's record
|
|
104
|
-
* back. Same message and options as `generate prop`, minus `fitBox` (there is no placed instance
|
|
105
|
-
* to fit) and with the creator's own resolution flags.
|
|
106
|
-
*/
|
|
107
|
-
export const voxelizeUploadedGlb = async (request) => {
|
|
108
|
-
const { context, environment, token, name, glbUrl, assetId, voxel, retryHint, log } = request;
|
|
109
|
-
return withVoxelizeSession({
|
|
110
|
-
context, environment, token, log, subject: `"${name}"`, retryHint,
|
|
111
|
-
}, async ({ host, port }) => {
|
|
112
|
-
log(`Voxelizing "${name}" at ${voxel.minVoxelSize}m…`);
|
|
113
|
-
const result = await host.transport.sendAndWait({
|
|
114
|
-
type: 'CREATE_ASSET_FROM_GLB_URL',
|
|
115
|
-
requestId: `upload-${assetId}-${port}`,
|
|
116
|
-
name,
|
|
117
|
-
glbUrl,
|
|
118
|
-
assetId,
|
|
119
|
-
options: {
|
|
120
|
-
minVoxelSize: voxel.minVoxelSize,
|
|
121
|
-
maxVoxelSize: voxel.maxVoxelSize,
|
|
122
|
-
...(voxel.targetHeight !== undefined ? { targetHeight: voxel.targetHeight } : {}),
|
|
123
|
-
fillInterior: voxel.fillInterior,
|
|
124
|
-
placeholder: false,
|
|
125
|
-
},
|
|
126
|
-
}, 'ASSET_FROM_GLB_URL_RESULT', VOXELIZE_TIMEOUT_MS, { maxRetries: 1 });
|
|
127
|
-
if (!result) {
|
|
128
|
-
throw new CliError(`Voxelizing "${name}" timed out. ${retryHint}`);
|
|
129
|
-
}
|
|
130
|
-
if (result.success === false || !isJsonObject(result.asset)) {
|
|
131
|
-
const reason = typeof result.error === 'string' ? result.error : 'unknown error';
|
|
132
|
-
throw new CliError(`Voxelizing "${name}" failed: ${reason}. ${retryHint}`);
|
|
133
|
-
}
|
|
134
|
-
return result.asset;
|
|
135
|
-
});
|
|
136
|
-
};
|
|
137
102
|
export async function addAssetFile(options) {
|
|
138
103
|
const { context, environment, token, filePath, log } = options;
|
|
139
104
|
const now = options.now ?? (() => new Date());
|
|
@@ -219,24 +184,12 @@ export async function addAssetFile(options) {
|
|
|
219
184
|
const retryHint = 'Nothing was charged and world.json is unchanged. Re-run with '
|
|
220
185
|
+ `\`--asset-id ${assetId}\` so the retry replaces this attempt instead of adding a second `
|
|
221
186
|
+ `asset (the GLB from this run is already uploaded at ${url}).`;
|
|
222
|
-
const voxelize = options.voxelize ??
|
|
187
|
+
const voxelize = options.voxelize ?? voxelizeGlbIntoAsset;
|
|
223
188
|
const engineAsset = await voxelize({
|
|
224
|
-
context, environment, token, name, glbUrl: url, assetId, voxel: options.voxel, retryHint,
|
|
189
|
+
context, environment, token, name, glbUrl: url, assetId, voxel: options.voxel, retryHint,
|
|
190
|
+
requestPrefix: 'upload', log,
|
|
225
191
|
});
|
|
226
|
-
|
|
227
|
-
// honour a supplied id for an asset that does not exist yet. An older one mints its own,
|
|
228
|
-
// and because `entry` spreads the engine's record while the upsert predicate matches OUR
|
|
229
|
-
// id, the mismatch would silently APPEND under a different id than the one reported: the
|
|
230
|
-
// command prints an id that is in no world.json entry, `assets remove` cannot find it, and
|
|
231
|
-
// a `--asset-id` retry adds a second copy instead of replacing. `generate vehicle` reads
|
|
232
|
-
// the id back for the same reason; this is the same check, made loud.
|
|
233
|
-
const engineId = typeof engineAsset.id === 'string' ? engineAsset.id : '';
|
|
234
|
-
if (engineId !== assetId) {
|
|
235
|
-
throw new CliError(`The engine registered "${name}" under id "${engineId || '(none)'}" instead of "${assetId}", so `
|
|
236
|
-
+ 'this CLI cannot write it reliably. The project\'s vendored engine is too old for '
|
|
237
|
-
+ '`bitmagic assets add` — run `bitmagic upgrade`, then retry. world.json is unchanged '
|
|
238
|
-
+ `(the GLB is already uploaded at ${url}).`);
|
|
239
|
-
}
|
|
192
|
+
assertEngineHonouredId(engineAsset, assetId, name, `the GLB is already uploaded at ${url}`);
|
|
240
193
|
entry = voxelizedGlbAssetEntry(engineAsset, base);
|
|
241
194
|
break;
|
|
242
195
|
}
|
package/dist/assets/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/assets/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/assets/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAmB,MAAM,0BAA0B,CAAC;AACxF,OAAO,EACL,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,EAAE,aAAa,GAEvG,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,GACxG,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,sBAAsB,EAAE,oBAAoB,GAC7C,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAiCvC,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK;QACnE,CAAC,CAAC,MAAM,CAAE,KAA2B,CAAC,IAAI,CAAC;QAC3C,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,iGAAiG;AACjG,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACtF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,SAAS,aAAa,CAAC,QAAgB;IACrC,6FAA6F;IAC7F,gGAAgG;IAChG,+FAA+F;IAC/F,kGAAkG;IAClG,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,QAAQ,CAAC,iBAAiB,QAAQ,4BAA4B,CAAC,CAAC;QACjG,MAAM,IAAI,QAAQ,CAAC,eAAe,QAAQ,KAAK,aAAa,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAChB,GAAG,QAAQ,qEAAqE;cAC9E,sDAAsD,CACzD,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,QAAQ,CAAC,GAAG,QAAQ,uDAAuD,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,QAAQ,qCAAqC,CAAC,CAAC;IAC3F,IAAI,KAAK,CAAC,IAAI,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,IAAI,QAAQ,CAChB,GAAG,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,oCAAoC;cAC1F,GAAG,eAAe,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,+BAA+B,CACpE,CAAC;IACJ,CAAC;IAED,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2FAA2F;QAC3F,+FAA+F;QAC/F,MAAM,IAAI,QAAQ,CAAC,eAAe,QAAQ,KAAK,aAAa,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC1E,CAAC;AAKD,SAAS,eAAe,CAAC,OAAmB;IAC1C,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAiB,EAAE,QAAgB;IAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAChB,GAAG,QAAQ,qFAAqF;cAC9F,qFAAqF,CACxF,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAwB;IACzD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAE9C,8CAA8C;IAC9C,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,EAAE,CAAC;IAEjD,uEAAuE;IACvE,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAsB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACtG,MAAM,QAAQ,GAAG,QAAQ,KAAK,SAAS,CAAC;IAExC,8FAA8F;IAC9F,8FAA8F;IAC9F,8FAA8F;IAC9F,8FAA8F;IAC9F,gFAAgF;IAChF,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,YAAY,KAAK,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,QAAQ,CAChB,UAAU,OAAO,UAAU,YAAY,eAAe,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,QAAQ,GAAG;kBACtH,sBAAsB,QAAQ,0BAA0B,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;kBAClG,GAAG,IAAI,CAAC,SAAS,+DAA+D;kBAChF,8FAA8F,CACjG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+FAA+F;IAC/F,+FAA+F;IAC/F,+FAA+F;IAC/F,wDAAwD;IACxD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACzG,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CACR,mCAAmC,IAAI,mDAAmD;cACxF,2FAA2F;cAC3F,oCAAoC,CACvC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;IAE9B,6FAA6F;IAC7F,iGAAiG;IACjG,oFAAoF;IACpF,MAAM,aAAa,GAA2B,IAAI,CAAC,IAAI,KAAK,KAAK;QAC/D,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,IAAI,CAAC;IAET,aAAa;IACb,GAAG,CAAC,aAAa,QAAQ,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,WAAW,EACX,KAAK,EACL,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,EACnF,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,EAAE,CACjD,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;IAExB,MAAM,IAAI,GAAsB,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAEhH,uFAAuF;IACvF,IAAI,KAA8B,CAAC;IACnC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM;QACR,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,IAAI,KAAK,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM;QACR,CAAC;QACD,KAAK,MAAM;YACT,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,KAAK;YACR,0EAA0E;YAC1E,KAAK,GAAG,aAAc,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,UAAU;YACb,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxD,MAAM;QACR,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,oFAAoF;YACpF,6FAA6F;YAC7F,6FAA6F;YAC7F,0EAA0E;YAC1E,MAAM,SAAS,GAAG,+DAA+D;kBAC7E,gBAAgB,OAAO,mEAAmE;kBAC1F,uDAAuD,GAAG,IAAI,CAAC;YACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,oBAAoB,CAAC;YAC1D,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC;gBACjC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS;gBACxF,aAAa,EAAE,QAAQ,EAAE,GAAG;aAC7B,CAAC,CAAC;YACH,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC,GAAG,EAAE,CAAC,CAAC;YAC5F,KAAK,GAAG,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAClD,MAAM;QACR,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,EAAE;IACF,+FAA+F;IAC/F,4FAA4F;IAC5F,4FAA4F;IAC5F,8FAA8F;IAC9F,4FAA4F;IAC5F,6FAA6F;IAC7F,mCAAmC;IACnC,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC;IACzE,MAAM,YAAY,GAA0B;QAC1C,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO;QACvE,KAAK;KACN,CAAC;IACF,yBAAyB,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAExF,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACjE,OAAO;QACL,OAAO;QACP,IAAI;QACJ,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;QAClE,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QACxD,GAAG,CAAC,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,GAAG,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Environment } from '../config/environments.js';
|
|
2
|
+
import type { ProjectContext } from '../project/context.js';
|
|
3
|
+
/** Bake resolution and scale. Defaults live with the commands, which document them to creators. */
|
|
4
|
+
export interface VoxelizeFlags {
|
|
5
|
+
minVoxelSize: number;
|
|
6
|
+
maxVoxelSize: number;
|
|
7
|
+
/** Metres. Absent = the GLB's own size, as the Creator's voxelize dialog leaves it by default. */
|
|
8
|
+
targetHeight?: number;
|
|
9
|
+
fillInterior: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface VoxelizeGlbRequest {
|
|
12
|
+
context: ProjectContext;
|
|
13
|
+
environment: Environment;
|
|
14
|
+
token: string;
|
|
15
|
+
/** Asset name; also what the engine builds its uploaded `.vxl` filename from. */
|
|
16
|
+
name: string;
|
|
17
|
+
glbUrl: string;
|
|
18
|
+
/** The id to register under. The engine echoes it back, and callers must check that it did. */
|
|
19
|
+
assetId: string;
|
|
20
|
+
voxel: VoxelizeFlags;
|
|
21
|
+
/** What the creator should do if this fails — what is kept, and the command that resumes it. */
|
|
22
|
+
retryHint: string;
|
|
23
|
+
/** Distinguishes concurrent requests in the page; also names the lane in the transport log. */
|
|
24
|
+
requestPrefix: string;
|
|
25
|
+
log: (message: string) => void;
|
|
26
|
+
}
|
|
27
|
+
/** Runs the bake and returns the engine's asset record. Injected in tests, real everywhere else. */
|
|
28
|
+
export type VoxelizeGlb = (request: VoxelizeGlbRequest) => Promise<Record<string, unknown>>;
|
|
29
|
+
export declare const voxelizeGlbIntoAsset: VoxelizeGlb;
|
|
30
|
+
/**
|
|
31
|
+
* The engine ECHOES the id it was given — but only since it learned to honour a supplied id for an
|
|
32
|
+
* asset that does not exist yet. An older vendored engine mints its own, and since the caller's
|
|
33
|
+
* upsert matches on the id it ASKED for, a mismatch would silently append under a different id
|
|
34
|
+
* than the one reported: the command prints an id absent from world.json, `assets remove` cannot
|
|
35
|
+
* find it, and a retry adds a second copy instead of replacing.
|
|
36
|
+
*/
|
|
37
|
+
export declare function assertEngineHonouredId(engineAsset: Record<string, unknown>, assetId: string, name: string, keptHint: string): void;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bake one GLB into a NEW voxel asset, in the project's own headless engine.
|
|
3
|
+
*
|
|
4
|
+
* Two lanes need exactly this and differ only in where the GLB came from:
|
|
5
|
+
*
|
|
6
|
+
* - `bitmagic assets add model.glb` uploads a file the creator already has;
|
|
7
|
+
* - `bitmagic generate model --prompt …` pays the Asset Forger for one.
|
|
8
|
+
*
|
|
9
|
+
* From the moment there is a URL the work is identical — fetch it in the engine, voxelize to the
|
|
10
|
+
* requested resolution, upload the `.vxl`, hand back the asset record — so it lives here once
|
|
11
|
+
* rather than in both. `generate prop` deliberately does NOT use this: it upgrades an EXISTING
|
|
12
|
+
* asset in place, constrained to that asset's recorded `fitBox`, which is a different operation
|
|
13
|
+
* with a different precondition (see generate/prop.ts).
|
|
14
|
+
*/
|
|
15
|
+
import { CliError } from '../errors.js';
|
|
16
|
+
import { VOXELIZE_TIMEOUT_MS, withVoxelizeSession } from '../forge/voxelize-session.js';
|
|
17
|
+
import { isJsonObject } from '../project/world-json.js';
|
|
18
|
+
export const voxelizeGlbIntoAsset = async (request) => {
|
|
19
|
+
const { context, environment, token, name, glbUrl, assetId, voxel, retryHint, requestPrefix, log } = request;
|
|
20
|
+
return withVoxelizeSession({
|
|
21
|
+
context, environment, token, log, subject: `"${name}"`, retryHint,
|
|
22
|
+
}, async ({ host, port }) => {
|
|
23
|
+
log(`Voxelizing "${name}" at ${voxel.minVoxelSize}m…`);
|
|
24
|
+
const result = await host.transport.sendAndWait({
|
|
25
|
+
type: 'CREATE_ASSET_FROM_GLB_URL',
|
|
26
|
+
requestId: `${requestPrefix}-${assetId}-${port}`,
|
|
27
|
+
name,
|
|
28
|
+
glbUrl,
|
|
29
|
+
assetId,
|
|
30
|
+
options: {
|
|
31
|
+
minVoxelSize: voxel.minVoxelSize,
|
|
32
|
+
maxVoxelSize: voxel.maxVoxelSize,
|
|
33
|
+
...(voxel.targetHeight !== undefined ? { targetHeight: voxel.targetHeight } : {}),
|
|
34
|
+
fillInterior: voxel.fillInterior,
|
|
35
|
+
// No `fitBox`: there is no placed instance to fit. `placeholder: false` because this is
|
|
36
|
+
// a finished asset, never a World-Forger stand-in awaiting regeneration.
|
|
37
|
+
placeholder: false,
|
|
38
|
+
},
|
|
39
|
+
}, 'ASSET_FROM_GLB_URL_RESULT', VOXELIZE_TIMEOUT_MS, { maxRetries: 1 });
|
|
40
|
+
if (!result) {
|
|
41
|
+
throw new CliError(`Voxelizing "${name}" timed out. ${retryHint}`);
|
|
42
|
+
}
|
|
43
|
+
if (result.success === false || !isJsonObject(result.asset)) {
|
|
44
|
+
const reason = typeof result.error === 'string' ? result.error : 'unknown error';
|
|
45
|
+
throw new CliError(`Voxelizing "${name}" failed: ${reason}. ${retryHint}`);
|
|
46
|
+
}
|
|
47
|
+
return result.asset;
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* The engine ECHOES the id it was given — but only since it learned to honour a supplied id for an
|
|
52
|
+
* asset that does not exist yet. An older vendored engine mints its own, and since the caller's
|
|
53
|
+
* upsert matches on the id it ASKED for, a mismatch would silently append under a different id
|
|
54
|
+
* than the one reported: the command prints an id absent from world.json, `assets remove` cannot
|
|
55
|
+
* find it, and a retry adds a second copy instead of replacing.
|
|
56
|
+
*/
|
|
57
|
+
export function assertEngineHonouredId(engineAsset, assetId, name, keptHint) {
|
|
58
|
+
const engineId = typeof engineAsset.id === 'string' ? engineAsset.id : '';
|
|
59
|
+
if (engineId === assetId)
|
|
60
|
+
return;
|
|
61
|
+
throw new CliError(`The engine registered "${name}" under id "${engineId || '(none)'}" instead of "${assetId}", so `
|
|
62
|
+
+ 'this CLI cannot write it reliably. The project\'s vendored engine is too old — run '
|
|
63
|
+
+ `\`bitmagic upgrade\`, then retry. world.json is unchanged (${keptHint}).`);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=voxelize-glb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voxelize-glb.js","sourceRoot":"","sources":["../../src/assets/voxelize-glb.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA+BxD,MAAM,CAAC,MAAM,oBAAoB,GAAgB,KAAK,EAAE,OAAO,EAAE,EAAE;IACjE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC7G,OAAO,mBAAmB,CAAC;QACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,IAAI,GAAG,EAAE,SAAS;KAClE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1B,GAAG,CAAC,eAAe,IAAI,QAAQ,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAC7C;YACE,IAAI,EAAE,2BAA2B;YACjC,SAAS,EAAE,GAAG,aAAa,IAAI,OAAO,IAAI,IAAI,EAAE;YAChD,IAAI;YACJ,MAAM;YACN,OAAO;YACP,OAAO,EAAE;gBACP,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjF,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,wFAAwF;gBACxF,yEAAyE;gBACzE,WAAW,EAAE,KAAK;aACnB;SACF,EACD,2BAA2B,EAC3B,mBAAmB,EACnB,EAAE,UAAU,EAAE,CAAC,EAAE,CAClB,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAAC,eAAe,IAAI,gBAAgB,SAAS,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;YACjF,MAAM,IAAI,QAAQ,CAAC,eAAe,IAAI,aAAa,MAAM,KAAK,SAAS,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAoC,EACpC,OAAe,EACf,IAAY,EACZ,QAAgB;IAEhB,MAAM,QAAQ,GAAG,OAAO,WAAW,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO;IACjC,MAAM,IAAI,QAAQ,CAChB,0BAA0B,IAAI,eAAe,QAAQ,IAAI,QAAQ,iBAAiB,OAAO,QAAQ;UAC/F,qFAAqF;UACrF,8DAA8D,QAAQ,IAAI,CAC7E,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type AddAssetResult
|
|
1
|
+
import { type AddAssetResult } from '../assets/add.js';
|
|
2
|
+
import type { VoxelizeGlb } from '../assets/voxelize-glb.js';
|
|
2
3
|
import { type AssetRow } from '../assets/list.js';
|
|
3
4
|
/** The Creator's voxelize-dialog defaults (assetsVoxelizeDialog.ts), so a plain `add` bakes the same way. */
|
|
4
5
|
export declare const DEFAULT_MIN_VOXEL_SIZE = 0.1;
|
package/dist/commands/assets.js
CHANGED
|
@@ -13,6 +13,7 @@ import { defineCommand } from 'citty';
|
|
|
13
13
|
import * as path from 'path';
|
|
14
14
|
import { CliError } from '../errors.js';
|
|
15
15
|
import { createOutput } from '../output.js';
|
|
16
|
+
import { parseNumberFlag } from './number-flag.js';
|
|
16
17
|
import { loadProjectContext } from '../project/context.js';
|
|
17
18
|
import { withJobRecord } from '../project/jobs.js';
|
|
18
19
|
import { readWorldJson } from '../project/world-json.js';
|
|
@@ -79,31 +80,6 @@ function readProject(runDeps) {
|
|
|
79
80
|
function unchanged(message) {
|
|
80
81
|
return message.includes('world.json is unchanged') ? message : `${message} world.json is unchanged.`;
|
|
81
82
|
}
|
|
82
|
-
/**
|
|
83
|
-
* A decimal number and nothing else. `Number()` alone accepts `0x10` (16), `0b11`, `1e300`, `' 5 '`
|
|
84
|
-
* and `''` (0), so `--height 0x10` used to silently scale a model to 16 metres. Every rejection
|
|
85
|
-
* carries the unchanged-world guarantee, since these run before anything is read or uploaded.
|
|
86
|
-
*/
|
|
87
|
-
const DECIMAL = /^-?\d+(\.\d+)?$/;
|
|
88
|
-
function parseNumberFlag(flagName, raw, options = {}) {
|
|
89
|
-
if (raw === undefined)
|
|
90
|
-
return undefined;
|
|
91
|
-
const trimmed = raw.trim();
|
|
92
|
-
if (!DECIMAL.test(trimmed)) {
|
|
93
|
-
throw new CliError(`--${flagName} must be a decimal number, got ${JSON.stringify(raw)}. world.json is unchanged.`);
|
|
94
|
-
}
|
|
95
|
-
const value = Number(trimmed);
|
|
96
|
-
if (!Number.isFinite(value)) {
|
|
97
|
-
throw new CliError(`--${flagName} must be a number, got ${JSON.stringify(raw)}. world.json is unchanged.`);
|
|
98
|
-
}
|
|
99
|
-
if (options.min !== undefined && value < options.min) {
|
|
100
|
-
throw new CliError(`--${flagName} must be at least ${options.min}, got ${value}. world.json is unchanged.`);
|
|
101
|
-
}
|
|
102
|
-
if (options.max !== undefined && value > options.max) {
|
|
103
|
-
throw new CliError(`--${flagName} must be at most ${options.max}, got ${value}. world.json is unchanged.`);
|
|
104
|
-
}
|
|
105
|
-
return value;
|
|
106
|
-
}
|
|
107
83
|
export async function runAssetsAdd(options) {
|
|
108
84
|
const output = createOutput(options.json);
|
|
109
85
|
const runDeps = options.deps ?? defaultDeps(options.json);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/commands/assets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/commands/assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type GenerationOutcome } from '../generate/stream.js';
|
|
2
2
|
import { type PropVoxelizeResult } from '../generate/prop.js';
|
|
3
3
|
import { type VehicleInstallResult } from '../generate/vehicle.js';
|
|
4
|
+
import { type GenerateModelResult } from '../generate/model.js';
|
|
5
|
+
import type { VoxelizeGlb } from '../assets/voxelize-glb.js';
|
|
4
6
|
export interface SkyboxArgs {
|
|
5
7
|
description: string;
|
|
6
8
|
referenceImageUrl?: string;
|
|
@@ -62,6 +64,8 @@ export interface GenerateRunDeps {
|
|
|
62
64
|
startDir?: string;
|
|
63
65
|
/** Test-only override; production omits it and getAccessToken/readDefaultEnvironment read ~/.bitmagic. */
|
|
64
66
|
baseDir?: string;
|
|
67
|
+
/** Test-only override for the headless bake, so the model lane runs without Chrome. */
|
|
68
|
+
voxelize?: VoxelizeGlb;
|
|
65
69
|
log: (message: string) => void;
|
|
66
70
|
}
|
|
67
71
|
/**
|
|
@@ -120,4 +124,26 @@ export declare function runVehicleGeneration(options: {
|
|
|
120
124
|
json: boolean;
|
|
121
125
|
deps?: GenerateRunDeps;
|
|
122
126
|
}): Promise<VehicleInstallResult>;
|
|
127
|
+
/**
|
|
128
|
+
* `generate model` mints a NEW asset from a prompt. Like prop and vehicle it cannot go through
|
|
129
|
+
* {@link runAssetGeneration} — the generator returns a mesh, not patches, so nothing can be applied
|
|
130
|
+
* until the CLI has voxelized it in a browser.
|
|
131
|
+
*
|
|
132
|
+
* Unlike prop there is no existing asset to validate against, which is the whole point: prop
|
|
133
|
+
* refuses without a `fitBox` because every placed instance was positioned against one, while this
|
|
134
|
+
* has no instances yet and scales to `--height` (or the mesh's own size) instead.
|
|
135
|
+
*/
|
|
136
|
+
export declare function runModelGeneration(options: {
|
|
137
|
+
prompt: string;
|
|
138
|
+
name?: string;
|
|
139
|
+
assetId?: string;
|
|
140
|
+
minVoxelSize: number;
|
|
141
|
+
maxVoxelSize: number;
|
|
142
|
+
targetHeight?: number;
|
|
143
|
+
fillInterior: boolean;
|
|
144
|
+
/** Skip the paid generation and voxelize this mesh instead — how a failed run is retried. */
|
|
145
|
+
glbUrl?: string;
|
|
146
|
+
json: boolean;
|
|
147
|
+
deps?: GenerateRunDeps;
|
|
148
|
+
}): Promise<GenerateModelResult>;
|
|
123
149
|
export declare const generateCommand: import("citty").CommandDef<import("citty").ArgsDef>;
|