@hypersoniclabs/helix-cli 0.1.24 → 0.1.25-helix3.460

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.
Files changed (38) hide show
  1. package/README.md +14 -5
  2. package/dist/assets.d.ts +1 -1
  3. package/dist/assets.js +5 -5
  4. package/dist/assets.js.map +1 -1
  5. package/dist/audioCommand.js +3 -3
  6. package/dist/audioCommand.js.map +1 -1
  7. package/dist/character/avatarPreflight.js +11 -2
  8. package/dist/character/avatarPreflight.js.map +1 -1
  9. package/dist/index.js +81 -20
  10. package/dist/index.js.map +1 -1
  11. package/dist/money.d.ts +1 -1
  12. package/dist/money.js +1 -1
  13. package/dist/tsconfig.build.tsbuildinfo +1 -1
  14. package/dist/vehicle/mintVehicle.d.ts +37 -15
  15. package/dist/vehicle/mintVehicle.js +139 -28
  16. package/dist/vehicle/mintVehicle.js.map +1 -1
  17. package/dist/vehicle/publish.d.ts +14 -0
  18. package/dist/vehicle/publish.js +28 -5
  19. package/dist/vehicle/publish.js.map +1 -1
  20. package/dist/vehicle/pull.d.ts +89 -0
  21. package/dist/vehicle/pull.js +274 -0
  22. package/dist/vehicle/pull.js.map +1 -0
  23. package/package.json +3 -3
  24. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  25. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  26. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  27. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  28. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  29. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  30. package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
  31. package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
  32. package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
  33. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
  34. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
  35. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
  36. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
  37. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
  38. 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
- * The served mesh rendition, pinned to the uploaded model. A `source` rendition with no bytes is kept as the
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
- }, hostGrantExtensions?: unknown): Json;
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
- glb: {
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 rendition, pinned to the uploaded model. A `source` rendition with no bytes is kept as the
58
- * description it is; exactly one served rendition is pinned (this command seals one model). Pure.
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, glb) {
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
- mesh.visual = { format: 1, ...(visual ?? {}), renditions: [{ id: 'target-web', kind: 'derived', ...pinned }] };
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 > 1) {
74
- throw new Error(`mesh.visual declares ${served.length} served renditions (${served.map((r) => String(r.id)).join(', ')}); this command seals one model — keep one derived rendition and point every tier at it`);
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, glb, hostGrantExtensions) {
84
- const root = pinMeshRendition((0, validate_1.publishedVehiclePackage)(pkg), glb);
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 glbRef = { cid: (0, platform_1.cidOf)(a.glb.sha), bytes: a.glb.bytes, mediaType: 'model/gltf-binary', role: publish_1.VEHICLE_MODEL_ROLE };
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: glbRef, source: { kind: 'existing' } },
150
+ ...modelRefs.map((reference) => ({ reference, source: { kind: 'existing' } })),
99
151
  ];
100
- const variants = [{ id: 'target-balanced', runtimeProfileId: 'web-balanced', object: glbRef }];
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.glb.sha, ...a.audio.map((u) => u.sha)].join('\n')),
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 glb = { sha: (0, platform_1.sha256Hex)(glbBytes), bytes: glbBytes.length, url: `https://pending.invalid/content/sha256/${(0, platform_1.sha256Hex)(glbBytes)}` };
181
- const root = vehicleRoot((0, audio_1.provisionalAudio)(vdir.pkg, vdir.dir).pkg, glb, publish.hostGrantExtensions);
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), glb,
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.glb, publish.hostGrantExtensions);
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, the model, and every uploaded WAV. A loadable audio row whose
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:${ledger.glb.sha}` } }, ...attached.uploaded.map((u) => ({ object: { cid: `cid:sha256:${u.sha}` } }))],
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, glb: ledger.glb, audio: attached.uploaded,
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 meshPinned = storedRenditions.some((r) => (0, platform_1.isRecord)(r) && r.checksumSha256 === ledger.glb.sha && r.artifactRef === ledger.glb.url && r.byteLength === ledger.glb.bytes);
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":";;;AA4CA,gDAEC;AAED,wCAIC;AAoGD,4CAkBC;AAGD,kCAIC;AASD,8CAuCC;AAKD,sCAKC;AAGD,4CAkBC;AAOD,4CA0BC;AAED,kCAuMC;AAED,8CAeC;AA3fD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,6CAAyC;AACzC,qCAA6E;AAC7E,yCAAoD;AAEpD,kCAAkC;AAClC,mCAA6I;AAC7I,2CAA+E;AAC/E,yCAGoB;AACpB,uCAGmB;AACnB,yCAAyF;AAG5E,QAAA,eAAe,GAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAGjG,4EAA4E;AAC5E,SAAgB,kBAAkB,CAAC,IAAa;IAC9C,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;AACzE,CAAC;AAED,SAAgB,cAAc,CAAC,KAAc;IAC3C,iEAAiE;IACjE,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,gCAAgC,CAAmD,CAAC;IAC3H,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AA8FD,MAAM,GAAG,GAAG,GAAW,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAEnD;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,GAAS,EAAE,GAAgD;IAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAS,CAAC;IACpD,IAAI,CAAC,IAAA,mBAAQ,EAAC,GAAG,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,MAAM,GAAG,IAAA,mBAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,MAAM,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IACxF,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnF,IAAI,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;QAC/G,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAuB,CAAC;IAClD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAa,EAAE,CAAC,IAAA,mBAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC;IAC3J,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,MAAM,uBAAuB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;IACnN,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;;QACrD,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACvE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iHAAiH;AACjH,SAAgB,WAAW,CAAC,GAAS,EAAE,GAAgD,EAAE,mBAA6B;IACpH,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAA,kCAAuB,EAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACjE,IAAI,mBAAmB,KAAK,SAAS;QAAE,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACtF,OAAO,IAAI,CAAC;AACd,CAAC;AAKD;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,CAIjC;IACC,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,IAAA,gBAAK,EAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,iCAAuB,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;IACrI,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,IAAA,gBAAK,EAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,4BAAkB,EAAE,CAAC;IACvH,MAAM,OAAO,GAAW;QACtB,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;QAC5H,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;KACpD,CAAC;IACF,MAAM,QAAQ,GAAW,CAAC,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,IAAA,gBAAK,EAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,4BAAkB,EAAE,CAAC;QACpG,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACrH,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;IACtC,MAAM,MAAM,GAAS;QACnB,SAAS,EAAE,2BAA2B,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;QACvD,YAAY,EAAE,IAAA,oBAAS,EAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxF,OAAO,EAAE,EAAE,MAAM,EAAE,2BAA2B,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;QACzG,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE;QAChF,cAAc,EAAE;YACd,MAAM,EAAE,mCAAmC;YAC3C,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7C,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,EAAE;YAChB,QAAQ;YACR,aAAa,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,eAAe,EAAE,sBAAsB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACjH,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,yBAAyB,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7J,eAAe,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAE,CAAC,CAAC,SAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;SACnI;QACD,OAAO;QACP,QAAQ,EAAE,EAAE;QACZ,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpI,gFAAgF;AAChF,SAAgB,aAAa,CAAC,GAAY;IACxC,IAAI,CAAC,IAAA,mBAAQ,EAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,MAAM,OAAO,GAAG,IAAA,mBAAQ,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,MAAM,UAAU,GAAG,IAAA,mBAAQ,EAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,OAAO,OAAO,CAAC,CAAC,OAAO,IAAI,IAAA,mBAAQ,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAA,mBAAQ,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,uGAAuG;AAChG,KAAK,UAAU,gBAAgB,CAAC,GAAc,EAAE,MAAc,EAAE,IAAyC;IAC9G,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAgI,KAAK,EAAE,2BAA2B,MAAM,QAAQ,CAAC,CAAC;IACjN,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC7J,IAAI,OAAO,KAAK,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IACrH,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,mGAAmG,CAAC,CAAC;IACjJ,MAAM,MAAM,GAAG,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAC/C,IAAI,IAAA,mBAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,IAAA,mBAAQ,EAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,MAAM,GAAG,GAAG,IAAA,mBAAQ,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,MAAM,CAAC,MAAM,CAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAG,MAAM,CAAC,MAAM,CAAU,CAAC,IAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrJ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,OAAO,CAAC,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,wBAAwB,MAAM,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;AAChI,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,IAAgB,EAAE,IAAyG,EAAE,QAAoB;IAChL,MAAM,OAAO,GAAG,IAAI,CAAC,OAA0I,CAAC;IAChK,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3H,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mFAAmF,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;IACvM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,0BAAc,EAAC;QAC5B,kGAAkG;QAClG,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,cAAO,EAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACrF,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI;QACjL,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM;KACtF,CAAC,CAAC,CAAC;IACJ,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,IAAA,oBAAS,EAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,0CAA0C,IAAA,oBAAS,EAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACvI,MAAM,IAAI,GAAG,WAAW,CAAC,IAAA,wBAAgB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,GAAG,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC7G,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC;YACnC,SAAS,EAAE,IAAA,iBAAM,EAAC,yCAAyC,EAAE,oCAAyB,CAAC;YACvF,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,IAAI,EAAE,GAAG,IAAA,cAAO,EAAC,KAAK,IAAI,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE;YAC7G,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAA,oBAAS,EAAC,SAAS,CAAC,EAAE,GAAG;YAClG,KAAK,EAAE,IAAA,6BAAmB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAA,oBAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;SAClI,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAgB,EAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,qDAAqD,EAAE,CAAC,CAAC;IACzP,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,IAAwB,EAAE,KAAqB,EAAE,IAAqB;IACtG,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAA,wBAAc,EAAC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,GAAG,IAAI,IAAA,gBAAI,EAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACxD,MAAM,KAAK,GAA+B,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACtF,MAAM,OAAO,GAAG,IAAI,CAAC,OAA0I,CAAC;IAEhK,kHAAkH;IAClH,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,0BAAe,CAAC;IAClD,8GAA8G;IAC9G,qEAAqE;IACrE,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAA,wBAAgB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAClF,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChG,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAe,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzE,qHAAqH;IACrH,kFAAkF;IAClF,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,IAAI,CAAmB,EAAE,CAAC;IAChJ,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAClE,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;QAC1D,OAAO;YACL,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK;YAC7D,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,0DAA0D,CAAC;SAClH,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3H,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACjH,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;IAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,uBAAe,CAAC,QAAQ,CAAC,MAAuB,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,0IAA0I,CAAC,CAAC;IAC9J,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,wGAAwG,CAAC,CAAC;IAC5J,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAE9H,IAAA,mBAAS,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,MAAM,GAAsB,IAAA,oBAAU,EAAC,UAAU,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,CAAsB;QACnE,CAAC,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,QAAQ,EAAE,IAAA,wBAAU,GAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACjF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,MAAgB,EAAQ,EAAE;QACtD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACpF,IAAA,uBAAa,EAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,oBAAoB,MAAM,CAAC,MAAM,SAAS,IAAI,CAAC,MAAM,4CAA4C,CAAC,CAAC;IAClI,CAAC;IAED,oHAAoH;IACpH,MAAM,MAAM,GAAG,IAAA,oBAAS,EAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;QAC7C,GAAG,CAAC,aAAa,IAAA,oBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QAC9G,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAA,oBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClK,IAAI,MAAM,CAAC,GAAG,KAAK,IAAA,gBAAK,EAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,OAAO,aAAa,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,cAAc,IAAA,gBAAK,EAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxM,MAAM,GAAG,GAAG,MAAM,IAAA,0BAAe,EAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1G,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QAC1D,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,GAAG,CAAC,gEAAgE,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAe,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1J,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAAE,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9J,oHAAoH;IACpH,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChF,IAAA,uBAAa,EAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAC;IACrC,iHAAiH;IACjH,mHAAmH;IACnH,MAAM,eAAe,GAAG,IAAA,4BAAoB,EAAC;QAC3C,IAAI,EAAE,EAAE,GAAG,EAAE,cAAc,OAAO,EAAE,EAAE;QACtC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,cAAc,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAC/I,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAkB,EAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACjF,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,qFAAqF,CAAC,EAAE,CAAC;IAC3K,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,sFAAsF,CAAC,EAAE,CAAC;IAClQ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,MAAM,qCAAqC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM;cACnK,0EAA0E,MAAM,CAAC,MAAM,4FAA4F,CAAC,CAAC;IAC3L,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,+FAA+F;QAC/F,OAAO,MAAM,CAAC,GAAG,CAAC;QAClB,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAEzB,oHAAoH;IACpH,IAAI,QAA8B,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,QAAQ,GAAG,MAAM,IAAA,kBAAO,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,SAAS,QAAQ,CAAC,IAAI,iBAAiB,CAAC,CAAC;QAC7G,IAAI,CAAC,QAAQ,CAAC,mBAAmB;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,+EAA+E,CAAC,CAAC;IACzJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,QAAQ,EAAE,mBAAmB,EAAE,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,IAAA,iBAAM,EAAC,mCAAmC,MAAM,CAAC,QAAQ,EAAE,EAAE,oCAAyB,CAAC,CAAC;QAC1K,IAAI,WAA6E,CAAC;QAClF,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAO,KAAK,EAAE,8BAA8B,SAAS,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,GAAG,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAS,CAAC;YACpE,WAAW,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9H,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,cAAO,EAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;QAChH,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC;YAC5C,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ;YACxG,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAA,oBAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ;SAC/E,CAAC,CAAC;QACH,8GAA8G;QAC9G,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAE,MAAM,CAAC,SAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,MAAM,cAAc,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,cAAc,OAAO,OAAO,CAAC,CAAC;QAClE,IAAA,uBAAa,EAAC,cAAc,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACzJ,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC;QAClC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,GAAG,CAAC,2BAA2B,SAAS,IAAI,OAAO,KAAK,OAAO,CAAC,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5H,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,WAAW,OAAO,OAAO,CAAC,CAAC;QAC5D,IAAA,uBAAa,EAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC;QAC5B,MAAM,WAAW,GAAG,MAAM,CAAE,OAAgB,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACxJ,MAAM,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QACjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IAEvB,oHAAoH;IACpH,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;IAC1C,IAAI,WAAW,GAAqC,QAAQ,CAAC;IAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,GAAG,CAAC,wBAAwB,KAAK,UAAU,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;YAC/B,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAuB,EAAE,KAAK;YACzF,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI;SACtF,CAAC,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;QACzD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,2BAA2B,IAAI,CAAC,MAAM,WAAW,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;YACjK,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;YAC7B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC5B,MAAM,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;YACvC,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,MAAM,CAAC,WAAW,GAAG,2BAA2B,CAAC;gBACjD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC5B,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,CACP,uHAAuH,IAAI,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAO,sBAAsB,UAAU,WAAW,EAC9M,gFAAgF,CACjF,CAAC;gBACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACjK,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,MAAM;QAAE,WAAW,GAAG,OAAO,CAAC;IACvC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAE3D,oHAAoH;IACpH,MAAM,KAAK,GAAG,MAAM,IAAA,kBAAO,EAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,IAAI,IAAI,CAAC;IACnD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAA,mBAAQ,EAAC,KAAK,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,UAAW,CAAC,sBAA+B,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACpJ,MAAM,UAAU,GAAG,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW,CAAC;IACtJ,MAAM,sBAAsB,GAAG,IAAA,mBAAQ,EAAC,MAAM,CAAC,IAAI,QAAQ,KAAK,IAAA,oBAAS,EAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAClG,MAAM,UAAU,GAAG,IAAA,mBAAQ,EAAC,MAAM,CAAC,IAAI,IAAA,mBAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,SAAS,GAAG,UAAU,EAAE,GAAG,KAAK,MAAM,CAAC;IAC7C,MAAM,gBAAgB,GAAG,IAAA,mBAAQ,EAAC,UAAU,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,UAAW,CAAC,MAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,UAAW,CAAC,MAAe,CAAC,UAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5K,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,KAAK,MAAM,CAAC,GAAI,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,GAAI,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,GAAI,CAAC,KAAK,CAAC,CAAC;IAChL,MAAM,aAAa,GAAG,IAAA,4BAAoB,EAAC,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,MAAM,IAAA,0BAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpH,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACxH,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,sBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACtJ,MAAM,EAAE,GAAG,UAAU,IAAI,sBAAsB,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;IACvG,IAAI,CAAC,IAAI,CACP,2DAA2D,MAAM,wCAAwC,EACzG,gDAAgD,MAAM,wCAAwC,EAC9F,6EAA6E,MAAM,IAAI,CACxF,CAAC;IACF,OAAO;QACL,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO;QAC7G,QAAQ,EAAE,EAAE,UAAU,EAAE,sBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;QACtH,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,CAAoB;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9I,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE;QAAE,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvI,IAAI,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClF,IAAI,CAAC,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACzH,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,UAAU,sBAAsB,CAAC,CAAC,QAAQ,CAAC,sBAAsB,gBAAgB,CAAC,CAAC,QAAQ,CAAC,SAAS,iBAAiB,CAAC,CAAC,QAAQ,CAAC,UAAU,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACpP,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3M,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,2BAA2B,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/L,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
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;
@@ -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 glbFile = overrides.glb ? (0, node_path_1.resolve)(overrides.glb) : undefined;
30
- if (!glbFile) {
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
- glbFile = (0, node_path_1.join)(dir, 'model.glb');
50
+ models = [{ file: (0, node_path_1.join)(dir, 'model.glb') }, ...perRendition];
34
51
  else if (glbs.length === 1)
35
- glbFile = (0, node_path_1.join)(dir, glbs[0]);
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,