@helix3/helix-cli 0.1.14-helix3.172 → 0.1.14-helix3.174
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +1 -0
- package/dist/api.js +13 -9
- package/dist/api.js.map +1 -1
- package/dist/bakeLighting.d.ts +46 -4
- package/dist/bakeLighting.js +104 -23
- package/dist/bakeLighting.js.map +1 -1
- package/dist/browser/launch.d.ts +2 -0
- package/dist/browser/launch.js +19 -2
- package/dist/browser/launch.js.map +1 -1
- package/dist/bundle.js +16 -1
- package/dist/bundle.js.map +1 -1
- package/dist/continuum/adminPackagePinCommand.d.ts +14 -0
- package/dist/continuum/adminPackagePinCommand.js +46 -0
- package/dist/continuum/adminPackagePinCommand.js.map +1 -0
- package/dist/continuum/client.d.ts +5 -0
- package/dist/continuum/client.js +4 -0
- package/dist/continuum/client.js.map +1 -1
- package/dist/continuum/workflow.js +2 -0
- package/dist/continuum/workflow.js.map +1 -1
- package/dist/device.d.ts +1 -1
- package/dist/device.js +165 -1
- package/dist/device.js.map +1 -1
- package/dist/index.js +34 -11
- package/dist/index.js.map +1 -1
- package/dist/item.d.ts +2 -0
- package/dist/item.js +4 -0
- package/dist/item.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/verifySubPath.d.ts +9 -0
- package/dist/verifySubPath.js +33 -6
- package/dist/verifySubPath.js.map +1 -1
- package/dist/visualsConfig.d.ts +16 -2
- package/dist/visualsConfig.js +414 -28
- package/dist/visualsConfig.js.map +1 -1
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
package/dist/api.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HelixApi = exports.ApiError = void 0;
|
|
3
|
+
exports.HelixApi = exports.ApiError = exports.API_FETCH_TIMEOUT_MS = void 0;
|
|
4
4
|
exports.uploadToTicket = uploadToTicket;
|
|
5
|
+
exports.API_FETCH_TIMEOUT_MS = 30_000;
|
|
6
|
+
function withTimeout(init) {
|
|
7
|
+
return { ...init, signal: AbortSignal.timeout(exports.API_FETCH_TIMEOUT_MS) };
|
|
8
|
+
}
|
|
5
9
|
class ApiError extends Error {
|
|
6
10
|
status;
|
|
7
11
|
body;
|
|
@@ -38,14 +42,14 @@ class HelixApi {
|
|
|
38
42
|
this.token = token;
|
|
39
43
|
}
|
|
40
44
|
async request(method, path, body) {
|
|
41
|
-
const res = await fetch(`${this.baseUrl}${path}`, {
|
|
45
|
+
const res = await fetch(`${this.baseUrl}${path}`, withTimeout({
|
|
42
46
|
method,
|
|
43
47
|
headers: {
|
|
44
48
|
'content-type': 'application/json',
|
|
45
49
|
...(this.token ? { authorization: `Bearer ${this.token}` } : {}),
|
|
46
50
|
},
|
|
47
51
|
body: body === undefined ? undefined : JSON.stringify(body),
|
|
48
|
-
});
|
|
52
|
+
}));
|
|
49
53
|
if (!res.ok) {
|
|
50
54
|
const problem = (await res.json().catch(() => ({})));
|
|
51
55
|
throw new ApiError(res.status, problem);
|
|
@@ -60,10 +64,10 @@ class HelixApi {
|
|
|
60
64
|
return envelope.item;
|
|
61
65
|
}
|
|
62
66
|
async requestBytes(path) {
|
|
63
|
-
const res = await fetch(`${this.baseUrl}${path}`, {
|
|
67
|
+
const res = await fetch(`${this.baseUrl}${path}`, withTimeout({
|
|
64
68
|
method: 'GET',
|
|
65
69
|
headers: this.token ? { authorization: `Bearer ${this.token}` } : {},
|
|
66
|
-
});
|
|
70
|
+
}));
|
|
67
71
|
if (!res.ok) {
|
|
68
72
|
const problem = (await res.json().catch(() => ({})));
|
|
69
73
|
throw new ApiError(res.status, problem);
|
|
@@ -85,11 +89,11 @@ class HelixApi {
|
|
|
85
89
|
// The same transport for the multipart endpoints that REPLACE rather than
|
|
86
90
|
// create (achievement icon/trophy are PUTs).
|
|
87
91
|
async sendMultipart(method, path, form) {
|
|
88
|
-
const res = await fetch(`${this.baseUrl}${path}`, {
|
|
92
|
+
const res = await fetch(`${this.baseUrl}${path}`, withTimeout({
|
|
89
93
|
method,
|
|
90
94
|
headers: this.token ? { authorization: `Bearer ${this.token}` } : {},
|
|
91
95
|
body: form,
|
|
92
|
-
});
|
|
96
|
+
}));
|
|
93
97
|
if (!res.ok) {
|
|
94
98
|
const problem = (await res.json().catch(() => ({})));
|
|
95
99
|
throw new ApiError(res.status, problem);
|
|
@@ -107,14 +111,14 @@ exports.HelixApi = HelixApi;
|
|
|
107
111
|
// uploads, Cache-Control) are part of the signature, so the client must echo
|
|
108
112
|
// them exactly or R2 rejects the PUT with a signature mismatch.
|
|
109
113
|
async function uploadToTicket(url, body, contentType, cacheControl) {
|
|
110
|
-
const res = await fetch(url, {
|
|
114
|
+
const res = await fetch(url, withTimeout({
|
|
111
115
|
method: 'PUT',
|
|
112
116
|
body: new Uint8Array(body),
|
|
113
117
|
headers: {
|
|
114
118
|
'content-type': contentType,
|
|
115
119
|
...(cacheControl ? { 'cache-control': cacheControl } : {}),
|
|
116
120
|
},
|
|
117
|
-
});
|
|
121
|
+
}));
|
|
118
122
|
if (!res.ok) {
|
|
119
123
|
throw new Error(`upload failed (${res.status}): ${await res.text().catch(() => '')}`);
|
|
120
124
|
}
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/bakeLighting.d.ts
CHANGED
|
@@ -3,11 +3,13 @@ import { type HelperTimeoutState } from './browser/launch';
|
|
|
3
3
|
export declare const BAKE_PARAM = "helixBake";
|
|
4
4
|
/** The artifact the bake writes, next to the visual contract it is pointed at from. */
|
|
5
5
|
export declare const BAKE_ARTIFACT_FILE = "helix.visuals.bake.json";
|
|
6
|
-
/** K sun keys, the driver's own default. Below 2 the planner cannot place both horizon keys. */
|
|
6
|
+
/** K sun keys for a CYCLING sun, the driver's own default. Below 2 the planner cannot place both horizon keys. */
|
|
7
7
|
export declare const DEFAULT_BAKE_KEYS = 9;
|
|
8
|
-
/** Boot budget. SwiftShader boots a world minutes slower than a real GPU, so this is seconds-times-hundreds. */
|
|
8
|
+
/** Boot budget FLOOR. SwiftShader boots a world minutes slower than a real GPU, so this is seconds-times-hundreds. */
|
|
9
9
|
export declare const DEFAULT_BAKE_BOOT_TIMEOUT_S = 300;
|
|
10
|
-
|
|
10
|
+
/** How much boot budget a megabyte of bundle buys itself — SwiftShader decodes, uploads and compiles it all. */
|
|
11
|
+
export declare const BOOT_SECONDS_PER_MIB = 20;
|
|
12
|
+
export type BakePhase = 'idle' | 'warm-up' | 'relocate' | 'audit' | 'key' | 'practicals' | 'geometry' | 'done' | 'failed';
|
|
11
13
|
export type BakeProgress = {
|
|
12
14
|
phase: BakePhase;
|
|
13
15
|
done: number;
|
|
@@ -64,7 +66,26 @@ export type BakeSummary = {
|
|
|
64
66
|
/** OPTIONAL against the ENGINE, not against the contract: a world bundles its own @helix/visual, so a build
|
|
65
67
|
* made before the volume-fit verdict existed reports no `volumeFit` at all and simply gets no warning. */
|
|
66
68
|
volumeFit?: BakeVolumeFitSummary;
|
|
69
|
+
/** True when the world's sun does not move (`timeOfDay.cycleSeconds: 0`), which is what makes ONE key correct.
|
|
70
|
+
* OPTIONAL like volumeFit: a world bundling an older @helix/visual reports none, and the label is dropped. */
|
|
71
|
+
staticSun?: boolean;
|
|
72
|
+
/** Radiance passes each key was captured with — the authored `probes.bounces`, 1 being the direct pass alone.
|
|
73
|
+
* OPTIONAL like volumeFit. */
|
|
74
|
+
bounces?: number;
|
|
75
|
+
/** 3D-texture slices this field's atlas asks for. Probes enter it linearly, so a budget that clears the 2048
|
|
76
|
+
* desktop limit can still fail to allocate on a phone, where GLES3 only guarantees 256. OPTIONAL like volumeFit. */
|
|
77
|
+
atlasDepth?: number;
|
|
78
|
+
/** The relocation pre-pass, before the first key: probes moved out through the nearest backface, probes still
|
|
79
|
+
* over the gate after the clamp (the de-ghost's candidates), and its wall time. OPTIONAL like volumeFit. */
|
|
80
|
+
relocated?: number;
|
|
81
|
+
stillBuried?: number;
|
|
82
|
+
/** Relocation pushes REFUSED because the destination left the volume box. OPTIONAL like volumeFit. */
|
|
83
|
+
rejectedOutsideBox?: number;
|
|
84
|
+
relocationMs?: number;
|
|
67
85
|
repairs: number;
|
|
86
|
+
/** Probes DEACTIVATED: buried with no visible donor, so their SH ships zeroed and their validity flag tells the
|
|
87
|
+
* sampler to weight them at nothing. OPTIONAL like volumeFit. */
|
|
88
|
+
inactive?: number;
|
|
68
89
|
volume: {
|
|
69
90
|
probes: [number, number, number];
|
|
70
91
|
size: [number, number, number];
|
|
@@ -74,6 +95,13 @@ export type BakeSummary = {
|
|
|
74
95
|
geometry: boolean;
|
|
75
96
|
fieldBytes: number;
|
|
76
97
|
geometryBytes: number;
|
|
98
|
+
/** The baked per-probe occlusion volume (visual >= 0.1.1). OPTIONAL like volumeFit: a world bundling an older
|
|
99
|
+
* @helix/visual reports none. */
|
|
100
|
+
occlusionVoxels?: number;
|
|
101
|
+
/** Voxels sealed inside geometry that the validity dilation filled from a face neighbour. OPTIONAL like volumeFit. */
|
|
102
|
+
occlusionDilated?: number;
|
|
103
|
+
occlusionBytes?: number;
|
|
104
|
+
occlusionMs?: number;
|
|
77
105
|
};
|
|
78
106
|
/** Where the bake serves from and which roots take the artifact + the pointer. */
|
|
79
107
|
export type BakeTargets = {
|
|
@@ -91,15 +119,20 @@ export type BakeWrite = {
|
|
|
91
119
|
};
|
|
92
120
|
export type BakeLightingOptions = {
|
|
93
121
|
directory: string;
|
|
122
|
+
/** An EXPLICIT key count. Omitted, the engine plans them off the world's own sun. */
|
|
94
123
|
keys?: number | undefined;
|
|
95
124
|
/** Boot budget in ms — the wait for `window.__helixBake`, NOT a cap on the bake itself. */
|
|
96
125
|
timeoutMs?: number | undefined;
|
|
126
|
+
/** Bake through a system browser on the real GPU instead of the bundled SwiftShader build. */
|
|
127
|
+
gpu?: boolean | undefined;
|
|
97
128
|
onProgress?: ((message: string) => void) | undefined;
|
|
98
129
|
};
|
|
99
130
|
export type BakeLightingResult = {
|
|
100
131
|
summary: BakeSummary;
|
|
101
132
|
written: BakeWrite[];
|
|
102
133
|
servedDir: string;
|
|
134
|
+
/** THE RECEIPT: which GL renderer actually baked this — the only proof `--gpu` reached hardware. */
|
|
135
|
+
renderer: string | null;
|
|
103
136
|
};
|
|
104
137
|
/**
|
|
105
138
|
* Which bundle is served and which roots are written. Mirrors the convention `helix validate` reads the visual
|
|
@@ -107,11 +140,20 @@ export type BakeLightingResult = {
|
|
|
107
140
|
* are patched, leaving the just-baked build publishable and the next build carrying the same pointer.
|
|
108
141
|
*/
|
|
109
142
|
export declare function resolveBakeTargets(directory: string): BakeTargets;
|
|
143
|
+
/** Every byte the browser may have to fetch, decode and upload before the handle appears. */
|
|
144
|
+
export declare function measureBundleBytes(dir: string): number;
|
|
145
|
+
/**
|
|
146
|
+
* The boot budget, in seconds, for a bundle of this size. A fixed deadline is wrong in both directions —
|
|
147
|
+
* SwiftShader spends minutes on a heavy world's first frame, and a 45 MiB one blew a 300 s budget outright — so
|
|
148
|
+
* the wait scales with what the browser has to chew through, never dropping below the floor.
|
|
149
|
+
*/
|
|
150
|
+
export declare function bootTimeoutForBundle(bundleBytes: number): number;
|
|
110
151
|
/**
|
|
111
152
|
* The contract patch: `mode: "baked"` plus the artifact pointer, every other key carried verbatim and in place.
|
|
112
153
|
* `null` text creates the minimal v1 document — a world may declare no visual contract at all until it is baked.
|
|
154
|
+
* `keys` records how many sun keys the field actually holds; omitted, the pointer keeps its older two-field shape.
|
|
113
155
|
*/
|
|
114
|
-
export declare function patchVisualsConfigText(text: string | null, artifact?: string): string;
|
|
156
|
+
export declare function patchVisualsConfigText(text: string | null, artifact?: string, keys?: number): string;
|
|
115
157
|
/**
|
|
116
158
|
* THE GATE. A donated probe whose donor it cannot see is light teleported across a wall, so the artifact is
|
|
117
159
|
* refused rather than written: the run is sound only while this reads 0. Null when the field is clean.
|
package/dist/bakeLighting.js
CHANGED
|
@@ -33,8 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.DEFAULT_BAKE_BOOT_TIMEOUT_S = exports.DEFAULT_BAKE_KEYS = exports.BAKE_ARTIFACT_FILE = exports.BAKE_PARAM = void 0;
|
|
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;
|
|
37
37
|
exports.resolveBakeTargets = resolveBakeTargets;
|
|
38
|
+
exports.measureBundleBytes = measureBundleBytes;
|
|
39
|
+
exports.bootTimeoutForBundle = bootTimeoutForBundle;
|
|
38
40
|
exports.patchVisualsConfigText = patchVisualsConfigText;
|
|
39
41
|
exports.bakeGateFailure = bakeGateFailure;
|
|
40
42
|
exports.formatDuration = formatDuration;
|
|
@@ -47,9 +49,11 @@ exports.bakeLighting = bakeLighting;
|
|
|
47
49
|
// in-page bake handle (window.__helixBake) over Playwright, then writes the field artifact and points the
|
|
48
50
|
// world's visual contract at it. Nothing here imports the engine — this module only speaks its window protocol.
|
|
49
51
|
// SYNC OBLIGATION: mirrors helix-web-engine-new/systems/visual/src/runtime/bakeDriver.ts — `BAKE_PARAM`
|
|
50
|
-
// ('helixBake'), `BAKE_HANDLE_KEY` ('__helixBake'), the ready/failed handle shapes,
|
|
51
|
-
// `
|
|
52
|
-
//
|
|
52
|
+
// ('helixBake'), `BAKE_HANDLE_KEY` ('__helixBake'), the ready/failed handle shapes, the `BakeSummary` (incl.
|
|
53
|
+
// `staticSun`, `bounces`, `atlasDepth`, `relocated`/`stillBuried`/`rejectedOutsideBox`/`relocationMs`, `inactive`, `occlusionDilated`) /
|
|
54
|
+
// `BakeProgress` (incl. the `relocate` phase) fields read below, and `run({})` with NO keys at all — omitting them is what asks the ENGINE
|
|
55
|
+
// to plan them (one key for a static sun, DEFAULT_BAKE_KEYS for a cycling one). Fix protocol bugs there first, then mirror here; drift
|
|
56
|
+
// surfaces as a missing field at the END of a multi-minute run, so it has to be findable from either side.
|
|
53
57
|
const node_fs_1 = require("node:fs");
|
|
54
58
|
const node_path_1 = require("node:path");
|
|
55
59
|
const helix_manifest_1 = require("@hypersoniclabs/helix-manifest");
|
|
@@ -60,10 +64,13 @@ const visualsConfig_1 = require("./visualsConfig");
|
|
|
60
64
|
exports.BAKE_PARAM = 'helixBake';
|
|
61
65
|
/** The artifact the bake writes, next to the visual contract it is pointed at from. */
|
|
62
66
|
exports.BAKE_ARTIFACT_FILE = 'helix.visuals.bake.json';
|
|
63
|
-
/** K sun keys, the driver's own default. Below 2 the planner cannot place both horizon keys. */
|
|
67
|
+
/** K sun keys for a CYCLING sun, the driver's own default. Below 2 the planner cannot place both horizon keys. */
|
|
64
68
|
exports.DEFAULT_BAKE_KEYS = 9;
|
|
65
|
-
/** Boot budget. SwiftShader boots a world minutes slower than a real GPU, so this is seconds-times-hundreds. */
|
|
69
|
+
/** Boot budget FLOOR. SwiftShader boots a world minutes slower than a real GPU, so this is seconds-times-hundreds. */
|
|
66
70
|
exports.DEFAULT_BAKE_BOOT_TIMEOUT_S = 300;
|
|
71
|
+
/** How much boot budget a megabyte of bundle buys itself — SwiftShader decodes, uploads and compiles it all. */
|
|
72
|
+
exports.BOOT_SECONDS_PER_MIB = 20;
|
|
73
|
+
const BYTES_PER_MIB = 1024 * 1024;
|
|
67
74
|
const PROGRESS_POLL_MS = 2000;
|
|
68
75
|
// A 2 s poll over a multi-minute bake would print hundreds of identical lines, so a line goes out when the
|
|
69
76
|
// phase/key count MOVES and otherwise on this heartbeat — which is what tells a stalled bake from a slow key.
|
|
@@ -104,6 +111,26 @@ function resolveBakeTargets(directory) {
|
|
|
104
111
|
throw new Error(`${root} has no built bundle — bake-lighting bakes the BUILT world (index.html + ${helix_manifest_1.MANIFEST_FILENAME}), not the source ` +
|
|
105
112
|
`project. Expected one at ${dist} or at the directory itself; run your build first (npm run build).`);
|
|
106
113
|
}
|
|
114
|
+
/** Every byte the browser may have to fetch, decode and upload before the handle appears. */
|
|
115
|
+
function measureBundleBytes(dir) {
|
|
116
|
+
let total = 0;
|
|
117
|
+
for (const entry of (0, node_fs_1.readdirSync)(dir, { withFileTypes: true })) {
|
|
118
|
+
const path = (0, node_path_1.join)(dir, entry.name);
|
|
119
|
+
if (entry.isDirectory())
|
|
120
|
+
total += measureBundleBytes(path);
|
|
121
|
+
else if (entry.isFile())
|
|
122
|
+
total += (0, node_fs_1.statSync)(path).size;
|
|
123
|
+
}
|
|
124
|
+
return total;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The boot budget, in seconds, for a bundle of this size. A fixed deadline is wrong in both directions —
|
|
128
|
+
* SwiftShader spends minutes on a heavy world's first frame, and a 45 MiB one blew a 300 s budget outright — so
|
|
129
|
+
* the wait scales with what the browser has to chew through, never dropping below the floor.
|
|
130
|
+
*/
|
|
131
|
+
function bootTimeoutForBundle(bundleBytes) {
|
|
132
|
+
return Math.max(exports.DEFAULT_BAKE_BOOT_TIMEOUT_S, Math.ceil(bundleBytes / BYTES_PER_MIB) * exports.BOOT_SECONDS_PER_MIB);
|
|
133
|
+
}
|
|
107
134
|
// Rewriting a hand-authored document with a different indent (or a flipped line ending) turns a two-line patch
|
|
108
135
|
// into a whole-file diff in the creator's repo, so the shape is read off the file rather than assumed.
|
|
109
136
|
function detectJsonStyle(text) {
|
|
@@ -116,8 +143,9 @@ function detectJsonStyle(text) {
|
|
|
116
143
|
/**
|
|
117
144
|
* The contract patch: `mode: "baked"` plus the artifact pointer, every other key carried verbatim and in place.
|
|
118
145
|
* `null` text creates the minimal v1 document — a world may declare no visual contract at all until it is baked.
|
|
146
|
+
* `keys` records how many sun keys the field actually holds; omitted, the pointer keeps its older two-field shape.
|
|
119
147
|
*/
|
|
120
|
-
function patchVisualsConfigText(text, artifact = exports.BAKE_ARTIFACT_FILE) {
|
|
148
|
+
function patchVisualsConfigText(text, artifact = exports.BAKE_ARTIFACT_FILE, keys) {
|
|
121
149
|
const source = text !== null && text.trim() !== '' ? text : null;
|
|
122
150
|
const style = detectJsonStyle(source);
|
|
123
151
|
let doc;
|
|
@@ -134,7 +162,8 @@ function patchVisualsConfigText(text, artifact = exports.BAKE_ARTIFACT_FILE) {
|
|
|
134
162
|
doc.version = visualsConfig_1.VISUALS_CONFIG_VERSION;
|
|
135
163
|
doc.mode = 'baked';
|
|
136
164
|
}
|
|
137
|
-
doc.bakedLighting =
|
|
165
|
+
doc.bakedLighting =
|
|
166
|
+
keys === undefined ? { version: visualsConfig_1.BAKED_LIGHTING_VERSION, artifact } : { version: visualsConfig_1.BAKED_LIGHTING_VERSION, artifact, keys };
|
|
138
167
|
const json = JSON.stringify(doc, null, style.indent) + (style.trailingNewline ? '\n' : '');
|
|
139
168
|
// JSON.stringify escapes newlines inside strings, so only the formatting ones are here to convert.
|
|
140
169
|
return style.newline === '\n' ? json : json.replace(/\n/g, style.newline);
|
|
@@ -178,15 +207,32 @@ function formatBakeSummary(summary, written) {
|
|
|
178
207
|
.filter(([, count]) => count > 0)
|
|
179
208
|
.map(([issue, count]) => `${issue} ${count}`)
|
|
180
209
|
.join(', ');
|
|
210
|
+
const sun = summary.staticSun === undefined ? '' : ` (${summary.staticSun ? 'static sun' : 'sun cycle'})`;
|
|
211
|
+
const buried = summary.stillBuried ?? 0;
|
|
212
|
+
const refused = summary.rejectedOutsideBox ?? 0;
|
|
213
|
+
const { leftDark } = summary.repair;
|
|
214
|
+
const deactivated = summary.inactive;
|
|
215
|
+
// Only when the left-dark wording below did NOT already name them: at leftDark 0 it never prints, so a zero
|
|
216
|
+
// deactivation still reports itself.
|
|
217
|
+
const countDeactivated = deactivated !== undefined && !(leftDark > 0 && deactivated === leftDark);
|
|
181
218
|
const lines = [
|
|
182
|
-
`✔ Baked ${summary.keys} keys + practicals · ${summary.probes} probes
|
|
219
|
+
`✔ Baked ${summary.keys} key${summary.keys === 1 ? '' : 's'} + practicals${sun} · ${summary.probes} probes ` +
|
|
220
|
+
`(${px}×${py}×${pz}) in ${formatDuration(summary.totalMs)}`,
|
|
183
221
|
row('phases', `warm-up ${formatDuration(summary.warmUpMs)} · keys ${formatDuration(keysMs)} · practicals ` +
|
|
184
222
|
`${formatDuration(summary.practicalsMs)} · geometry ${formatDuration(summary.geometryMs)}`),
|
|
223
|
+
...(summary.relocated === undefined ? [] : [row('relocate', `${summary.relocated} probes moved out through the nearest backface · ${buried} still buried` +
|
|
224
|
+
`${buried > 0 ? ' (left to the de-ghost)' : ''}` +
|
|
225
|
+
`${refused > 0 ? ` · ${refused} refused at the box edge` : ''} · ${Math.round(summary.relocationMs ?? 0)} ms`)]),
|
|
185
226
|
row('audit', `${summary.audit.flagged} flagged of ${summary.audit.probes}${counts ? ` (${counts})` : ''} · ` +
|
|
186
227
|
`${summary.audit.leakingEdges} leaking edges of ${summary.audit.blockedEdges} blocked`),
|
|
187
|
-
row('repair', `${summary.repairs} probes repaired of ${summary.repair.damaged} damaged · donors occluded ` +
|
|
188
|
-
`${
|
|
189
|
-
|
|
228
|
+
row('repair', `${summary.repairs} probes repaired of ${summary.repair.damaged} damaged · donors occluded ${summary.repair.donorsOccluded}` +
|
|
229
|
+
`${leftDark > 0 ? ` · ${leftDark} left dark (no visible donor${deactivated === leftDark ? ' — deactivated' : ''})` : ''}` +
|
|
230
|
+
`${countDeactivated ? ` · ${deactivated} deactivated` : ''}`),
|
|
231
|
+
row('artifact', `${Math.round(summary.fieldBytes / 1024)} KB field + ${Math.round(summary.geometryBytes / 1024)} KB geometry` +
|
|
232
|
+
(summary.bounces === undefined ? '' : ` · bounces ${summary.bounces}`) +
|
|
233
|
+
(summary.atlasDepth === undefined ? '' : ` · atlas depth ${summary.atlasDepth} slices`)),
|
|
234
|
+
...(summary.occlusionVoxels === undefined ? [] : [row('occlusion', `${summary.occlusionVoxels} voxels${summary.occlusionDilated === undefined ? '' : ` · ${summary.occlusionDilated} dilated`}` +
|
|
235
|
+
` · ${Math.round((summary.occlusionBytes ?? 0) / 1024)} KB · ${Math.round(summary.occlusionMs ?? 0)} ms`)]),
|
|
190
236
|
];
|
|
191
237
|
if (!summary.geometry) {
|
|
192
238
|
lines.push(' ⚠ SH-ONLY FIELD — this bake ran without DDGI visibility, so a world playing it degrades visibility OFF and its', ' indirect light LEAKS THROUGH WALLS. Re-bake on a tier that carries the probe rung to get the geometry half.');
|
|
@@ -222,7 +268,7 @@ function composeBakeTimeoutDiagnosis(state, errors) {
|
|
|
222
268
|
}
|
|
223
269
|
// Every file is READ and patched before any is written: a world whose contract is unparseable must fail with the
|
|
224
270
|
// bake still intact on the page, not half-written across two roots.
|
|
225
|
-
function planWrites(roots, storeJson) {
|
|
271
|
+
function planWrites(roots, storeJson, keys) {
|
|
226
272
|
const planned = [];
|
|
227
273
|
for (const root of roots) {
|
|
228
274
|
const artifactPath = (0, node_path_1.join)(root, exports.BAKE_ARTIFACT_FILE);
|
|
@@ -230,7 +276,12 @@ function planWrites(roots, storeJson) {
|
|
|
230
276
|
const configPath = (0, node_path_1.join)(root, visualsConfig_1.VISUALS_CONFIG_FILE);
|
|
231
277
|
const existing = (0, node_fs_1.existsSync)(configPath) ? (0, node_fs_1.readFileSync)(configPath, 'utf8') : null;
|
|
232
278
|
try {
|
|
233
|
-
planned.push({
|
|
279
|
+
planned.push({
|
|
280
|
+
path: configPath,
|
|
281
|
+
kind: 'contract',
|
|
282
|
+
text: patchVisualsConfigText(existing, exports.BAKE_ARTIFACT_FILE, keys),
|
|
283
|
+
created: existing === null,
|
|
284
|
+
});
|
|
234
285
|
}
|
|
235
286
|
catch (err) {
|
|
236
287
|
throw new Error(`cannot patch ${configPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -244,24 +295,39 @@ function commitWrites(planned) {
|
|
|
244
295
|
return { path: write.path, kind: write.kind, bytes: Buffer.byteLength(write.text), created: write.created };
|
|
245
296
|
});
|
|
246
297
|
}
|
|
298
|
+
// PAGE-SIDE — runs inside the browser through page.evaluate, so it must close over nothing in this module. The
|
|
299
|
+
// first canvas with a GL context wins; the debug extension unmasks the driver name Chrome otherwise generalizes.
|
|
300
|
+
function readRendererString() {
|
|
301
|
+
for (const canvas of Array.from(document.querySelectorAll('canvas'))) {
|
|
302
|
+
const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl');
|
|
303
|
+
if (!gl)
|
|
304
|
+
continue;
|
|
305
|
+
const debug = gl.getExtension('WEBGL_debug_renderer_info');
|
|
306
|
+
const name = debug ? gl.getParameter(debug.UNMASKED_RENDERER_WEBGL) : gl.getParameter(gl.RENDERER);
|
|
307
|
+
if (name)
|
|
308
|
+
return String(name);
|
|
309
|
+
}
|
|
310
|
+
return null;
|
|
311
|
+
}
|
|
247
312
|
/**
|
|
248
313
|
* Serve, boot, bake, gate, write. The bake itself is MINUTES of blocking GPU work inside one `page.evaluate`,
|
|
249
314
|
* which Playwright does not time out; `--timeout` bounds only the wait for the handle.
|
|
250
315
|
*/
|
|
251
316
|
async function bakeLighting(opts) {
|
|
252
317
|
const onProgress = opts.onProgress ?? (() => undefined);
|
|
253
|
-
const keys = opts.keys
|
|
254
|
-
const timeoutMs = opts.timeoutMs ?? exports.DEFAULT_BAKE_BOOT_TIMEOUT_S * 1000;
|
|
318
|
+
const keys = opts.keys;
|
|
255
319
|
const targets = resolveBakeTargets(opts.directory);
|
|
320
|
+
const bundleBytes = opts.timeoutMs === undefined ? measureBundleBytes(targets.servedDir) : 0;
|
|
321
|
+
const timeoutMs = opts.timeoutMs ?? bootTimeoutForBundle(bundleBytes) * 1000;
|
|
256
322
|
const playwright = await Promise.resolve().then(() => __importStar(require('playwright')));
|
|
257
323
|
const server = await (0, staticServe_1.startStaticServer)(targets.servedDir);
|
|
258
324
|
let browser;
|
|
259
325
|
try {
|
|
260
326
|
const attempts = [];
|
|
261
|
-
for (const candidate of (0, launch_1.browserCandidates)()) {
|
|
327
|
+
for (const candidate of opts.gpu ? (0, launch_1.gpuBrowserCandidates)() : (0, launch_1.browserCandidates)()) {
|
|
262
328
|
try {
|
|
263
329
|
browser = await playwright.chromium.launch(candidate.launchOptions);
|
|
264
|
-
onProgress(` using ${candidate.label}`);
|
|
330
|
+
onProgress(` using ${candidate.label}${opts.gpu ? ' (GPU)' : ''}`);
|
|
265
331
|
break;
|
|
266
332
|
}
|
|
267
333
|
catch (err) {
|
|
@@ -287,7 +353,8 @@ async function bakeLighting(opts) {
|
|
|
287
353
|
});
|
|
288
354
|
onProgress(` serving ${targets.servedDir} on 127.0.0.1:${server.port}`);
|
|
289
355
|
await page.goto(`http://127.0.0.1:${server.port}/?${exports.BAKE_PARAM}=1`, { timeout: timeoutMs });
|
|
290
|
-
|
|
356
|
+
const budget = ` waiting up to ${Math.round(timeoutMs / 1000)}s for the bake handle`;
|
|
357
|
+
onProgress(opts.timeoutMs === undefined ? `${budget} (budget scaled to ${(bundleBytes / BYTES_PER_MIB).toFixed(1)} MiB of bundle)` : budget);
|
|
291
358
|
try {
|
|
292
359
|
await page.waitForFunction("typeof window.__helixBake !== 'undefined'", undefined, { timeout: timeoutMs });
|
|
293
360
|
}
|
|
@@ -305,15 +372,24 @@ async function bakeLighting(opts) {
|
|
|
305
372
|
if (!handle.ready) {
|
|
306
373
|
throw new Error(composeBakeFailure(`this world cannot be baked: ${handle.error}`, pageErrors));
|
|
307
374
|
}
|
|
308
|
-
|
|
375
|
+
// THE RECEIPT for --gpu: a system browser that quietly fell back to software renders a SwiftShader string
|
|
376
|
+
// here, and the run is otherwise indistinguishable. Never let reading it fail a bake.
|
|
377
|
+
const renderer = await page.evaluate(readRendererString).catch(() => null);
|
|
378
|
+
if (renderer)
|
|
379
|
+
onProgress(` renderer: ${renderer}`);
|
|
380
|
+
onProgress(keys === undefined
|
|
381
|
+
? ` handle ready — baking + practicals (the engine plans the keys: ONE for a static sun, ${exports.DEFAULT_BAKE_KEYS} for a cycle; ` +
|
|
382
|
+
'minutes; do not interrupt)'
|
|
383
|
+
: ` handle ready — baking ${keys} keys + practicals (minutes; do not interrupt)`);
|
|
309
384
|
const started = Date.now();
|
|
310
385
|
// The store comes back already stringified: the artifact ships the driver's JSON verbatim, and a Node-side
|
|
311
386
|
// re-serialization of a CDP-decoded object is one more thing that could differ from what the engine wrote.
|
|
312
387
|
let settled = false;
|
|
313
388
|
const run = page
|
|
314
389
|
.evaluate(({ keys: count }) => window.__helixBake
|
|
315
|
-
|
|
316
|
-
.
|
|
390
|
+
// No `keys` AT ALL when none was asked for: an explicit undefined is still an authored count engine-side.
|
|
391
|
+
.run(count === null ? {} : { keys: count })
|
|
392
|
+
.then((result) => ({ store: JSON.stringify(result.store), summary: result.summary })), { keys: keys ?? null })
|
|
317
393
|
.then((result) => {
|
|
318
394
|
settled = true;
|
|
319
395
|
return result;
|
|
@@ -353,7 +429,12 @@ async function bakeLighting(opts) {
|
|
|
353
429
|
const gate = bakeGateFailure(result.summary);
|
|
354
430
|
if (gate)
|
|
355
431
|
throw new Error(composeBakeFailure(gate, pageErrors));
|
|
356
|
-
return {
|
|
432
|
+
return {
|
|
433
|
+
summary: result.summary,
|
|
434
|
+
written: commitWrites(planWrites(targets.roots, result.store, result.summary.keys)),
|
|
435
|
+
servedDir: targets.servedDir,
|
|
436
|
+
renderer,
|
|
437
|
+
};
|
|
357
438
|
}
|
|
358
439
|
finally {
|
|
359
440
|
await browser?.close();
|
package/dist/bakeLighting.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bakeLighting.js","sourceRoot":"","sources":["../src/bakeLighting.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bakeLighting.js","sourceRoot":"","sources":["../src/bakeLighting.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/launch.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { LaunchOptions } from 'playwright';
|
|
2
2
|
export declare const HEADLESS_GL_ARGS: string[];
|
|
3
|
+
export declare const GPU_GL_ARGS: string[];
|
|
3
4
|
export type BrowserKey = 'bundled' | 'chrome' | 'msedge';
|
|
4
5
|
export type BrowserCandidate = {
|
|
5
6
|
key: BrowserKey;
|
|
@@ -7,6 +8,7 @@ export type BrowserCandidate = {
|
|
|
7
8
|
launchOptions: LaunchOptions;
|
|
8
9
|
};
|
|
9
10
|
export declare function browserCandidates(): BrowserCandidate[];
|
|
11
|
+
export declare function gpuBrowserCandidates(): BrowserCandidate[];
|
|
10
12
|
export declare function selectBrowserCandidates(browser: BrowserKey | undefined): BrowserCandidate[];
|
|
11
13
|
export type LaunchAttempt = {
|
|
12
14
|
key: BrowserKey;
|
package/dist/browser/launch.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HEADLESS_GL_ARGS = void 0;
|
|
3
|
+
exports.GPU_GL_ARGS = exports.HEADLESS_GL_ARGS = void 0;
|
|
4
4
|
exports.browserCandidates = browserCandidates;
|
|
5
|
+
exports.gpuBrowserCandidates = gpuBrowserCandidates;
|
|
5
6
|
exports.selectBrowserCandidates = selectBrowserCandidates;
|
|
6
7
|
exports.composeLaunchFailure = composeLaunchFailure;
|
|
7
8
|
exports.composeTimeoutDiagnosisWith = composeTimeoutDiagnosisWith;
|
|
8
9
|
// Software-GL flags: headless Chromium has no real GPU, so WebGL must render via SwiftShader.
|
|
9
10
|
exports.HEADLESS_GL_ARGS = ['--use-angle=swiftshader', '--enable-unsafe-swiftshader'];
|
|
11
|
+
// Real-GPU flags: nothing forces software GL, and the blocklist is ignored so a headless run still gets the
|
|
12
|
+
// hardware backend on the driver/VM combinations Chrome distrusts.
|
|
13
|
+
exports.GPU_GL_ARGS = ['--ignore-gpu-blocklist'];
|
|
10
14
|
// Ordered fallback chain for `chromium.launch()`: the pinned bundled build first (most
|
|
11
15
|
// deterministic), then whichever system browser is already installed — so first-run works
|
|
12
16
|
// without the ~150 MB download on machines that already have Chrome or Edge.
|
|
@@ -17,6 +21,14 @@ function browserCandidates() {
|
|
|
17
21
|
{ key: 'msedge', label: 'system Edge', launchOptions: { headless: true, args: exports.HEADLESS_GL_ARGS, channel: 'msedge' } },
|
|
18
22
|
];
|
|
19
23
|
}
|
|
24
|
+
// The GPU chain: system browsers only. Playwright's bundled build is the headless SHELL, which carries no
|
|
25
|
+
// hardware GL backend at all — it renders through SwiftShader whatever flags it is handed.
|
|
26
|
+
function gpuBrowserCandidates() {
|
|
27
|
+
return [
|
|
28
|
+
{ key: 'chrome', label: 'system Chrome', launchOptions: { headless: true, args: exports.GPU_GL_ARGS, channel: 'chrome' } },
|
|
29
|
+
{ key: 'msedge', label: 'system Edge', launchOptions: { headless: true, args: exports.GPU_GL_ARGS, channel: 'msedge' } },
|
|
30
|
+
];
|
|
31
|
+
}
|
|
20
32
|
// Pure so the "forced candidate, no fallback" plan is unit-testable without Playwright.
|
|
21
33
|
function selectBrowserCandidates(browser) {
|
|
22
34
|
return browser ? browserCandidates().filter((c) => c.key === browser) : browserCandidates();
|
|
@@ -30,7 +42,12 @@ function composeLaunchFailure(attempts) {
|
|
|
30
42
|
const installHint = attempts.some((a) => a.key === 'bundled')
|
|
31
43
|
? ' — run: helix screenshot --install to download the pinned headless browser (one-time, ~150 MB)'
|
|
32
44
|
: '';
|
|
33
|
-
|
|
45
|
+
// Only the GPU chain ITSELF earns the --gpu hint: a forced single system browser (--browser chrome) failed for
|
|
46
|
+
// its own reasons, and telling that run to drop a flag it never passed is noise.
|
|
47
|
+
const gpuChain = gpuBrowserCandidates().map((c) => c.key);
|
|
48
|
+
const isGpuChain = attempts.length === gpuChain.length && gpuChain.every((key) => attempts.some((a) => a.key === key));
|
|
49
|
+
const gpuHint = isGpuChain ? ' (--gpu needs a system Chrome or Edge; drop --gpu to bake on the bundled SwiftShader build)' : '';
|
|
50
|
+
return `No usable browser found — tried ${tried}${installHint}.${gpuHint}\n\n${details}`;
|
|
34
51
|
}
|
|
35
52
|
// Pure so the two timeout causes are unit-testable without Playwright. "absent" — the world never
|
|
36
53
|
// installed the helper's window global — means a missing integration; "present" — the boot-presence
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/browser/launch.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/browser/launch.ts"],"names":[],"mappings":"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"}
|