@hypersoniclabs/helix-cli 0.1.24 → 0.1.25-helix3.461
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 +14 -5
- package/dist/assets.d.ts +1 -1
- package/dist/assets.js +5 -5
- package/dist/assets.js.map +1 -1
- package/dist/audioCommand.js +3 -3
- package/dist/audioCommand.js.map +1 -1
- package/dist/character/avatarPreflight.js +11 -2
- package/dist/character/avatarPreflight.js.map +1 -1
- package/dist/character/check/check.d.ts +23 -3
- package/dist/character/check/check.js +38 -12
- package/dist/character/check/check.js.map +1 -1
- package/dist/character/check/sheets.d.ts +1 -1
- package/dist/character/check/types.d.ts +1 -1
- package/dist/index.js +103 -27
- package/dist/index.js.map +1 -1
- package/dist/money.d.ts +1 -1
- package/dist/money.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/vehicle/mintVehicle.d.ts +37 -15
- package/dist/vehicle/mintVehicle.js +139 -28
- package/dist/vehicle/mintVehicle.js.map +1 -1
- package/dist/vehicle/publish.d.ts +14 -0
- package/dist/vehicle/publish.js +28 -5
- package/dist/vehicle/publish.js.map +1 -1
- package/dist/vehicle/pull.d.ts +89 -0
- package/dist/vehicle/pull.js +274 -0
- package/dist/vehicle/pull.js.map +1 -0
- package/dist/visualQa/avatarSeverity.d.ts +22 -0
- package/dist/visualQa/avatarSeverity.js +86 -0
- package/dist/visualQa/avatarSeverity.js.map +1 -0
- package/dist/visualQa/command.d.ts +7 -1
- package/dist/visualQa/command.js +3 -1
- package/dist/visualQa/command.js.map +1 -1
- package/dist/visualQa/hosted.d.ts +18 -2
- package/dist/visualQa/hosted.js +2 -2
- package/dist/visualQa/hosted.js.map +1 -1
- package/dist/visualQa/moveUx.js +2 -0
- package/dist/visualQa/moveUx.js.map +1 -1
- package/dist/visualQa/types.d.ts +71 -1
- package/dist/visualQa/verdictText.d.ts +37 -0
- package/dist/visualQa/verdictText.js +83 -0
- package/dist/visualQa/verdictText.js.map +1 -0
- package/docs/character-check.md +30 -2
- package/docs/visual-qa.md +38 -1
- package/package.json +3 -3
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
|
@@ -39,11 +39,19 @@ export interface VehicleMintOptions {
|
|
|
39
39
|
export interface VehicleMintLedger {
|
|
40
40
|
schema: 'helix.vehicle-mint-ledger/1';
|
|
41
41
|
intentId: string;
|
|
42
|
+
/** The PRIMARY model (the one the highest tier draws). Kept for a one-rendition car and for older ledgers. */
|
|
42
43
|
glb?: {
|
|
43
44
|
sha: string;
|
|
44
45
|
bytes: number;
|
|
45
46
|
url: string;
|
|
46
47
|
};
|
|
48
|
+
/** Every sealed model rendition, primary first (a multi-rendition car seals one GLB per rendition). */
|
|
49
|
+
models?: Array<{
|
|
50
|
+
sha: string;
|
|
51
|
+
bytes: number;
|
|
52
|
+
url: string;
|
|
53
|
+
renditionId?: string;
|
|
54
|
+
}>;
|
|
47
55
|
rootSha?: string;
|
|
48
56
|
packageId?: string;
|
|
49
57
|
version?: string;
|
|
@@ -123,30 +131,43 @@ export interface VehicleMintDeps {
|
|
|
123
131
|
validate?: typeof validateVehicle;
|
|
124
132
|
onProgress?: (message: string) => void;
|
|
125
133
|
}
|
|
126
|
-
/**
|
|
127
|
-
|
|
128
|
-
* description it is; exactly one served rendition is pinned (this command seals one model). Pure.
|
|
129
|
-
*/
|
|
130
|
-
export declare function pinMeshRendition(pkg: Json, glb: {
|
|
131
|
-
sha: string;
|
|
132
|
-
bytes: number;
|
|
133
|
-
url: string;
|
|
134
|
-
}): Json;
|
|
135
|
-
/** The exact vehicle-definition root: the published shape (`mesh.ref = "$self"`) with its model pinned. Pure. */
|
|
136
|
-
export declare function vehicleRoot(pkg: Json, glb: {
|
|
134
|
+
/** One uploaded (or already sealed) model: its exact bytes and the served rendition it belongs to, when it names one. */
|
|
135
|
+
export interface PinnedModel {
|
|
137
136
|
sha: string;
|
|
138
137
|
bytes: number;
|
|
139
138
|
url: string;
|
|
140
|
-
|
|
139
|
+
renditionId?: string;
|
|
140
|
+
file?: string;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The served mesh renditions, each pinned to the model that is its own bytes. A `source` rendition with no bytes is
|
|
144
|
+
* kept as the description it is.
|
|
145
|
+
*
|
|
146
|
+
* A car whose root declares more than one served rendition (the live Subaru draws two: a mobile-low GLB and the
|
|
147
|
+
* balanced one) is sealed with one model per rendition — matched by the rendition's own `checksumSha256` first, then
|
|
148
|
+
* by `model-<renditionId>.glb`. Two renditions that share one GLB share one file. A rendition with no model, or a model
|
|
149
|
+
* no rendition names, is refused rather than guessed at: pinning the wrong bytes into a rendition is how a car draws
|
|
150
|
+
* something other than what it sealed. Pure.
|
|
151
|
+
*/
|
|
152
|
+
export declare function pinMeshRendition(pkg: Json, glbOrModels: PinnedModel | PinnedModel[]): Json;
|
|
153
|
+
/** The exact vehicle-definition root: the published shape (`mesh.ref = "$self"`) with its model(s) pinned. Pure. */
|
|
154
|
+
export declare function vehicleRoot(pkg: Json, glbOrModels: PinnedModel | PinnedModel[], hostGrantExtensions?: unknown): Json;
|
|
141
155
|
/** The package identity a Vehicle Package seal names. */
|
|
142
156
|
export interface SealPackageIdentity {
|
|
143
157
|
name: string;
|
|
144
158
|
slug: string;
|
|
145
159
|
visibility: 'public' | 'private';
|
|
146
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* The role a variant declares for a model rendition. The engine draws from the ROOT's `artifactRef` per rendition, so
|
|
163
|
+
* the role is metadata — but the live corpus names it after the tier, and the server matches a variant to its rendition
|
|
164
|
+
* by ID (`vehicleRenditionManifestProblems`), which is why the id is the rendition's own.
|
|
165
|
+
*/
|
|
166
|
+
export declare function modelVariantRole(renditionId?: string): string;
|
|
147
167
|
/**
|
|
148
168
|
* The exact Package publication intent `vehicle publish` seals, built from values only (no network, no upload) so the
|
|
149
|
-
* real publish and the dry run's seal-side validation judge the SAME object. `audio` is every uploaded WAV
|
|
169
|
+
* real publish and the dry run's seal-side validation judge the SAME object. `audio` is every uploaded WAV and
|
|
170
|
+
* `models` every distinct model rendition (one variant per GLB, its id the rendition it serves).
|
|
150
171
|
*/
|
|
151
172
|
export declare function vehicleSealIntent(a: {
|
|
152
173
|
packageId: string;
|
|
@@ -154,10 +175,11 @@ export declare function vehicleSealIntent(a: {
|
|
|
154
175
|
version: string;
|
|
155
176
|
rootBytes: Uint8Array;
|
|
156
177
|
rootSha: string;
|
|
157
|
-
|
|
178
|
+
models: Array<{
|
|
158
179
|
sha: string;
|
|
159
180
|
bytes: number;
|
|
160
|
-
|
|
181
|
+
renditionId?: string;
|
|
182
|
+
}>;
|
|
161
183
|
audio: Array<{
|
|
162
184
|
sha: string;
|
|
163
185
|
bytes: number;
|
|
@@ -5,6 +5,7 @@ exports.sealProvenanceKind = sealProvenanceKind;
|
|
|
5
5
|
exports.canonicalBytes = canonicalBytes;
|
|
6
6
|
exports.pinMeshRendition = pinMeshRendition;
|
|
7
7
|
exports.vehicleRoot = vehicleRoot;
|
|
8
|
+
exports.modelVariantRole = modelVariantRole;
|
|
8
9
|
exports.vehicleSealIntent = vehicleSealIntent;
|
|
9
10
|
exports.isLandVehicle = isLandVehicle;
|
|
10
11
|
exports.readVehicleBoard = readVehicleBoard;
|
|
@@ -42,6 +43,7 @@ const sealCheck_1 = require("./sealCheck");
|
|
|
42
43
|
const platform_1 = require("./platform");
|
|
43
44
|
const publish_1 = require("./publish");
|
|
44
45
|
const validate_1 = require("./validate");
|
|
46
|
+
const avatarPreflight_1 = require("../character/avatarPreflight");
|
|
45
47
|
exports.CONTENT_RATINGS = ['everyone', 'teen', 'mature', 'adult'];
|
|
46
48
|
/** The seal accepts only these provenance kinds (it refuses "original"). */
|
|
47
49
|
function sealProvenanceKind(kind) {
|
|
@@ -53,51 +55,105 @@ function canonicalBytes(value) {
|
|
|
53
55
|
return canonicalJsonBytes(value);
|
|
54
56
|
}
|
|
55
57
|
const now = () => new Date().toISOString();
|
|
58
|
+
const pinnedRef = (model) => ({ artifactRef: model.url, checksumSha256: model.sha, byteLength: model.bytes });
|
|
56
59
|
/**
|
|
57
|
-
* The served mesh
|
|
58
|
-
*
|
|
60
|
+
* The served mesh renditions, each pinned to the model that is its own bytes. A `source` rendition with no bytes is
|
|
61
|
+
* kept as the description it is.
|
|
62
|
+
*
|
|
63
|
+
* A car whose root declares more than one served rendition (the live Subaru draws two: a mobile-low GLB and the
|
|
64
|
+
* balanced one) is sealed with one model per rendition — matched by the rendition's own `checksumSha256` first, then
|
|
65
|
+
* by `model-<renditionId>.glb`. Two renditions that share one GLB share one file. A rendition with no model, or a model
|
|
66
|
+
* no rendition names, is refused rather than guessed at: pinning the wrong bytes into a rendition is how a car draws
|
|
67
|
+
* something other than what it sealed. Pure.
|
|
59
68
|
*/
|
|
60
|
-
function pinMeshRendition(pkg,
|
|
69
|
+
function pinMeshRendition(pkg, glbOrModels) {
|
|
70
|
+
const models = Array.isArray(glbOrModels) ? glbOrModels : [glbOrModels];
|
|
71
|
+
if (models.length === 0)
|
|
72
|
+
throw new Error('no model to pin: the vehicle package needs at least one GLB');
|
|
61
73
|
const out = JSON.parse(JSON.stringify(pkg));
|
|
62
74
|
if (!(0, platform_1.isRecord)(out.mesh))
|
|
63
75
|
throw new Error('the vehicle package has no mesh block');
|
|
64
76
|
const mesh = out.mesh;
|
|
65
77
|
const visual = (0, platform_1.isRecord)(mesh.visual) ? mesh.visual : undefined;
|
|
66
|
-
const pinned = { artifactRef: glb.url, checksumSha256: glb.sha, byteLength: glb.bytes };
|
|
67
78
|
if (!visual || !Array.isArray(visual.renditions) || visual.renditions.length === 0) {
|
|
68
|
-
|
|
79
|
+
if (models.length > 1) {
|
|
80
|
+
throw new Error(`${models.length} models were given but the package declares no mesh.visual.renditions, so there is no rendition for the other ${models.length - 1} to pin`);
|
|
81
|
+
}
|
|
82
|
+
mesh.visual = { format: 1, ...(visual ?? {}), renditions: [{ id: 'target-web', kind: 'derived', ...pinnedRef(models[0]) }] };
|
|
69
83
|
return out;
|
|
70
84
|
}
|
|
71
85
|
const renditions = visual.renditions;
|
|
72
86
|
const served = renditions.filter((r) => (0, platform_1.isRecord)(r) && !(r.kind === 'source' && r.artifactRef === undefined && r.checksumSha256 === undefined));
|
|
73
|
-
if (served.length
|
|
74
|
-
|
|
87
|
+
if (served.length === 0) {
|
|
88
|
+
if (models.length > 1) {
|
|
89
|
+
throw new Error(`${models.length} models were given but the package declares no SERVED rendition for the other ${models.length - 1} to pin`);
|
|
90
|
+
}
|
|
91
|
+
renditions.push({ id: 'target-web', kind: 'derived', ...pinnedRef(models[0]) });
|
|
92
|
+
return out;
|
|
93
|
+
}
|
|
94
|
+
const used = new Set();
|
|
95
|
+
for (const rendition of served) {
|
|
96
|
+
const id = String(rendition.id);
|
|
97
|
+
const declared = typeof rendition.checksumSha256 === 'string' ? rendition.checksumSha256.toLowerCase() : undefined;
|
|
98
|
+
// The bytes live in the root itself: a rendition that declares a sha pins THAT model, and two renditions that
|
|
99
|
+
// declare one sha (a car whose high/medium/ultra tiers all draw the same GLB) share one file. This is matched
|
|
100
|
+
// regardless of what an earlier rendition already pinned, because the sha is the identity.
|
|
101
|
+
let at = declared ? models.findIndex((m) => m.sha.toLowerCase() === declared) : -1;
|
|
102
|
+
if (at === -1)
|
|
103
|
+
at = models.findIndex((m, i) => !used.has(i) && m.renditionId !== undefined && m.renditionId === id);
|
|
104
|
+
if (at === -1 && served.length === 1 && models.length === 1)
|
|
105
|
+
at = 0;
|
|
106
|
+
if (at === -1) {
|
|
107
|
+
throw new Error(`rendition "${id}" has no model in this directory: the car draws it, so a publish needs its bytes — write it as ${id === String(served[0].id) ? 'model.glb' : `model-${id}.glb`}`);
|
|
108
|
+
}
|
|
109
|
+
used.add(at);
|
|
110
|
+
Object.assign(rendition, pinnedRef(models[at]));
|
|
111
|
+
}
|
|
112
|
+
const extra = models.filter((_, i) => !used.has(i));
|
|
113
|
+
if (extra.length) {
|
|
114
|
+
throw new Error(`${extra.length} model file(s) match no rendition in the package root (${extra.map((m) => m.file ? (0, node_path_1.basename)(m.file) : m.renditionId ?? m.sha.slice(0, 12)).join(', ')}): delete them, or name each after the rendition it is for (model-<renditionId>.glb)`);
|
|
75
115
|
}
|
|
76
|
-
if (served.length === 1)
|
|
77
|
-
Object.assign(served[0], pinned);
|
|
78
|
-
else
|
|
79
|
-
renditions.push({ id: 'target-web', kind: 'derived', ...pinned });
|
|
80
116
|
return out;
|
|
81
117
|
}
|
|
82
|
-
/** The exact vehicle-definition root: the published shape (`mesh.ref = "$self"`) with its model pinned. Pure. */
|
|
83
|
-
function vehicleRoot(pkg,
|
|
84
|
-
const root = pinMeshRendition((0, validate_1.publishedVehiclePackage)(pkg),
|
|
118
|
+
/** The exact vehicle-definition root: the published shape (`mesh.ref = "$self"`) with its model(s) pinned. Pure. */
|
|
119
|
+
function vehicleRoot(pkg, glbOrModels, hostGrantExtensions) {
|
|
120
|
+
const root = pinMeshRendition((0, validate_1.publishedVehiclePackage)(pkg), glbOrModels);
|
|
85
121
|
if (hostGrantExtensions !== undefined)
|
|
86
122
|
root.hostGrantExtensions = hostGrantExtensions;
|
|
87
123
|
return root;
|
|
88
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* The role a variant declares for a model rendition. The engine draws from the ROOT's `artifactRef` per rendition, so
|
|
127
|
+
* the role is metadata — but the live corpus names it after the tier, and the server matches a variant to its rendition
|
|
128
|
+
* by ID (`vehicleRenditionManifestProblems`), which is why the id is the rendition's own.
|
|
129
|
+
*/
|
|
130
|
+
function modelVariantRole(renditionId) {
|
|
131
|
+
const id = (renditionId ?? '').toLowerCase();
|
|
132
|
+
if (/low|minimal/.test(id))
|
|
133
|
+
return 'vehicle.model.web.low';
|
|
134
|
+
if (/high|ultra/.test(id))
|
|
135
|
+
return 'vehicle.model.web.high';
|
|
136
|
+
return publish_1.VEHICLE_MODEL_ROLE;
|
|
137
|
+
}
|
|
89
138
|
/**
|
|
90
139
|
* The exact Package publication intent `vehicle publish` seals, built from values only (no network, no upload) so the
|
|
91
|
-
* real publish and the dry run's seal-side validation judge the SAME object. `audio` is every uploaded WAV
|
|
140
|
+
* real publish and the dry run's seal-side validation judge the SAME object. `audio` is every uploaded WAV and
|
|
141
|
+
* `models` every distinct model rendition (one variant per GLB, its id the rendition it serves).
|
|
92
142
|
*/
|
|
93
143
|
function vehicleSealIntent(a) {
|
|
144
|
+
if (a.models.length === 0)
|
|
145
|
+
throw new Error('a vehicle Package Version needs at least one model');
|
|
94
146
|
const rootRef = { cid: (0, platform_1.cidOf)(a.rootSha), bytes: a.rootBytes.length, mediaType: publish_1.VEHICLE_ROOT_MEDIA_TYPE, role: 'vehicle-definition' };
|
|
95
|
-
const
|
|
147
|
+
const modelRefs = a.models.map((m) => ({ cid: (0, platform_1.cidOf)(m.sha), bytes: m.bytes, mediaType: 'model/gltf-binary', role: modelVariantRole(m.renditionId) }));
|
|
96
148
|
const objects = [
|
|
97
149
|
{ reference: rootRef, source: { kind: 'inline', bytes: a.rootBytes, filename: 'vehicle-package.json', audience: 'public' } },
|
|
98
|
-
{ reference
|
|
150
|
+
...modelRefs.map((reference) => ({ reference, source: { kind: 'existing' } })),
|
|
99
151
|
];
|
|
100
|
-
const variants =
|
|
152
|
+
const variants = modelRefs.map((object, index) => ({
|
|
153
|
+
id: a.models[index].renditionId ?? (index === 0 ? 'target-balanced' : `model-${index}`),
|
|
154
|
+
runtimeProfileId: 'web-balanced',
|
|
155
|
+
object,
|
|
156
|
+
}));
|
|
101
157
|
a.audio.forEach((u, index) => {
|
|
102
158
|
const ref = { cid: (0, platform_1.cidOf)(u.sha), bytes: u.bytes, mediaType: 'audio/wav', role: publish_1.VEHICLE_AUDIO_ROLE };
|
|
103
159
|
variants.push({ id: `audio-${String(index + 1).padStart(2, '0')}`, runtimeProfileId: 'vehicle-audio', object: ref });
|
|
@@ -106,7 +162,7 @@ function vehicleSealIntent(a) {
|
|
|
106
162
|
const provenance = a.provenance ?? {};
|
|
107
163
|
const intent = {
|
|
108
164
|
projectId: `helix.continuum.vehicle.${a.identity.slug}`,
|
|
109
|
-
sourceDigest: (0, platform_1.sha256Hex)([a.rootSha, a.
|
|
165
|
+
sourceDigest: (0, platform_1.sha256Hex)([a.rootSha, ...a.models.map((m) => m.sha), ...a.audio.map((u) => u.sha)].join('\n')),
|
|
110
166
|
package: { schema: 'helix.continuum.package/1', id: a.packageId, type: 'vehicle', name: a.identity.name },
|
|
111
167
|
packagePublication: { slug: a.identity.slug, visibility: a.identity.visibility },
|
|
112
168
|
packageVersion: {
|
|
@@ -177,13 +233,16 @@ function vehicleSealCheck(vdir, opts, glbBytes) {
|
|
|
177
233
|
contentRating: opts.contentRating ?? publish.contentRating, needsRating: !opts.itemId,
|
|
178
234
|
}));
|
|
179
235
|
try {
|
|
180
|
-
const
|
|
181
|
-
|
|
236
|
+
const pending = (bytes, renditionId) => ({
|
|
237
|
+
sha: (0, platform_1.sha256Hex)(bytes), bytes: bytes.length, url: `https://pending.invalid/content/sha256/${(0, platform_1.sha256Hex)(bytes)}`, ...(renditionId ? { renditionId } : {}),
|
|
238
|
+
});
|
|
239
|
+
const models = [pending(glbBytes, vdir.models[0].renditionId), ...vdir.models.slice(1).map((m) => pending((0, node_fs_1.readFileSync)(m.file), m.renditionId))];
|
|
240
|
+
const root = vehicleRoot((0, audio_1.provisionalAudio)(vdir.pkg, vdir.dir).pkg, models, publish.hostGrantExtensions);
|
|
182
241
|
const rootBytes = canonicalBytes(root);
|
|
183
242
|
const { intent } = vehicleSealIntent({
|
|
184
243
|
packageId: (0, platform_1.uuidV5)('helix.continuum.vehicle-package/dry-run', platform_1.VEHICLE_PACKAGE_NAMESPACE),
|
|
185
244
|
identity: { name: title ?? 'vehicle', slug: `${(0, init_1.slugify)(title ?? 'vehicle')}-00000000`, visibility: 'public' },
|
|
186
|
-
version: opts.version ?? publish.version ?? '1.0.0', rootBytes, rootSha: (0, platform_1.sha256Hex)(rootBytes),
|
|
245
|
+
version: opts.version ?? publish.version ?? '1.0.0', rootBytes, rootSha: (0, platform_1.sha256Hex)(rootBytes), models,
|
|
187
246
|
audio: (0, publish_1.plannedAudioUploads)(vdir.pkg, vdir.dir), provenance: publish.provenance, dirName: (0, node_path_1.basename)(vdir.dir), stage: !!opts.itemId,
|
|
188
247
|
});
|
|
189
248
|
issues.push(...(0, sealCheck_1.sealIntentIssues)(intent));
|
|
@@ -207,6 +266,36 @@ async function mintVehicle(opts, creds, deps) {
|
|
|
207
266
|
// The same gate as `helix vehicle validate --glb`: engine validator, publish gate, host manifest, and (unless
|
|
208
267
|
// --no-simulate) the drive judged against the package's own targets.
|
|
209
268
|
const validation = await validate((0, audio_1.provisionalAudio)(vdir.pkg, vdir.dir).pkg, glbBytes, opts.simulate === false ? {} : { simulate: { apiUrl: creds.apiUrl, offline: opts.offline } });
|
|
269
|
+
// Every OTHER rendition the car draws is judged too, on the two checks that are per-model: the budgets it is
|
|
270
|
+
// submitted to and the host manifest the backend reads (a rendition without the board draws a car no add-on fits).
|
|
271
|
+
const extraModelIssues = vdir.models.slice(1)
|
|
272
|
+
.filter((model) => (0, platform_1.sha256Hex)((0, node_fs_1.readFileSync)(model.file)) !== (0, platform_1.sha256Hex)(glbBytes)) // the same GLB as the primary is already judged
|
|
273
|
+
.flatMap((model) => {
|
|
274
|
+
const bytes = (0, node_fs_1.readFileSync)(model.file);
|
|
275
|
+
const at = model.renditionId ? `glb:${model.renditionId}` : 'glb';
|
|
276
|
+
const issues = (0, validate_1.checkHostManifest)(bytes).map((issue) => ({ ...issue, path: `${at} ${issue.path}` }));
|
|
277
|
+
for (const finding of (0, avatarPreflight_1.preflightAvatar)(bytes, 'vehicle').findings) {
|
|
278
|
+
issues.push({
|
|
279
|
+
code: `VEHICLE_BUDGET_${finding.code.toUpperCase().replace(/-/g, '_')}`,
|
|
280
|
+
level: finding.severity === 'error' ? 'error' : 'warn',
|
|
281
|
+
path: at,
|
|
282
|
+
message: `${(0, node_path_1.basename)(model.file)}: ${finding.message}`,
|
|
283
|
+
fix: 'reduce this rendition to the vehicle publish budget (90,000 triangles, 48 materials, 2048 px textures, 16 MiB, 24 draw calls)',
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
return issues;
|
|
287
|
+
});
|
|
288
|
+
if (extraModelIssues.length)
|
|
289
|
+
validation.issues.push(...extraModelIssues);
|
|
290
|
+
for (const issue of extraModelIssues) {
|
|
291
|
+
if (issue.level === 'error') {
|
|
292
|
+
validation.errors += 1;
|
|
293
|
+
validation.ok = false;
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
validation.warnings += 1;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
210
299
|
const audio = await (0, audio_1.checkAudioLocal)(vdir.pkg, vdir.dir, deps.fetchAudio);
|
|
211
300
|
// The seal's own refusals (provenance, rating, Package shape ...), judged BEFORE anything uploads, so a dry run that
|
|
212
301
|
// passes cannot then be refused by the real seal for a reason it never looked at.
|
|
@@ -243,7 +332,7 @@ async function mintVehicle(opts, creds, deps) {
|
|
|
243
332
|
}
|
|
244
333
|
// 2. upload -------------------------------------------------------------------------------------------------------
|
|
245
334
|
const glbSha = (0, platform_1.sha256Hex)(glbBytes);
|
|
246
|
-
if (!ledger.glb || ledger.glb.sha !== glbSha) {
|
|
335
|
+
if (!ledger.glb || ledger.glb.sha !== glbSha || (ledger.models?.length ?? 1) !== vdir.models.length) {
|
|
247
336
|
say(`uploading ${(0, node_path_1.basename)(vdir.glbFile)} (${(glbBytes.length / 1048576).toFixed(1)} MiB) as a public object`);
|
|
248
337
|
const object = await deps.objects.putObjectFromFile({ path: vdir.glbFile, filename: (0, node_path_1.basename)(vdir.glbFile), mediaType: 'model/gltf-binary', audience: 'public' });
|
|
249
338
|
if (object.cid !== (0, platform_1.cidOf)(glbSha) || object.bytes !== glbBytes.length)
|
|
@@ -252,20 +341,41 @@ async function mintVehicle(opts, creds, deps) {
|
|
|
252
341
|
ledger.glb = { sha: glbSha, bytes: glbBytes.length, url };
|
|
253
342
|
record('upload-model', ledger.glb);
|
|
254
343
|
}
|
|
344
|
+
// Every OTHER rendition (a car that draws a mobile-low GLB as well as the balanced one) is uploaded the same way.
|
|
345
|
+
const renderedBySha = new Map();
|
|
346
|
+
renderedBySha.set(glbSha, { ...ledger.glb, ...(vdir.models[0].renditionId ? { renditionId: vdir.models[0].renditionId } : {}) });
|
|
347
|
+
for (const model of vdir.models.slice(1)) {
|
|
348
|
+
const bytes = (0, node_fs_1.readFileSync)(model.file);
|
|
349
|
+
const sha = (0, platform_1.sha256Hex)(bytes);
|
|
350
|
+
const known = renderedBySha.get(sha) ?? ledger.models?.find((m) => m.sha === sha && m.url);
|
|
351
|
+
if (known) {
|
|
352
|
+
renderedBySha.set(sha, { ...known, ...(model.renditionId && !known.renditionId ? { renditionId: model.renditionId } : {}) });
|
|
353
|
+
continue;
|
|
354
|
+
}
|
|
355
|
+
say(`uploading ${(0, node_path_1.basename)(model.file)} (${(bytes.length / 1048576).toFixed(1)} MiB) as a public object`);
|
|
356
|
+
const object = await deps.objects.putObjectFromFile({ path: model.file, filename: (0, node_path_1.basename)(model.file), mediaType: 'model/gltf-binary', audience: 'public' });
|
|
357
|
+
if (object.cid !== (0, platform_1.cidOf)(sha) || object.bytes !== bytes.length)
|
|
358
|
+
throw new Error(`upload of ${model.file} returned ${object.cid}/${object.bytes}, expected ${(0, platform_1.cidOf)(sha)}/${bytes.length}`);
|
|
359
|
+
const url = await (0, platform_1.publicObjectUrl)(creds.apiUrl, sha, bytes.length, { fetchBytes: deps.fetchBytes });
|
|
360
|
+
const entry = { sha, bytes: bytes.length, url, ...(model.renditionId ? { renditionId: model.renditionId } : {}) };
|
|
361
|
+
renderedBySha.set(sha, entry);
|
|
362
|
+
record('upload-model', entry);
|
|
363
|
+
}
|
|
364
|
+
ledger.models = [...renderedBySha.values()];
|
|
255
365
|
say('audio: uploading local samples and resolving their public URLs');
|
|
256
366
|
const attached = await (0, publish_1.attachAudioUrls)(vdir.pkg, vdir.dir, { objects: deps.objects, apiUrl: creds.apiUrl, fetchBytes: deps.fetchBytes, onProgress: say });
|
|
257
367
|
if (attached.uploaded.length)
|
|
258
368
|
record('upload-audio', attached.uploaded.map((u) => ({ name: u.name, sha: u.sha, bytes: u.bytes, url: u.url })));
|
|
259
369
|
// 3. root ---------------------------------------------------------------------------------------------------------
|
|
260
|
-
const root = vehicleRoot(attached.pkg, ledger.
|
|
370
|
+
const root = vehicleRoot(attached.pkg, ledger.models, publish.hostGrantExtensions);
|
|
261
371
|
(0, node_fs_1.writeFileSync)(packageOut, `${JSON.stringify(root, null, 2)}\n`);
|
|
262
372
|
const rootBytes = canonicalBytes(root);
|
|
263
373
|
const rootSha = (0, platform_1.sha256Hex)(rootBytes);
|
|
264
|
-
// The closure this run is about to seal: the root,
|
|
374
|
+
// The closure this run is about to seal: the root, every model, and every uploaded WAV. A loadable audio row whose
|
|
265
375
|
// cid is NOT in this set is not in the Package closure, so the runtime 404s it — refuse to seal before that ships.
|
|
266
376
|
const intendedClosure = (0, audio_1.sealedClosureSha256s)({
|
|
267
377
|
root: { cid: `cid:sha256:${rootSha}` },
|
|
268
|
-
variants: [{ object: { cid: `cid:sha256:${
|
|
378
|
+
variants: [...ledger.models.map((m) => ({ object: { cid: `cid:sha256:${m.sha}` } })), ...attached.uploaded.map((u) => ({ object: { cid: `cid:sha256:${u.sha}` } }))],
|
|
269
379
|
});
|
|
270
380
|
const preSeal = await (0, audio_1.checkAudioReadBack)(root, deps.fetchAudio, intendedClosure);
|
|
271
381
|
if (!preSeal.ok) {
|
|
@@ -307,7 +417,7 @@ async function mintVehicle(opts, creds, deps) {
|
|
|
307
417
|
pkgIdentity = { name: title, slug: `${(0, init_1.slugify)(title)}-${ledger.intentId.slice(0, 8)}`, visibility: 'public' };
|
|
308
418
|
}
|
|
309
419
|
const { intent, objects } = vehicleSealIntent({
|
|
310
|
-
packageId, identity: pkgIdentity, version, rootBytes, rootSha,
|
|
420
|
+
packageId, identity: pkgIdentity, version, rootBytes, rootSha, models: ledger.models, audio: attached.uploaded,
|
|
311
421
|
provenance: publish.provenance, dirName: (0, node_path_1.basename)(vdir.dir), stage: !!existing,
|
|
312
422
|
});
|
|
313
423
|
// Record the exact sealed closure so the read-back verifies every audio row against what was actually sealed.
|
|
@@ -378,7 +488,8 @@ async function mintVehicle(opts, creds, deps) {
|
|
|
378
488
|
const storedMesh = (0, platform_1.isRecord)(stored) && (0, platform_1.isRecord)(stored.mesh) ? stored.mesh : undefined;
|
|
379
489
|
const meshBound = storedMesh?.ref === itemId;
|
|
380
490
|
const storedRenditions = (0, platform_1.isRecord)(storedMesh?.visual) && Array.isArray(storedMesh.visual.renditions) ? storedMesh.visual.renditions : [];
|
|
381
|
-
const
|
|
491
|
+
const sealedModels = ledger.models ?? (ledger.glb ? [ledger.glb] : []);
|
|
492
|
+
const meshPinned = sealedModels.length > 0 && sealedModels.every((m) => storedRenditions.some((r) => (0, platform_1.isRecord)(r) && r.checksumSha256 === m.sha && r.artifactRef === m.url && r.byteLength === m.bytes));
|
|
382
493
|
const sealedClosure = (0, audio_1.sealedClosureSha256s)({ objectCids: ledger.closure });
|
|
383
494
|
const readAudio = await (0, audio_1.checkAudioReadBack)(stored, deps.fetchAudio, sealedClosure.size ? sealedClosure : undefined);
|
|
384
495
|
const board = await readVehicleBoard(deps.api, itemId, { land: isLandVehicle(root), grants: root.hostGrantExtensions });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mintVehicle.js","sourceRoot":"","sources":["../../src/vehicle/mintVehicle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mintVehicle.js","sourceRoot":"","sources":["../../src/vehicle/mintVehicle.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,22 @@ import { type BytesFetch, type Json } from './platform';
|
|
|
3
3
|
export declare const VEHICLE_ROOT_MEDIA_TYPE = "application/vnd.helix.vehicle-package+json;version=2";
|
|
4
4
|
export declare const VEHICLE_MODEL_ROLE = "vehicle.model.web.medium";
|
|
5
5
|
export declare const VEHICLE_AUDIO_ROLE = "vehicle.audio.bank.sample";
|
|
6
|
+
/** One model file in the directory, and the served rendition it is for (`model-<renditionId>.glb`), when it names one. */
|
|
7
|
+
export interface VehicleModelFile {
|
|
8
|
+
file: string;
|
|
9
|
+
renditionId?: string;
|
|
10
|
+
}
|
|
6
11
|
export interface VehicleDir {
|
|
7
12
|
dir: string;
|
|
8
13
|
packageFile: string;
|
|
14
|
+
/** The drawn model: the primary rendition's file (see `models`). */
|
|
9
15
|
glbFile: string;
|
|
16
|
+
/**
|
|
17
|
+
* Every model the car draws, primary first. A car whose root declares more than one SERVED rendition (a web tier
|
|
18
|
+
* plus a mobile tier, say — the live Subaru is two) is sealed with one model per rendition: `model.glb` for the
|
|
19
|
+
* rendition the highest tier draws and `model-<renditionId>.glb` for each other. A one-rendition car is one file.
|
|
20
|
+
*/
|
|
21
|
+
models: VehicleModelFile[];
|
|
10
22
|
thumbnailFile?: string;
|
|
11
23
|
publish: {
|
|
12
24
|
title?: string;
|
|
@@ -21,6 +33,8 @@ export interface VehicleDir {
|
|
|
21
33
|
};
|
|
22
34
|
pkg: Json;
|
|
23
35
|
}
|
|
36
|
+
/** The served renditions the engine draws from: every rendition with bytes, `source`-with-none kept as a description. */
|
|
37
|
+
export declare function servedRenditionIds(pkg: Json): string[];
|
|
24
38
|
/** Find the pieces of a vehicle package directory. Throws with what is missing. */
|
|
25
39
|
export declare function readVehicleDir(dirArg: string, overrides?: {
|
|
26
40
|
glb?: string;
|
package/dist/vehicle/publish.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VEHICLE_AUDIO_ROLE = exports.VEHICLE_MODEL_ROLE = exports.VEHICLE_ROOT_MEDIA_TYPE = void 0;
|
|
4
|
+
exports.servedRenditionIds = servedRenditionIds;
|
|
4
5
|
exports.readVehicleDir = readVehicleDir;
|
|
5
6
|
exports.audioSourcingErrors = audioSourcingErrors;
|
|
6
7
|
exports.assertAudioSourced = assertAudioSourced;
|
|
@@ -15,6 +16,18 @@ const platform_1 = require("./platform");
|
|
|
15
16
|
exports.VEHICLE_ROOT_MEDIA_TYPE = 'application/vnd.helix.vehicle-package+json;version=2';
|
|
16
17
|
exports.VEHICLE_MODEL_ROLE = 'vehicle.model.web.medium';
|
|
17
18
|
exports.VEHICLE_AUDIO_ROLE = 'vehicle.audio.bank.sample';
|
|
19
|
+
/** The served renditions the engine draws from: every rendition with bytes, `source`-with-none kept as a description. */
|
|
20
|
+
function servedRenditionIds(pkg) {
|
|
21
|
+
const mesh = (0, platform_1.isRecord)(pkg.mesh) ? pkg.mesh : undefined;
|
|
22
|
+
const visual = mesh && (0, platform_1.isRecord)(mesh.visual) ? mesh.visual : undefined;
|
|
23
|
+
const renditions = visual && Array.isArray(visual.renditions) ? visual.renditions : [];
|
|
24
|
+
return renditions.flatMap((entry) => {
|
|
25
|
+
if (!(0, platform_1.isRecord)(entry) || typeof entry.id !== 'string')
|
|
26
|
+
return [];
|
|
27
|
+
const served = !(entry.kind === 'source' && entry.artifactRef === undefined && entry.checksumSha256 === undefined);
|
|
28
|
+
return served ? [entry.id] : [];
|
|
29
|
+
});
|
|
30
|
+
}
|
|
18
31
|
/** Find the pieces of a vehicle package directory. Throws with what is missing. */
|
|
19
32
|
function readVehicleDir(dirArg, overrides = {}) {
|
|
20
33
|
const dir = (0, node_path_1.resolve)(dirArg);
|
|
@@ -26,13 +39,23 @@ function readVehicleDir(dirArg, overrides = {}) {
|
|
|
26
39
|
const pkg = JSON.parse((0, node_fs_1.readFileSync)(packageFile, 'utf8'));
|
|
27
40
|
if (!(0, platform_1.isRecord)(pkg))
|
|
28
41
|
throw new Error(`${packageFile} is not a JSON object`);
|
|
29
|
-
let
|
|
30
|
-
if (
|
|
42
|
+
let models = [];
|
|
43
|
+
if (overrides.glb) {
|
|
44
|
+
models = [{ file: (0, node_path_1.resolve)(overrides.glb) }];
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
31
47
|
const glbs = (0, node_fs_1.readdirSync)(dir).filter((f) => f.toLowerCase().endsWith('.glb'));
|
|
48
|
+
const perRendition = glbs.filter((f) => /^model-.+\.glb$/i.test(f)).map((f) => ({ file: (0, node_path_1.join)(dir, f), renditionId: f.slice('model-'.length, -'.glb'.length) }));
|
|
32
49
|
if (glbs.includes('model.glb'))
|
|
33
|
-
|
|
50
|
+
models = [{ file: (0, node_path_1.join)(dir, 'model.glb') }, ...perRendition];
|
|
34
51
|
else if (glbs.length === 1)
|
|
35
|
-
|
|
52
|
+
models = [{ file: (0, node_path_1.join)(dir, glbs[0]) }];
|
|
53
|
+
else if (glbs.length > 1 && perRendition.length === glbs.length) {
|
|
54
|
+
// Only `model-<renditionId>.glb` files: the primary is the rendition the highest tier draws. Order matters —
|
|
55
|
+
// the first model is the one `helix vehicle validate --glb` and the cabin/budget checks measure.
|
|
56
|
+
const order = servedRenditionIds(pkg);
|
|
57
|
+
models = [...perRendition].sort((a, b) => (order.indexOf(a.renditionId) + 1 || order.length + 1) - (order.indexOf(b.renditionId) + 1 || order.length + 1));
|
|
58
|
+
}
|
|
36
59
|
else
|
|
37
60
|
throw new Error(glbs.length === 0 ? `${dir} has no .glb model` : `${dir} has ${glbs.length} .glb files; name the drawn one model.glb or pass --glb`);
|
|
38
61
|
}
|
|
@@ -40,7 +63,7 @@ function readVehicleDir(dirArg, overrides = {}) {
|
|
|
40
63
|
: ['thumbnail.png', 'thumbnail.jpg', 'thumbnail.jpeg', 'thumbnail.webp'].map((f) => (0, node_path_1.join)(dir, f)).find(node_fs_1.existsSync);
|
|
41
64
|
const publishFile = (0, node_path_1.join)(dir, 'publish.json');
|
|
42
65
|
const publish = (0, node_fs_1.existsSync)(publishFile) ? JSON.parse((0, node_fs_1.readFileSync)(publishFile, 'utf8')) : {};
|
|
43
|
-
return { dir, packageFile, glbFile, thumbnailFile, publish, pkg };
|
|
66
|
+
return { dir, packageFile, glbFile: models[0].file, models, thumbnailFile, publish, pkg };
|
|
44
67
|
}
|
|
45
68
|
/**
|
|
46
69
|
* Vehicle audio is never synthesised: the provenance errors that refuse a publish (AUDIO_SYNTHESISED,
|