@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 CHANGED
@@ -1,4 +1,5 @@
1
1
  import { CliCredentials } from './config';
2
+ export declare const API_FETCH_TIMEOUT_MS = 30000;
2
3
  type NestErrorBody = {
3
4
  statusCode?: number;
4
5
  message?: string | string[];
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":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -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
- export type BakePhase = 'idle' | 'warm-up' | 'audit' | 'key' | 'practicals' | 'geometry' | 'done' | 'failed';
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.
@@ -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, and the `BakeSummary` /
51
- // `BakeProgress` fields read below. Fix protocol bugs there first, then mirror here; drift surfaces as a missing
52
- // field at the END of a multi-minute run, so it has to be findable from either side.
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 = { version: visualsConfig_1.BAKED_LIGHTING_VERSION, artifact };
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 (${px}×${py}×${pz}) in ${formatDuration(summary.totalMs)}`,
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
- `${summary.repair.donorsOccluded}${summary.repair.leftDark > 0 ? ` · ${summary.repair.leftDark} left dark (no visible donor)` : ''}`),
189
- row('artifact', `${Math.round(summary.fieldBytes / 1024)} KB field + ${Math.round(summary.geometryBytes / 1024)} KB geometry`),
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({ path: configPath, kind: 'contract', text: patchVisualsConfigText(existing), created: existing === null });
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 ?? exports.DEFAULT_BAKE_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
- onProgress(` waiting up to ${Math.round(timeoutMs / 1000)}s for the bake handle`);
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
- onProgress(` handle ready — baking ${keys} keys + practicals (minutes; do not interrupt)`);
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
- .run({ keys: count })
316
- .then((result) => ({ store: JSON.stringify(result.store), summary: result.summary })), { keys })
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 { summary: result.summary, written: commitWrites(planWrites(targets.roots, result.store)), servedDir: targets.servedDir };
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();
@@ -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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"}
@@ -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;
@@ -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
- return `No usable browser found — tried ${tried}${installHint}.\n\n${details}`;
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":";;;AAgBA,8CAMC;AAGD,0DAEC;AAOD,oDAOC;AAWD,kEAIC;AAlDD,8FAA8F;AACjF,QAAA,gBAAgB,GAAG,CAAC,yBAAyB,EAAE,6BAA6B,CAAC,CAAC;AAM3F,uFAAuF;AACvF,0FAA0F;AAC1F,6EAA6E;AAC7E,SAAgB,iBAAiB;IAC/B,OAAO;QACL,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,wBAAgB,EAAE,EAAE;QACxG,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,wBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QACvH,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,wBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;KACtH,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,SAAgB,uBAAuB,CAAC,OAA+B;IACrE,OAAO,OAAO,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAC9F,CAAC;AAID,qGAAqG;AACrG,qGAAqG;AACrG,yFAAyF;AACzF,SAAgB,oBAAoB,CAAC,QAAyB;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;QAC3D,CAAC,CAAC,gGAAgG;QAClG,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,mCAAmC,KAAK,GAAG,WAAW,QAAQ,OAAO,EAAE,CAAC;AACjF,CAAC;AAMD,kGAAkG;AAClG,oGAAoG;AACpG,qGAAqG;AACrG,kGAAkG;AAClG,0DAA0D;AAC1D,SAAgB,2BAA2B,CAAC,KAAyB,EAAE,MAAgB,EAAE,MAAqB;IAC5G,MAAM,KAAK,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,GAAG,KAAK,iCAAiC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACnG,CAAC"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/browser/launch.ts"],"names":[],"mappings":"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"}