@hypersoniclabs/helix-cli 0.1.25-helix3.494 → 0.1.25-helix3.497
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 +3 -3
- package/dist/bakeLighting.d.ts +32 -1
- package/dist/bakeLighting.js +135 -3
- package/dist/bakeLighting.js.map +1 -1
- package/dist/bakedPack/audit.d.ts +17 -0
- package/dist/bakedPack/audit.js +67 -0
- package/dist/bakedPack/audit.js.map +1 -0
- package/dist/bakedPack/encode.d.ts +53 -0
- package/dist/bakedPack/encode.js +366 -0
- package/dist/bakedPack/encode.js.map +1 -0
- package/dist/bakedPack/fromStoreJson.d.ts +41 -0
- package/dist/bakedPack/fromStoreJson.js +60 -0
- package/dist/bakedPack/fromStoreJson.js.map +1 -0
- package/dist/bakedPack/hxb.d.ts +139 -0
- package/dist/bakedPack/hxb.js +227 -0
- package/dist/bakedPack/hxb.js.map +1 -0
- package/dist/bakedPack/packTypes.d.ts +42 -0
- package/dist/bakedPack/packTypes.js +7 -0
- package/dist/bakedPack/packTypes.js.map +1 -0
- package/dist/bundle.js +52 -0
- package/dist/bundle.js.map +1 -1
- package/dist/city/assemble/compose.d.ts +11 -0
- package/dist/city/assemble/compose.js +67 -10
- package/dist/city/assemble/compose.js.map +1 -1
- package/dist/city/assemble/create.js +2 -0
- package/dist/city/assemble/create.js.map +1 -1
- package/dist/city/props/geometry.d.ts +65 -1
- package/dist/city/props/geometry.js +247 -2
- package/dist/city/props/geometry.js.map +1 -1
- package/dist/city/props/index.d.ts +15 -1
- package/dist/city/props/index.js +48 -8
- package/dist/city/props/index.js.map +1 -1
- package/dist/city/roads/constants.js +8 -3
- package/dist/city/roads/constants.js.map +1 -1
- package/dist/city/roads/elevation.d.ts +20 -0
- package/dist/city/roads/elevation.js +99 -14
- package/dist/city/roads/elevation.js.map +1 -1
- package/dist/city/roads/network.d.ts +2 -0
- package/dist/city/roads/network.js +1 -1
- package/dist/city/roads/network.js.map +1 -1
- package/dist/index.js +22 -17
- package/dist/index.js.map +1 -1
- package/dist/itemPublishVersion.d.ts +3 -3
- package/dist/itemPublishVersion.js +10 -9
- package/dist/itemPublishVersion.js.map +1 -1
- package/dist/itemSetVersion.d.ts +1 -1
- package/dist/itemSetVersion.js +4 -4
- package/dist/itemSetVersion.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/vehicle/mintAddOn.js +2 -2
- package/dist/vehicle/mintAddOn.js.map +1 -1
- package/dist/vehicle/mintVehicle.js +1 -1
- package/dist/vehicle/mintVehicle.js.map +1 -1
- package/dist/visualQa/command.js +2 -2
- package/dist/visualQa/command.js.map +1 -1
- package/dist/visualQa/moveUx.js +7 -7
- package/dist/visualQa/moveUx.js.map +1 -1
- package/dist/visualQa/verdictText.d.ts +1 -1
- package/dist/visualQa/verdictText.js +5 -5
- package/dist/visualQa/verdictText.js.map +1 -1
- package/dist/visualsConfig.d.ts +13 -2
- package/dist/visualsConfig.js +43 -5
- package/dist/visualsConfig.js.map +1 -1
- package/docs/city-roads.md +3 -2
- package/docs/scene-create.md +2 -2
- package/docs/visual-qa-candidate-versions.md +4 -3
- package/docs/visual-qa.md +11 -10
- package/package.json +3 -2
- 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
package/README.md
CHANGED
|
@@ -71,9 +71,9 @@ The token is stored in `~/.helix/credentials.json` (mode `600`). It's sent as
|
|
|
71
71
|
| `helix item list-slots [--json]` | Print the Character-Creator vocabulary a wearable declares: the cosmetic slot tags, and the genders. |
|
|
72
72
|
|
|
73
73
|
| `helix item distribution create\|list\|update\|disable …` | Manage Marketplace/World Claim or Buy routes without republishing the item or paying another publish fee. |
|
|
74
|
-
| `helix item visual-qa <item-id> [--submit] [--local-critic] [--storage-state <file>] [--host <id…>]` | Render the item's current package version headless in the real runtime (test-grounds world for vehicles and whole avatars, the customiser for add-ons and wearables on every declared host/base, the item viewer for props), measure it, and with `--submit` record the backend's verdict (numeric asserts + vision critic) against that exact version. **
|
|
75
|
-
| `helix item visual-qa <item-id> --package-version <v> [--vehicle-package <file>]` | Render a version the item is **not pinned to yet
|
|
76
|
-
| `helix item set-version <item-id> --package-version <v> --reason <text> [--expected-current-version-id <uuid>] [--as-admin] [--json]` | Move an item to a sealed Package Version of its own package (pin resolved from the public Package API; `POST /api/v1/universal-items/<id>/versions`). The flow for a **listed** item: `continuum publish-package` seals vN → `item
|
|
74
|
+
| `helix item visual-qa <item-id> [--submit] [--local-critic] [--storage-state <file>] [--host <id…>]` | Render the item's current package version headless in the real runtime (test-grounds world for vehicles and whole avatars, the customiser for add-ons and wearables on every declared host/base, the item viewer for props), measure it, and with `--submit` record the backend's verdict (numeric asserts + vision critic) against that exact version. **The visual check is advisory: it records notes with fix hints and never gates listing, distributions or version moves. Only a technical failure (an unusable file, with its plain reason) or content safety blocks.** See [docs/visual-qa.md](docs/visual-qa.md). |
|
|
75
|
+
| `helix item visual-qa <item-id> --package-version <v> [--vehicle-package <file>]` | Render a version the item is **not pinned to yet** and record advisory notes for it before (or after) the pointer moves; the move itself never waits on it. Vehicles and avatars go through Try Now (vehicles also need the move's vehicle package), add-ons and wearables through the customiser; the bundle names the candidate, and the vehicle checksum is the one the server minted for that trial. Never falls back to the current version. See [docs/visual-qa-candidate-versions.md](docs/visual-qa-candidate-versions.md). With `--submit`, a PASS prints the next command (`helix item set-version …`) for a version not moved yet; a 403 for a non-creator says so on the first line; `--status` also lists the item's pending (sealed, not current) versions. |
|
|
76
|
+
| `helix item set-version <item-id> --package-version <v> --reason <text> [--expected-current-version-id <uuid>] [--as-admin] [--json]` | Move an item to a sealed Package Version of its own package (pin resolved from the public Package API; `POST /api/v1/universal-items/<id>/versions`). The flow for a **listed** item: `continuum publish-package` seals vN → `item set-version`; the visual check is advisory and never gates the move. A refusal (a technical failure or content safety) prints the server's plain reason first, then the remedy. An unknown version lists the sealed ones. A **vehicle** moves its car with the pin: the version's sealed root (role `vehicle-definition`) is verified against the manifest and sent as `vehiclePackage`, the same rider `vehicle publish --item` sends; a version without one is refused with a pointer to that resume. A version the item **already had** is a rollback: `PUT /api/v1/universal-items/<id>/versions/current { revision, reason }` (the server restores that revision's retained `vehiclePackage`; a pin-only revision has none and is refused). `--as-admin` (platform admins, for an item another account created) posts the same body to `POST /api/v1/admin/universal-items/<id>/versions`: same gates (visual QA included, no override), `--reason` recorded with you as the actor. |
|
|
77
77
|
| `helix item thumbnail refresh <item-id> [--force] [--dry-run] [--json]` | Re-render a published item's canonical thumbnail from its **active Package Version** with the standard server renderer (`POST /api/v1/universal-items/<id>/thumbnail/regenerate`, owner or admin). Prints the status (`generated` / `current` / `dry-run`), old -> new thumbnail URL, renderer version and the source lane + Package Version. `--dry-run` writes nothing; `--force` re-renders even when the stored thumbnail is current. Moving an item to a new Package Version now refreshes the thumbnail automatically unless you uploaded one. An older backend answers 404 and the CLI says it does not support thumbnail refresh yet. Not the world `helix thumbnail set <slug>` command. |
|
|
78
78
|
| `helix item thumbnail set <item-id> <image> [--json]` | Upload your own thumbnail (png/jpg/webp, up to 10 MiB, checked locally) for a published item (`PUT /api/v1/universal-items/<id>/thumbnail`, moderated). A creator upload stays in place across version moves until you run `thumbnail refresh --force`. 403 = you are not the item's owner. |
|
|
79
79
|
| `helix device create <dir> --id <slug> --title <t> --model <mesh.glb> --template standing-desk\|clock\|television` | Scaffold a GLB-backed `helix.device/1` definition, including the interactive TV/media-player template. There is intentionally no website Device editor. |
|
package/dist/bakeLighting.d.ts
CHANGED
|
@@ -112,7 +112,7 @@ export type BakeTargets = {
|
|
|
112
112
|
};
|
|
113
113
|
export type BakeWrite = {
|
|
114
114
|
path: string;
|
|
115
|
-
kind: 'artifact' | 'contract';
|
|
115
|
+
kind: 'artifact' | 'contract' | 'removed';
|
|
116
116
|
bytes: number;
|
|
117
117
|
/** True when the file did not exist and this run created it. */
|
|
118
118
|
created: boolean;
|
|
@@ -125,15 +125,32 @@ export type BakeLightingOptions = {
|
|
|
125
125
|
timeoutMs?: number | undefined;
|
|
126
126
|
/** Bake through a system browser on the real GPU instead of the bundled SwiftShader build. */
|
|
127
127
|
gpu?: boolean | undefined;
|
|
128
|
+
/** Write the PACKED field (HXB1: float16, coarse level first, content-addressed, a phone tier) and a version 2
|
|
129
|
+
* pointer instead of the JSON store. Plays only on a visual runtime that reads version 2 — see PACKED_NOTE. */
|
|
130
|
+
packed?: boolean | undefined;
|
|
128
131
|
onProgress?: ((message: string) => void) | undefined;
|
|
129
132
|
};
|
|
130
133
|
export type BakeLightingResult = {
|
|
131
134
|
summary: BakeSummary;
|
|
132
135
|
written: BakeWrite[];
|
|
136
|
+
/** Present on a `--packed` run: the byte numbers worth printing. */
|
|
137
|
+
packedReport?: PackedReport | undefined;
|
|
133
138
|
servedDir: string;
|
|
134
139
|
/** THE RECEIPT: which GL renderer actually baked this — the only proof `--gpu` reached hardware. */
|
|
135
140
|
renderer: string | null;
|
|
136
141
|
};
|
|
142
|
+
export type PackedReport = {
|
|
143
|
+
bakeId: string;
|
|
144
|
+
fieldBytes: number;
|
|
145
|
+
firstPlayableBytes: number;
|
|
146
|
+
geometryBytes: number;
|
|
147
|
+
lowBytes: number;
|
|
148
|
+
lowIsField: boolean;
|
|
149
|
+
lowProbes: number;
|
|
150
|
+
jsonBytes: number;
|
|
151
|
+
};
|
|
152
|
+
/** What a `--packed` bake needs from the runtime that will play it — printed with the result. */
|
|
153
|
+
export declare const PACKED_NOTE: string;
|
|
137
154
|
/**
|
|
138
155
|
* Which bundle is served and which roots are written. Mirrors the convention `helix validate` reads the visual
|
|
139
156
|
* contract under: the built bundle serves it from the ROOT, a source tree keeps it in `public/` — so both copies
|
|
@@ -154,6 +171,18 @@ export declare function bootTimeoutForBundle(bundleBytes: number): number;
|
|
|
154
171
|
* `keys` records how many sun keys the field actually holds; omitted, the pointer keeps its older two-field shape.
|
|
155
172
|
*/
|
|
156
173
|
export declare function patchVisualsConfigText(text: string | null, artifact?: string, keys?: number): string;
|
|
174
|
+
/**
|
|
175
|
+
* The PACKED contract patch: `mode: "baked"` plus the version 2 pointer, every other key carried verbatim and in place.
|
|
176
|
+
* `geometry` and `low` are omitted when the bake shipped none; `low` names the field file itself when that file is already
|
|
177
|
+
* inside the phone budget.
|
|
178
|
+
*/
|
|
179
|
+
export declare function patchVisualsConfigPackedText(text: string | null, pointer: {
|
|
180
|
+
artifact: string;
|
|
181
|
+
bakeId: string;
|
|
182
|
+
geometry?: string | undefined;
|
|
183
|
+
low?: string | undefined;
|
|
184
|
+
keys?: number | undefined;
|
|
185
|
+
}): string;
|
|
157
186
|
/**
|
|
158
187
|
* THE GATE. A donated probe whose donor it cannot see is light teleported across a wall, so the artifact is
|
|
159
188
|
* refused rather than written: the run is sound only while this reads 0. Null when the field is clean.
|
|
@@ -163,6 +192,8 @@ export declare function formatDuration(ms: number): string;
|
|
|
163
192
|
export declare function formatBakeProgress(progress: BakeProgress, elapsedMs: number): string;
|
|
164
193
|
/** The compact end-of-run report: what was baked, what it cost, what the audit found, and what landed on disk. */
|
|
165
194
|
export declare function formatBakeSummary(summary: BakeSummary, written: readonly BakeWrite[]): string[];
|
|
195
|
+
/** The delivery numbers of a `--packed` run, against the JSON store the same bake would have written. */
|
|
196
|
+
export declare function formatPackedReport(report: PackedReport): string[];
|
|
166
197
|
/** Page errors FIRST — a VisualInvariantError name is the diagnosis, and the reason below it is the consequence. */
|
|
167
198
|
export declare function composeBakeFailure(reason: string, errors: readonly string[]): string;
|
|
168
199
|
export declare function composeBakeTimeoutDiagnosis(state: HelperTimeoutState, errors: string[]): string;
|
package/dist/bakeLighting.js
CHANGED
|
@@ -33,15 +33,17 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.BOOT_SECONDS_PER_MIB = exports.DEFAULT_BAKE_BOOT_TIMEOUT_S = exports.DEFAULT_BAKE_KEYS = exports.BAKE_ARTIFACT_FILE = exports.BAKE_PARAM = void 0;
|
|
36
|
+
exports.PACKED_NOTE = exports.BOOT_SECONDS_PER_MIB = exports.DEFAULT_BAKE_BOOT_TIMEOUT_S = exports.DEFAULT_BAKE_KEYS = exports.BAKE_ARTIFACT_FILE = exports.BAKE_PARAM = void 0;
|
|
37
37
|
exports.resolveBakeTargets = resolveBakeTargets;
|
|
38
38
|
exports.measureBundleBytes = measureBundleBytes;
|
|
39
39
|
exports.bootTimeoutForBundle = bootTimeoutForBundle;
|
|
40
40
|
exports.patchVisualsConfigText = patchVisualsConfigText;
|
|
41
|
+
exports.patchVisualsConfigPackedText = patchVisualsConfigPackedText;
|
|
41
42
|
exports.bakeGateFailure = bakeGateFailure;
|
|
42
43
|
exports.formatDuration = formatDuration;
|
|
43
44
|
exports.formatBakeProgress = formatBakeProgress;
|
|
44
45
|
exports.formatBakeSummary = formatBakeSummary;
|
|
46
|
+
exports.formatPackedReport = formatPackedReport;
|
|
45
47
|
exports.composeBakeFailure = composeBakeFailure;
|
|
46
48
|
exports.composeBakeTimeoutDiagnosis = composeBakeTimeoutDiagnosis;
|
|
47
49
|
exports.bakeLighting = bakeLighting;
|
|
@@ -61,6 +63,8 @@ const hostSlots_1 = require("./browser/hostSlots");
|
|
|
61
63
|
const nonSystemChrome_1 = require("./browser/nonSystemChrome");
|
|
62
64
|
const launch_1 = require("./browser/launch");
|
|
63
65
|
const staticServe_1 = require("./screenshot/staticServe");
|
|
66
|
+
const encode_1 = require("./bakedPack/encode");
|
|
67
|
+
const fromStoreJson_1 = require("./bakedPack/fromStoreJson");
|
|
64
68
|
const visualsConfig_1 = require("./visualsConfig");
|
|
65
69
|
/** The query parameter that boots a world for baking. `=1` and nothing else. */
|
|
66
70
|
exports.BAKE_PARAM = 'helixBake';
|
|
@@ -79,6 +83,9 @@ const PROGRESS_POLL_MS = 2000;
|
|
|
79
83
|
const PROGRESS_HEARTBEAT_MS = 15000;
|
|
80
84
|
const MAX_DIAGNOSTIC_LINES = 6;
|
|
81
85
|
const DIAGNOSTIC_LINE_MAX_CHARS = 300;
|
|
86
|
+
/** What a `--packed` bake needs from the runtime that will play it — printed with the result. */
|
|
87
|
+
exports.PACKED_NOTE = `The packed pointer is version ${visualsConfig_1.BAKED_LIGHTING_PACKED_VERSION}: a @helix/visual older than the release that reads it ` +
|
|
88
|
+
'refuses the world at boot. Publish it once that release is promoted for the world\'s `visual` range.';
|
|
82
89
|
const isDirectory = (path) => {
|
|
83
90
|
try {
|
|
84
91
|
return (0, node_fs_1.statSync)(path).isDirectory();
|
|
@@ -170,6 +177,40 @@ function patchVisualsConfigText(text, artifact = exports.BAKE_ARTIFACT_FILE, key
|
|
|
170
177
|
// JSON.stringify escapes newlines inside strings, so only the formatting ones are here to convert.
|
|
171
178
|
return style.newline === '\n' ? json : json.replace(/\n/g, style.newline);
|
|
172
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* The PACKED contract patch: `mode: "baked"` plus the version 2 pointer, every other key carried verbatim and in place.
|
|
182
|
+
* `geometry` and `low` are omitted when the bake shipped none; `low` names the field file itself when that file is already
|
|
183
|
+
* inside the phone budget.
|
|
184
|
+
*/
|
|
185
|
+
function patchVisualsConfigPackedText(text, pointer) {
|
|
186
|
+
const source = text !== null && text.trim() !== '' ? text : null;
|
|
187
|
+
const style = detectJsonStyle(source);
|
|
188
|
+
let doc;
|
|
189
|
+
if (source === null) {
|
|
190
|
+
doc = { version: visualsConfig_1.VISUALS_CONFIG_VERSION, mode: 'baked' };
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
const parsed = JSON.parse(source);
|
|
194
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
195
|
+
throw new Error('the visual contract must be a JSON object');
|
|
196
|
+
}
|
|
197
|
+
doc = { ...parsed };
|
|
198
|
+
if (typeof doc.version !== 'number')
|
|
199
|
+
doc.version = visualsConfig_1.VISUALS_CONFIG_VERSION;
|
|
200
|
+
doc.mode = 'baked';
|
|
201
|
+
}
|
|
202
|
+
doc.bakedLighting = {
|
|
203
|
+
version: visualsConfig_1.BAKED_LIGHTING_PACKED_VERSION,
|
|
204
|
+
format: 'hxb1',
|
|
205
|
+
artifact: pointer.artifact,
|
|
206
|
+
bakeId: pointer.bakeId,
|
|
207
|
+
...(pointer.geometry === undefined ? {} : { geometry: pointer.geometry }),
|
|
208
|
+
...(pointer.low === undefined ? {} : { low: pointer.low }),
|
|
209
|
+
...(pointer.keys === undefined ? {} : { keys: pointer.keys }),
|
|
210
|
+
};
|
|
211
|
+
const json = JSON.stringify(doc, null, style.indent) + (style.trailingNewline ? '\n' : '');
|
|
212
|
+
return style.newline === '\n' ? json : json.replace(/\n/g, style.newline);
|
|
213
|
+
}
|
|
173
214
|
/**
|
|
174
215
|
* THE GATE. A donated probe whose donor it cannot see is light teleported across a wall, so the artifact is
|
|
175
216
|
* refused rather than written: the run is sound only while this reads 0. Null when the field is clean.
|
|
@@ -246,10 +287,26 @@ function formatBakeSummary(summary, written) {
|
|
|
246
287
|
lines.push(` ⚠ THE PROBE VOLUME DOES NOT FIT THIS WORLD — only ${fit.litLayers} of ${fit.layers} probe layers sit inside the lit space.`, ` The rest of the ${sx}×${sy}×${sz} m box at [${cx}, ${cy}, ${cz}] baked DARKNESS OR OPEN SKY, and the interpolation`, ' washes that back down over the room — a red or blue smear on ceilings is the usual tell. An interior should', ` author "probes": { "center": [x, y, z], "size": [w, h, d] } in ${visualsConfig_1.VISUALS_CONFIG_FILE} to fit the box to its room,`, ' then re-bake. The probe budget is fixed, so a smaller box costs nothing: the cells shrink to fit.');
|
|
247
288
|
}
|
|
248
289
|
written.forEach((file, index) => {
|
|
249
|
-
lines.push(row(index === 0 ? 'wrote' : '',
|
|
290
|
+
lines.push(row(index === 0 ? 'wrote' : '', file.kind === 'removed'
|
|
291
|
+
? `${file.path} (removed — an earlier packed bake)`
|
|
292
|
+
: `${file.path} (${formatBytes(file.bytes)}${file.created ? ', created' : ''})`));
|
|
250
293
|
});
|
|
251
294
|
return lines;
|
|
252
295
|
}
|
|
296
|
+
/** The delivery numbers of a `--packed` run, against the JSON store the same bake would have written. */
|
|
297
|
+
function formatPackedReport(report) {
|
|
298
|
+
const lines = [
|
|
299
|
+
row('packed', `bake ${report.bakeId} · field ${formatBytes(report.fieldBytes)} (first playable ${formatBytes(report.firstPlayableBytes)}) ` +
|
|
300
|
+
`vs ${formatBytes(report.jsonBytes)} as JSON`),
|
|
301
|
+
];
|
|
302
|
+
if (report.geometryBytes > 0)
|
|
303
|
+
lines.push(row('', `visibility geometry ${formatBytes(report.geometryBytes)} — fetched only by a tier that samples it`));
|
|
304
|
+
lines.push(row('', report.lowIsField
|
|
305
|
+
? `phone tier: the field file itself (${report.lowProbes} probes, inside the phone budget)`
|
|
306
|
+
: `phone tier: ${formatBytes(report.lowBytes)} (${report.lowProbes} probes)`));
|
|
307
|
+
lines.push(row('', exports.PACKED_NOTE));
|
|
308
|
+
return lines;
|
|
309
|
+
}
|
|
253
310
|
/** Page errors FIRST — a VisualInvariantError name is the diagnosis, and the reason below it is the consequence. */
|
|
254
311
|
function composeBakeFailure(reason, errors) {
|
|
255
312
|
if (errors.length === 0)
|
|
@@ -294,9 +351,57 @@ function planWrites(roots, storeJson, keys) {
|
|
|
294
351
|
function commitWrites(planned) {
|
|
295
352
|
return planned.map((write) => {
|
|
296
353
|
(0, node_fs_1.writeFileSync)(write.path, write.text);
|
|
297
|
-
return { path: write.path, kind: write.kind, bytes: Buffer.byteLength(write.text), created: write.created };
|
|
354
|
+
return { path: write.path, kind: write.kind, bytes: typeof write.text === 'string' ? Buffer.byteLength(write.text) : write.text.length, created: write.created };
|
|
298
355
|
});
|
|
299
356
|
}
|
|
357
|
+
/** The packed files' names are content-addressed: `helix.visuals.bake.<id>.bin`, `.geo.bin`, `.low.bin`. */
|
|
358
|
+
const PACKED_FILE = /^helix\.visuals\.bake\.[0-9a-f]+(\.geo|\.low)?\.bin$/;
|
|
359
|
+
// Every file is READ and patched before any is written, as in `planWrites`. The packed files this run replaces — by
|
|
360
|
+
// their own naming — are removed after the new ones land: they are bake products, content-addressed, and an unreferenced
|
|
361
|
+
// one is a megabyte or more of dead weight in the bundle. The JSON store an earlier bake wrote is NOT touched; it is the
|
|
362
|
+
// author's file, and the result says it is now unreferenced.
|
|
363
|
+
function planPackedWrites(roots, packed, keys) {
|
|
364
|
+
const planned = [];
|
|
365
|
+
const stale = [];
|
|
366
|
+
const fieldName = `helix.visuals.bake.${packed.bakeId}.bin`;
|
|
367
|
+
const geometryName = `helix.visuals.bake.${packed.bakeId}.geo.bin`;
|
|
368
|
+
const lowName = `helix.visuals.bake.${packed.bakeId}.low.bin`;
|
|
369
|
+
const files = [[fieldName, packed.field]];
|
|
370
|
+
if (packed.geometry !== null)
|
|
371
|
+
files.push([geometryName, packed.geometry]);
|
|
372
|
+
if (packed.low !== null)
|
|
373
|
+
files.push([lowName, packed.low]);
|
|
374
|
+
const keep = new Set(files.map(([name]) => name));
|
|
375
|
+
for (const root of roots) {
|
|
376
|
+
for (const [name, bytes] of files) {
|
|
377
|
+
const path = (0, node_path_1.join)(root, name);
|
|
378
|
+
planned.push({ path, kind: 'artifact', text: bytes, created: !(0, node_fs_1.existsSync)(path) });
|
|
379
|
+
}
|
|
380
|
+
for (const entry of (0, node_fs_1.readdirSync)(root))
|
|
381
|
+
if (PACKED_FILE.test(entry) && !keep.has(entry))
|
|
382
|
+
stale.push((0, node_path_1.join)(root, entry));
|
|
383
|
+
const configPath = (0, node_path_1.join)(root, visualsConfig_1.VISUALS_CONFIG_FILE);
|
|
384
|
+
const existing = (0, node_fs_1.existsSync)(configPath) ? (0, node_fs_1.readFileSync)(configPath, 'utf8') : null;
|
|
385
|
+
try {
|
|
386
|
+
planned.push({
|
|
387
|
+
path: configPath,
|
|
388
|
+
kind: 'contract',
|
|
389
|
+
text: patchVisualsConfigPackedText(existing, {
|
|
390
|
+
artifact: fieldName,
|
|
391
|
+
bakeId: packed.bakeId,
|
|
392
|
+
geometry: packed.geometry === null ? undefined : geometryName,
|
|
393
|
+
low: packed.low !== null ? lowName : packed.lowIsField ? fieldName : undefined,
|
|
394
|
+
keys,
|
|
395
|
+
}),
|
|
396
|
+
created: existing === null,
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
catch (err) {
|
|
400
|
+
throw new Error(`cannot patch ${configPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return { planned, stale };
|
|
404
|
+
}
|
|
300
405
|
// PAGE-SIDE — runs inside the browser through page.evaluate, so it must close over nothing in this module. The
|
|
301
406
|
// first canvas with a GL context wins; the debug extension unmasks the driver name Chrome otherwise generalizes.
|
|
302
407
|
function readRendererString() {
|
|
@@ -433,6 +538,33 @@ async function bakeLighting(opts) {
|
|
|
433
538
|
const gate = bakeGateFailure(result.summary);
|
|
434
539
|
if (gate)
|
|
435
540
|
throw new Error(composeBakeFailure(gate, pageErrors));
|
|
541
|
+
if (opts.packed === true) {
|
|
542
|
+
// Packed in THIS process from the document the page just produced: the packer is the engine's own code (mirrored
|
|
543
|
+
// in ./bakedPack), so it works with whichever @helix/visual the world was built against.
|
|
544
|
+
const packed = await (0, encode_1.packStore)((0, fromStoreJson_1.packableFromStoreJson)(JSON.parse(result.store)));
|
|
545
|
+
const { planned, stale } = planPackedWrites(targets.roots, packed, result.summary.keys);
|
|
546
|
+
const written = commitWrites(planned);
|
|
547
|
+
for (const path of stale) {
|
|
548
|
+
(0, node_fs_1.rmSync)(path);
|
|
549
|
+
written.push({ path, kind: 'removed', bytes: 0, created: false });
|
|
550
|
+
}
|
|
551
|
+
return {
|
|
552
|
+
summary: result.summary,
|
|
553
|
+
written,
|
|
554
|
+
servedDir: targets.servedDir,
|
|
555
|
+
renderer,
|
|
556
|
+
packedReport: {
|
|
557
|
+
bakeId: packed.bakeId,
|
|
558
|
+
fieldBytes: packed.field.length,
|
|
559
|
+
firstPlayableBytes: packed.report.fieldPhase0Bytes,
|
|
560
|
+
geometryBytes: packed.geometry?.length ?? 0,
|
|
561
|
+
lowBytes: packed.low?.length ?? 0,
|
|
562
|
+
lowIsField: packed.lowIsField,
|
|
563
|
+
lowProbes: packed.report.lowProbes,
|
|
564
|
+
jsonBytes: Buffer.byteLength(result.store),
|
|
565
|
+
},
|
|
566
|
+
};
|
|
567
|
+
}
|
|
436
568
|
return {
|
|
437
569
|
summary: result.summary,
|
|
438
570
|
written: commitWrites(planWrites(targets.roots, result.store, result.summary.keys)),
|
package/dist/bakeLighting.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bakeLighting.js","sourceRoot":"","sources":["../src/bakeLighting.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoMA,gDAkBC;AAGD,gDAQC;AAOD,oDAEC;AAkBD,wDAoBC;AAMD,0CAQC;AAED,wCAKC;AAQD,gDAEC;AAKD,8CA0EC;AAGD,gDAGC;AAKD,kEAUC;AAmDD,oCAiJC;AAvlBD,2GAA2G;AAC3G,0GAA0G;AAC1G,gHAAgH;AAChH,wGAAwG;AACxG,6GAA6G;AAC7G,yIAAyI;AACzI,2IAA2I;AAC3I,uIAAuI;AACvI,2GAA2G;AAC3G,qCAAyF;AACzF,yCAA6D;AAC7D,mEAAmE;AACnE,mDAA4D;AAC5D,+DAAkE;AAElE,6CAO0B;AAC1B,0DAA6D;AAC7D,mDAAsG;AAEtG,gFAAgF;AACnE,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC,uFAAuF;AAC1E,QAAA,kBAAkB,GAAG,yBAAyB,CAAC;AAE5D,kHAAkH;AACrG,QAAA,iBAAiB,GAAG,CAAC,CAAC;AAEnC,sHAAsH;AACzG,QAAA,2BAA2B,GAAG,GAAG,CAAC;AAE/C,gHAAgH;AACnG,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAEvC,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;AAElC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,2GAA2G;AAC3G,8GAA8G;AAC9G,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAiItC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAW,EAAE;IAC5C,IAAI,CAAC;QACH,OAAO,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,gHAAgH;AAChH,gHAAgH;AAChH,2FAA2F;AAC3F,MAAM,aAAa,GAAG,CAAC,GAAW,EAAW,EAAE,CAC7C,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC,IAAI,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,kCAAiB,CAAC,CAAC,CAAC;AAElF;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,SAAiB;IAClD,MAAM,IAAI,GAAG,IAAA,mBAAO,EAAC,SAAS,CAAC,CAAC;IAChC,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,0GAA0G;QAC1G,MAAM,MAAM,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAA,gBAAI,EAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChF,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACtG,CAAC;IACD,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,4EAA4E,kCAAiB,oBAAoB;QACtH,4BAA4B,IAAI,oEAAoE,CACvG,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,KAAK,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;aACtD,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,KAAK,IAAI,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,WAAmB;IACtD,OAAO,IAAI,CAAC,GAAG,CAAC,mCAA2B,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,GAAG,4BAAoB,CAAC,CAAC;AAC9G,CAAC;AAID,+GAA+G;AAC/G,uGAAuG;AACvG,SAAS,eAAe,CAAC,IAAmB;IAC1C,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAC9E,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1G,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,IAAmB,EAAE,WAAmB,0BAAkB,EAAE,IAAa;IAC9G,MAAM,MAAM,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,GAA4B,CAAC;IACjC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,GAAG,GAAG,EAAE,OAAO,EAAE,sCAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAY,CAAC;QAC7C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,GAAG,GAAG,EAAE,GAAI,MAAkC,EAAE,CAAC;QACjD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAAE,GAAG,CAAC,OAAO,GAAG,sCAAsB,CAAC;QAC1E,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;IACrB,CAAC;IACD,GAAG,CAAC,aAAa;QACf,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,sCAAsB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,sCAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3H,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3F,mGAAmG;IACnG,OAAO,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,OAAoB;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;IAC/C,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,CACL,iBAAiB,QAAQ,uFAAuF;QAChH,+GAA+G;QAC/G,kFAAkF,CACnF,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC;IAC5C,IAAI,EAAE,GAAG,KAAK;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACpD,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAAsB,EAAE,SAAiB;IAC1E,OAAO,MAAM,cAAc,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,OAAO,CAAC;AACxG,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,IAAY,EAAU,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;AAErF,kHAAkH;AAClH,SAAgB,iBAAiB,CAAC,OAAoB,EAAE,OAA6B;IACnF,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;SAChD,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC;SAC5C,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC;IAC1G,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC;IAChD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrC,4GAA4G;IAC5G,qCAAqC;IACrC,MAAM,gBAAgB,GAAG,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,WAAW,KAAK,QAAQ,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG;QACZ,WAAW,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,MAAM,OAAO,CAAC,MAAM,UAAU;YAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC7D,GAAG,CACD,QAAQ,EACR,WAAW,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,cAAc,CAAC,MAAM,CAAC,gBAAgB;YAC1F,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAC7F;QACD,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAC7C,UAAU,EACV,GAAG,OAAO,CAAC,SAAS,oDAAoD,MAAM,eAAe;gBAC3F,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChD,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,KAAK,CAChH,CAAC,CAAC;QACH,GAAG,CACD,OAAO,EACP,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,eAAe,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;YAC7F,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,qBAAqB,OAAO,CAAC,KAAK,CAAC,YAAY,UAAU,CACzF;QACD,GAAG,CACD,QAAQ,EACR,GAAG,OAAO,CAAC,OAAO,uBAAuB,OAAO,CAAC,MAAM,CAAC,OAAO,8BAA8B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;YAC1H,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,+BAA+B,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACzH,GAAG,gBAAgB,CAAC,CAAC,CAAC,MAAM,WAAW,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/D;QACD,GAAG,CACD,UAAU,EACV,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;YAC3G,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC;YACtE,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,OAAO,CAAC,UAAU,SAAS,CAAC,CAC1F;QACD,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CACnD,WAAW,EACX,GAAG,OAAO,CAAC,eAAe,UAAU,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,gBAAgB,UAAU,EAAE;gBAC1H,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,CAC3G,CAAC,CAAC;KACJ,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CACR,kHAAkH,EAClH,iHAAiH,CAClH,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QACzC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,KAAK,CAAC,IAAI,CACR,uDAAuD,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,MAAM,yCAAyC,EAC9H,uBAAuB,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,qDAAqD,EACxH,iHAAiH,EACjH,sEAAsE,mCAAmB,8BAA8B,EACvH,uGAAuG,CACxG,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7H,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oHAAoH;AACpH,SAAgB,kBAAkB,CAAC,MAAc,EAAE,MAAyB;IAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,iCAAiC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,MAAM,EAAE,CAAC;AACxG,CAAC;AAED,gHAAgH;AAChH,0GAA0G;AAC1G,iFAAiF;AACjF,SAAgB,2BAA2B,CAAC,KAAyB,EAAE,MAAgB;IACrF,OAAO,IAAA,oCAA2B,EAAC,KAAK,EAAE,MAAM,EAAE;QAChD,MAAM,EACJ,0GAA0G;YAC1G,4GAA4G;YAC5G,wGAAwG;QAC1G,OAAO,EACL,0GAA0G;YAC1G,8BAA8B;KACjC,CAAC,CAAC;AACL,CAAC;AAID,iHAAiH;AACjH,oEAAoE;AACpE,SAAS,UAAU,CAAC,KAAwB,EAAE,SAAiB,EAAE,IAAa;IAC5E,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,0BAAkB,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,IAAA,oBAAU,EAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC5G,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,mCAAmB,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAA,oBAAU,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,0BAAkB,EAAE,IAAI,CAAC;gBAChE,OAAO,EAAE,QAAQ,KAAK,IAAI;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,OAAgC;IACpD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,IAAA,uBAAa,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9G,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+GAA+G;AAC/G,iHAAiH;AACjH,SAAS,kBAAkB;IACzB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAU,EAAE,CAAC;QAC9E,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACnG,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,YAAY,CAAC,IAAyB;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,oBAAoB,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAE7E,MAAM,UAAU,GAAG,wDAAa,YAAY,GAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,OAA4B,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,6BAAoB,GAAE,CAAC,CAAC,CAAC,IAAA,0BAAiB,GAAE,EAAE,CAAC;YAChF,IAAI,CAAC;gBACH,IAAA,uCAAqB,EAAC,SAAS,CAAC,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC/F,OAAO,GAAG,MAAM,IAAA,iCAAqB,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,iBAAiB,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACpK,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzH,SAAS;YACX,CAAC;YACD,UAAU,CAAC,WAAW,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpE,MAAM;QACR,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,IAAA,6BAAoB,EAAC,QAAQ,CAAC,CAAC,CAAC;QAE9D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;QAErG,4GAA4G;QAC5G,mDAAmD;QACnD,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAQ,EAAE;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAClH,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,IAAI,UAAU,CAAC,MAAM,GAAG,oBAAoB;gBAAE,UAAU,CAAC,KAAK,EAAE,CAAC;QACnE,CAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,OAAO;gBAAE,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,aAAa,OAAO,CAAC,SAAS,iBAAiB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,IAAI,KAAK,kBAAU,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,mBAAmB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACtF,UAAU,CACR,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,sBAAsB,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CACjI,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAU,2CAA2C,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACtH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAqB,GAAG,EAAE,CACzD,OAAO,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACjE,CAAC;YACF,MAAM,IAAI,KAAK,CACb,mBAAmB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,sDAAsD;gBACnG,2BAA2B,CAAC,KAAK,EAAE,UAAU,CAAC,CACjD,CAAC;QACJ,CAAC;QAED,4GAA4G;QAC5G,+DAA+D;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAoC,GAAG,EAAE,CAAC,CAAC;YAC3E,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI;YACxC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;SAC9C,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,+BAA+B,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QACjG,CAAC;QAED,0GAA0G;QAC1G,sFAAsF;QACtF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAgB,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1F,IAAI,QAAQ;YAAE,UAAU,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;QAEpD,UAAU,CACR,IAAI,KAAK,SAAS;YAChB,CAAC,CAAC,0FAA0F,yBAAiB,gBAAgB;gBACzH,4BAA4B;YAChC,CAAC,CAAC,2BAA2B,IAAI,gDAAgD,CACpF,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,2GAA2G;QAC3G,2GAA2G;QAC3G,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI;aACb,QAAQ,CACP,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAClB,MAAM,CAAC,WAAW;YAChB,0GAA0G;aACzG,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;aAC1C,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,EAC9F,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CACvB;aACA,IAAI,CACH,CAAC,MAAM,EAAE,EAAE;YACT,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,CAAC,GAAY,EAAE,EAAE;YACf,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,GAAG,CAAC;QACZ,CAAC,CACF,CAAC;QACJ,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,4EAA4E;QAExG,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,OAAO,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAChE,IAAI,OAAO;gBAAE,MAAM;YACnB,IAAI,QAAsB,CAAC;YAC3B,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAe,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpF,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,8DAA8D;YACvE,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;YACrC,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,WAAW,IAAI,qBAAqB,EAAE,CAAC;gBACxE,UAAU,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClD,QAAQ,GAAG,IAAI,CAAC;gBAChB,WAAW,GAAG,OAAO,CAAC;YACxB,CAAC;QACH,CAAC;QAED,IAAI,MAA+C,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,GAAG,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,oBAAoB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QAC1H,CAAC;QAED,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAEhE,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnF,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ;SACT,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YAAC,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC;QAAC,CAAC;gBAAS,CAAC;YAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"bakeLighting.js","sourceRoot":"","sources":["../src/bakeLighting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type HxbHeader } from './hxb.js';
|
|
2
|
+
export type PackedFileRole = 'field' | 'geometry' | 'low';
|
|
3
|
+
export interface PackedFileAudit {
|
|
4
|
+
errors: string[];
|
|
5
|
+
warnings: string[];
|
|
6
|
+
notes: string[];
|
|
7
|
+
/** One line naming what the runtime will play from this file; null when a rule failed. */
|
|
8
|
+
summary: string | null;
|
|
9
|
+
header: HxbHeader | null;
|
|
10
|
+
}
|
|
11
|
+
export interface PackedFileAuditOptions {
|
|
12
|
+
/** The pointer's `bakeId`: every packed file of one bake carries it, and the runtime refuses a mismatch. */
|
|
13
|
+
bakeId: string | null;
|
|
14
|
+
/** The world's `timeOfDay.cycleSeconds`. A ONE-key field under a moving sun is the runtime's boot warning. */
|
|
15
|
+
cycleSeconds?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function auditPackedFile(bytes: Uint8Array, file: string, role: PackedFileRole, options: PackedFileAuditOptions): PackedFileAudit;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// What `helix validate` / `helix publish` check about a PACKED (HXB1) baked-lighting file. CLI-only (not mirrored
|
|
3
|
+
// to the engine): it reads the file's preamble and header — never the payload — and holds it against the pointer
|
|
4
|
+
// that names it, exactly as the runtime does when it opens the file (`loadBakedStore`, `attachGeometry`).
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.auditPackedFile = auditPackedFile;
|
|
7
|
+
const hxb_js_1 = require("./hxb.js");
|
|
8
|
+
/** The kinds a pointer slot may name: the phone-tier slot may name the field file itself (small bakes). */
|
|
9
|
+
const KINDS = { field: ['field'], geometry: ['geometry'], low: ['low', 'field'] };
|
|
10
|
+
const kib = (bytes) => `${(bytes / 1024).toFixed(1)} KiB`;
|
|
11
|
+
function auditPackedFile(bytes, file, role, options) {
|
|
12
|
+
const errors = [];
|
|
13
|
+
const warnings = [];
|
|
14
|
+
const notes = [];
|
|
15
|
+
const fail = (message) => ({ errors: [`${file}: ${message}`], warnings, notes, summary: null, header: null });
|
|
16
|
+
const headerLength = (0, hxb_js_1.readPreamble)(bytes.subarray(0, 8));
|
|
17
|
+
if (headerLength === null) {
|
|
18
|
+
return fail(`not a packed baked-lighting file (no ${hxb_js_1.HXB_MAGIC} magic) — the pointer says version 2, which is the packed container; re-run \`helix bake-lighting --packed\``);
|
|
19
|
+
}
|
|
20
|
+
if (headerLength === 0 || 8 + headerLength > bytes.length)
|
|
21
|
+
return fail(`the header says ${headerLength} bytes but the file holds ${bytes.length} — truncated`);
|
|
22
|
+
let header;
|
|
23
|
+
try {
|
|
24
|
+
header = (0, hxb_js_1.parseHeader)(bytes.subarray(8, 8 + headerLength));
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
return fail(`unreadable header: ${error instanceof Error ? error.message : String(error)}`);
|
|
28
|
+
}
|
|
29
|
+
if (!KINDS[role].includes(header.kind)) {
|
|
30
|
+
errors.push(`${file}: this is a "${header.kind}" file but the pointer names it as the ${role} file`);
|
|
31
|
+
}
|
|
32
|
+
if (options.bakeId !== null && header.bakeId !== options.bakeId) {
|
|
33
|
+
errors.push(`${file}: bake id ${header.bakeId} does not match the pointer's ${options.bakeId} — the runtime refuses a mixed pair; re-run \`helix bake-lighting --packed\` and ship every file it writes`);
|
|
34
|
+
}
|
|
35
|
+
const expected = 8 + headerLength + header.bytes;
|
|
36
|
+
if (bytes.length !== expected) {
|
|
37
|
+
errors.push(`${file}: the header promises ${expected} bytes but the file holds ${bytes.length} — ${bytes.length < expected ? 'truncated' : 'trailing bytes'}`);
|
|
38
|
+
}
|
|
39
|
+
for (const section of header.sections) {
|
|
40
|
+
if (section.o < 0 || section.o + section.n > header.bytes) {
|
|
41
|
+
errors.push(`${file}: a ${section.t} section runs past the payload — the file is corrupt`);
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (!Number.isInteger(header.probeCount) || header.probeCount <= 0)
|
|
46
|
+
errors.push(`${file}: probeCount must be a positive integer (got ${String(header.probeCount)})`);
|
|
47
|
+
if (role !== 'geometry') {
|
|
48
|
+
if (header.keys.length === 0)
|
|
49
|
+
errors.push(`${file}: the field carries no sun keys`);
|
|
50
|
+
if (header.keys.length === 1 && (options.cycleSeconds ?? 0) > 0) {
|
|
51
|
+
errors.push(`${file}: this field carries ONE sun key but this world's sun CYCLES — the indirect light is pinned to the baked hour ` +
|
|
52
|
+
'while the sky moves; re-bake with `helix bake-lighting --keys N`');
|
|
53
|
+
}
|
|
54
|
+
if (!header.sections.some((section) => section.t === 'sh' && section.ph === 0)) {
|
|
55
|
+
errors.push(`${file}: the field has no first-playable lighting section — the runtime would wait for the whole download`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const phase0 = header.sections.filter((section) => section.ph === 0).reduce((total, section) => total + section.n, 0);
|
|
59
|
+
const summary = errors.length
|
|
60
|
+
? null
|
|
61
|
+
: role === 'geometry'
|
|
62
|
+
? `${file}: baked geometry (hxb1) · ${header.probeCount} probes · visibility tiers only`
|
|
63
|
+
: `${file}: baked ${role === 'low' ? 'low (phone) field' : 'field'} (hxb1) · ${header.probeCount} probes · ${header.keys.length} keys · ${header.volumes.length} volume${header.volumes.length === 1 ? '' : 's'}`
|
|
64
|
+
+ ` · first playable ${kib(8 + headerLength + phase0)} of ${kib(bytes.length)}`;
|
|
65
|
+
return { errors, warnings, notes, summary, header };
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/bakedPack/audit.ts"],"names":[],"mappings":";AAAA,kHAAkH;AAClH,iHAAiH;AACjH,0GAA0G;;AA2B1G,0CAuDC;AAhFD,qCAA8F;AAoB9F,2GAA2G;AAC3G,MAAM,KAAK,GAAsC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;AAErH,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAE1E,SAAgB,eAAe,CAAC,KAAiB,EAAE,IAAY,EAAE,IAAoB,EAAE,OAA+B;IACpH,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,OAAe,EAAmB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvI,MAAM,YAAY,GAAG,IAAA,qBAAY,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,wCAAwC,kBAAS,8GAA8G,CAAC,CAAC;IAC/K,CAAC;IACD,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,mBAAmB,YAAY,6BAA6B,KAAK,CAAC,MAAM,cAAc,CAAC,CAAC;IAC/J,IAAI,MAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,IAAA,oBAAW,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,gBAAgB,MAAM,CAAC,IAAI,0CAA0C,IAAI,OAAO,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAa,MAAM,CAAC,MAAM,iCAAiC,OAAO,CAAC,MAAM,4GAA4G,CAAC,CAAC;IAC5M,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,yBAAyB,QAAQ,6BAA6B,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACjK,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,OAAO,CAAC,CAAC,sDAAsD,CAAC,CAAC;YAC3F,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,gDAAgD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrK,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,iCAAiC,CAAC,CAAC;QACpF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,gHAAgH;gBACrH,kEAAkE,CACrE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/E,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,oGAAoG,CAAC,CAAC;QAC3H,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM;QAC3B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,KAAK,UAAU;YACnB,CAAC,CAAC,GAAG,IAAI,6BAA6B,MAAM,CAAC,UAAU,iCAAiC;YACxF,CAAC,CAAC,GAAG,IAAI,WAAW,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,aAAa,MAAM,CAAC,UAAU,aAAa,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;kBAC7M,qBAAqB,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IACtF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MIRRORED, byte for byte, in helix-creator-cli `src/bakedPack/encode.ts` (with `hxb.ts`): `helix bake-lighting --packed`
|
|
3
|
+
* packs the field it just took with that copy. Change both together (the CLI's header names the check).
|
|
4
|
+
*
|
|
5
|
+
* The HXB1 PACKER. Isomorphic on purpose — `CompressionStream` and `crypto.subtle` exist in the browser the bake driver
|
|
6
|
+
* runs in AND in node (`scripts/pack-baked-field.mjs`, the tests) — so `helix bake-lighting --packed` packs inside the
|
|
7
|
+
* page, from the field it just took, with no copy of this code in the CLI. Not part of the runtime's play path: nothing
|
|
8
|
+
* in the barrel imports it, and the bake driver reaches it by dynamic import so a playing world never loads it.
|
|
9
|
+
*/
|
|
10
|
+
import type { PackableStore } from './packTypes.js';
|
|
11
|
+
import type { Vec3 } from './hxb.js';
|
|
12
|
+
export interface PackOptions {
|
|
13
|
+
/** Level 0 is refined until it holds at most this many probes. Default 64. */
|
|
14
|
+
coarseProbes?: number;
|
|
15
|
+
/** Probes per refinement block per axis. Default 8. */
|
|
16
|
+
cell?: Vec3;
|
|
17
|
+
/** Where refinement starts, world metres. Default: the world volume's centre. */
|
|
18
|
+
focus?: Vec3;
|
|
19
|
+
/** The phone tier. `false` skips it; `maxProbes` bounds the resampled lattice (default 512 — 56 KB of lighting for a
|
|
20
|
+
* one-key world, far under the 300 KB a phone is allowed). A lattice already inside the bound is not resampled and
|
|
21
|
+
* gets no file of its own: `lowIsField` says the field file IS the phone tier. */
|
|
22
|
+
low?: false | {
|
|
23
|
+
maxProbes?: number;
|
|
24
|
+
};
|
|
25
|
+
/** Emit the geometry file when the store carries geometry. Default true. */
|
|
26
|
+
geometry?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface PackReport {
|
|
29
|
+
fieldBytes: number;
|
|
30
|
+
fieldPhase0Bytes: number;
|
|
31
|
+
geometryBytes: number;
|
|
32
|
+
lowBytes: number;
|
|
33
|
+
lowProbes: number;
|
|
34
|
+
levels: number[];
|
|
35
|
+
sections: number;
|
|
36
|
+
}
|
|
37
|
+
export interface PackedBake {
|
|
38
|
+
bakeId: string;
|
|
39
|
+
field: Uint8Array;
|
|
40
|
+
geometry: Uint8Array | null;
|
|
41
|
+
/** The coarse phone-tier container; null when `lowIsField` or when asked not to pack one. */
|
|
42
|
+
low: Uint8Array | null;
|
|
43
|
+
/** The lattice already fits the phone budget, so the field file is read whole on a phone. */
|
|
44
|
+
lowIsField: boolean;
|
|
45
|
+
report: PackReport;
|
|
46
|
+
}
|
|
47
|
+
/** Halves the cell count of the longest axis until the lattice fits `maxProbes`. */
|
|
48
|
+
export declare function lowLattice(dims: Vec3, maxProbes: number): Vec3;
|
|
49
|
+
/** The same lighting on the lattice `lowLattice` picks for each volume. SH is linear, so interpolation is exact. */
|
|
50
|
+
export declare function resampleStore(store: PackableStore, maxProbes: number): PackableStore;
|
|
51
|
+
/** Lane-planar float16 depth, the second lane stored as variance (see the header of hxb.ts). */
|
|
52
|
+
export declare function depthToBytes(depth: Float32Array, lanes: number): Uint8Array;
|
|
53
|
+
export declare function packStore(store: PackableStore, options?: PackOptions): Promise<PackedBake>;
|