@volter/browser-wali 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +73 -0
  2. package/dist/browser-wali-command.d.ts +3 -0
  3. package/dist/browser-wali-command.d.ts.map +1 -1
  4. package/dist/browser-wali-command.js +2 -1
  5. package/dist/browser-wali-command.js.map +1 -1
  6. package/dist/capabilities.d.ts +73 -1
  7. package/dist/capabilities.d.ts.map +1 -1
  8. package/dist/capabilities.js +86 -2
  9. package/dist/capabilities.js.map +1 -1
  10. package/dist/child-processes.d.ts +24 -0
  11. package/dist/child-processes.d.ts.map +1 -0
  12. package/dist/child-processes.js +134 -0
  13. package/dist/child-processes.js.map +1 -0
  14. package/dist/codec-protocol.d.ts +66 -0
  15. package/dist/codec-protocol.d.ts.map +1 -0
  16. package/dist/codec-protocol.js +59 -0
  17. package/dist/codec-protocol.js.map +1 -0
  18. package/dist/codec-remote.d.ts +33 -0
  19. package/dist/codec-remote.d.ts.map +1 -0
  20. package/dist/codec-remote.js +190 -0
  21. package/dist/codec-remote.js.map +1 -0
  22. package/dist/codec-worker.d.ts +2 -0
  23. package/dist/codec-worker.d.ts.map +1 -0
  24. package/dist/codec-worker.js +438 -0
  25. package/dist/codec-worker.js.map +1 -0
  26. package/dist/coherent-file-locks.d.ts.map +1 -1
  27. package/dist/coherent-file-locks.js +17 -5
  28. package/dist/coherent-file-locks.js.map +1 -1
  29. package/dist/descriptors.d.ts +49 -0
  30. package/dist/descriptors.d.ts.map +1 -0
  31. package/dist/descriptors.js +115 -0
  32. package/dist/descriptors.js.map +1 -0
  33. package/dist/events.d.ts.map +1 -1
  34. package/dist/events.js +2 -2
  35. package/dist/events.js.map +1 -1
  36. package/dist/filesystem-protocol.d.ts +28 -1
  37. package/dist/filesystem-protocol.d.ts.map +1 -1
  38. package/dist/filesystem-protocol.js +18 -0
  39. package/dist/filesystem-protocol.js.map +1 -1
  40. package/dist/filesystem-remote.d.ts +26 -2
  41. package/dist/filesystem-remote.d.ts.map +1 -1
  42. package/dist/filesystem-remote.js +132 -23
  43. package/dist/filesystem-remote.js.map +1 -1
  44. package/dist/filesystem-worker.js +274 -34
  45. package/dist/filesystem-worker.js.map +1 -1
  46. package/dist/filesystem.d.ts +30 -1
  47. package/dist/filesystem.d.ts.map +1 -1
  48. package/dist/filesystem.js +180 -50
  49. package/dist/filesystem.js.map +1 -1
  50. package/dist/fork-worker.d.ts +2 -0
  51. package/dist/fork-worker.d.ts.map +1 -0
  52. package/dist/fork-worker.js +52 -0
  53. package/dist/fork-worker.js.map +1 -0
  54. package/dist/host.d.ts +36 -0
  55. package/dist/host.d.ts.map +1 -0
  56. package/dist/host.js +153 -0
  57. package/dist/host.js.map +1 -0
  58. package/dist/loopback-host.d.ts +25 -1
  59. package/dist/loopback-host.d.ts.map +1 -1
  60. package/dist/loopback-host.js +447 -13
  61. package/dist/loopback-host.js.map +1 -1
  62. package/dist/memory.d.ts +65 -2
  63. package/dist/memory.d.ts.map +1 -1
  64. package/dist/memory.js +306 -49
  65. package/dist/memory.js.map +1 -1
  66. package/dist/module-layout.d.ts +2 -0
  67. package/dist/module-layout.d.ts.map +1 -1
  68. package/dist/module-layout.js +4 -2
  69. package/dist/module-layout.js.map +1 -1
  70. package/dist/monotonic-clock.d.ts +12 -0
  71. package/dist/monotonic-clock.d.ts.map +1 -0
  72. package/dist/monotonic-clock.js +14 -0
  73. package/dist/monotonic-clock.js.map +1 -0
  74. package/dist/network-protocol.d.ts +12 -1
  75. package/dist/network-protocol.d.ts.map +1 -1
  76. package/dist/network-protocol.js +6 -0
  77. package/dist/network-protocol.js.map +1 -1
  78. package/dist/network-worker.js +149 -20
  79. package/dist/network-worker.js.map +1 -1
  80. package/dist/network.d.ts +15 -3
  81. package/dist/network.d.ts.map +1 -1
  82. package/dist/network.js +74 -39
  83. package/dist/network.js.map +1 -1
  84. package/dist/process-adapter.d.ts +4 -1
  85. package/dist/process-adapter.d.ts.map +1 -1
  86. package/dist/process-adapter.js +3 -3
  87. package/dist/process-adapter.js.map +1 -1
  88. package/dist/process-bridge.d.ts +43 -0
  89. package/dist/process-bridge.d.ts.map +1 -1
  90. package/dist/process-bridge.js +30 -1
  91. package/dist/process-bridge.js.map +1 -1
  92. package/dist/program.d.ts +60 -1
  93. package/dist/program.d.ts.map +1 -1
  94. package/dist/program.js +92 -31
  95. package/dist/program.js.map +1 -1
  96. package/dist/runtime.d.ts.map +1 -1
  97. package/dist/runtime.js +491 -134
  98. package/dist/runtime.js.map +1 -1
  99. package/dist/select.d.ts +16 -0
  100. package/dist/select.d.ts.map +1 -0
  101. package/dist/select.js +100 -0
  102. package/dist/select.js.map +1 -0
  103. package/dist/shared-pipes.d.ts +17 -6
  104. package/dist/shared-pipes.d.ts.map +1 -1
  105. package/dist/shared-pipes.js +94 -70
  106. package/dist/shared-pipes.js.map +1 -1
  107. package/dist/signals.d.ts +48 -0
  108. package/dist/signals.d.ts.map +1 -0
  109. package/dist/signals.js +232 -0
  110. package/dist/signals.js.map +1 -0
  111. package/dist/snapshot-filesystem.d.ts +128 -2
  112. package/dist/snapshot-filesystem.d.ts.map +1 -1
  113. package/dist/snapshot-filesystem.js +481 -53
  114. package/dist/snapshot-filesystem.js.map +1 -1
  115. package/dist/spawn-policy.d.ts +5 -0
  116. package/dist/spawn-policy.d.ts.map +1 -0
  117. package/dist/spawn-policy.js +29 -0
  118. package/dist/spawn-policy.js.map +1 -0
  119. package/dist/stdin.d.ts +2 -0
  120. package/dist/stdin.d.ts.map +1 -1
  121. package/dist/stdin.js +4 -0
  122. package/dist/stdin.js.map +1 -1
  123. package/dist/symlink.d.ts +8 -0
  124. package/dist/symlink.d.ts.map +1 -1
  125. package/dist/symlink.js +13 -0
  126. package/dist/symlink.js.map +1 -1
  127. package/dist/system.d.ts +152 -1
  128. package/dist/system.d.ts.map +1 -1
  129. package/dist/system.js +226 -7
  130. package/dist/system.js.map +1 -1
  131. package/dist/thread-coordinator-worker.d.ts +1 -0
  132. package/dist/thread-coordinator-worker.d.ts.map +1 -1
  133. package/dist/thread-coordinator-worker.js +1 -0
  134. package/dist/thread-coordinator-worker.js.map +1 -1
  135. package/dist/thread-worker.js +241 -122
  136. package/dist/thread-worker.js.map +1 -1
  137. package/dist/threads.d.ts +12 -2
  138. package/dist/threads.d.ts.map +1 -1
  139. package/dist/threads.js +30 -10
  140. package/dist/threads.js.map +1 -1
  141. package/dist/types.d.ts +39 -0
  142. package/dist/types.d.ts.map +1 -1
  143. package/dist/websocket-peer.d.ts.map +1 -1
  144. package/dist/websocket-peer.js +4 -14
  145. package/dist/websocket-peer.js.map +1 -1
  146. package/dist/worker-program-protocol.d.ts +70 -3
  147. package/dist/worker-program-protocol.d.ts.map +1 -1
  148. package/dist/worker-program-worker.js +115 -23
  149. package/dist/worker-program-worker.js.map +1 -1
  150. package/dist/worker-program.d.ts +25 -1
  151. package/dist/worker-program.d.ts.map +1 -1
  152. package/dist/worker-program.js +470 -61
  153. package/dist/worker-program.js.map +1 -1
  154. package/dist/worker-standby.d.ts +3 -0
  155. package/dist/worker-standby.d.ts.map +1 -0
  156. package/dist/worker-standby.js +17 -0
  157. package/dist/worker-standby.js.map +1 -0
  158. package/package.json +20 -6
@@ -2,15 +2,29 @@ import type { BrowserFileSystemSnapshot } from "@volter/browser-runtime/browser-
2
2
  import type { BrowserFileLockChannel } from "@volter/browser-runtime/browser-file-locks.js";
3
3
  import type { BrowserProcessFilesystemPatch, WaliBrowserSpawnMessage } from "./process-bridge.js";
4
4
  export interface WaliWorkerRunRequest {
5
+ descriptorTable?: import("./filesystem-protocol.js").WaliFilesystemChannel;
5
6
  type: "run";
7
+ /** The process this program IS, when the lane exec'd it into an existing one. */
8
+ pid?: number;
9
+ parentPid?: number;
10
+ /** The container's process-id counter, shared with every other runtime in it. */
11
+ childPidAllocator?: SharedArrayBuffer;
6
12
  id: number;
7
13
  url: string;
8
14
  integrity?: string;
15
+ /** The module compiled by an earlier worker, with its memory import: a new worker runs it without compiling it again. */
16
+ compiled?: WaliCompiledModule;
9
17
  executablePath?: string;
10
18
  argv: string[];
11
19
  cwd: string;
12
20
  env: Record<string, string>;
13
21
  threadPoolSize: number;
22
+ /** The WebCodecs bridge, negotiated by the manifest's `media.webcodecs`. */
23
+ codec?: {
24
+ version: 1;
25
+ };
26
+ childFilesystemPolicyVersion?: 1;
27
+ filesystemPolicy?: import("@volter/browser-runtime/browser-process-filesystem-policy.js").BrowserProcessFilesystemPolicy;
14
28
  network?: {
15
29
  relayUrl?: string;
16
30
  allowedHosts: string[];
@@ -19,13 +33,20 @@ export interface WaliWorkerRunRequest {
19
33
  };
20
34
  loopbackPort?: MessagePort;
21
35
  stdin: SharedArrayBuffer;
36
+ terminal: boolean;
22
37
  filesystem: BrowserFileSystemSnapshot;
38
+ /** The project's store, which the worker reads directly; `filesystem` is then metadata, with a program's private files as content. */
39
+ store?: {
40
+ projectId: string;
41
+ };
23
42
  filesystemUpdatePort?: MessagePort;
24
43
  fileLocks: {
25
44
  channel: BrowserFileLockChannel;
26
45
  owner: string;
27
46
  };
28
47
  fileCoherence: import("@volter/browser-runtime/browser-file-coherence.js").BrowserFileCoherenceChannel;
48
+ /** The process's signal state: the host raises what `kill` sends into it. */
49
+ signalState: SharedArrayBuffer;
29
50
  browserProcessPorts?: MessagePort[];
30
51
  threadOutputPorts?: MessagePort[];
31
52
  }
@@ -37,16 +58,45 @@ export type WaliThreadOutputMessage = {
37
58
  type: "error";
38
59
  message: string;
39
60
  tid?: number;
61
+ }
62
+ /** The runtime's own notice from a pthread -- see `runtime.ts`'s `unimplementedImport`. */
63
+ | {
64
+ type: "diagnostic";
65
+ message: string;
66
+ tid?: number;
40
67
  };
41
68
  export type WaliWorkerRequest = WaliWorkerRunRequest;
42
- export type WaliWorkerResponse = {
69
+ /** A program's module compiled once, and the memory its `env.memory` import declares. */
70
+ export interface WaliCompiledModule {
71
+ module: WebAssembly.Module;
72
+ layout?: import("./module-layout.js").WaliMemoryLayout;
73
+ }
74
+ export type WaliWorkerResponse =
75
+ /** A worker compiled the program's module; the page keeps it for the program's next worker. */
76
+ {
77
+ type: "compiled";
78
+ id: number;
79
+ compiled: WaliCompiledModule;
80
+ } | ({
81
+ type: "fork";
82
+ id: number;
83
+ stdin: SharedArrayBuffer;
84
+ threadPoolSize: number;
85
+ network?: WaliWorkerRunRequest["network"];
86
+ } & import("./process-bridge.js").WaliBrowserForkRequest) | {
43
87
  type: "stdout";
44
88
  id: number;
45
- chunk: string;
89
+ chunk: Uint8Array;
46
90
  } | {
47
91
  type: "stderr";
48
92
  id: number;
49
93
  chunk: string;
94
+ }
95
+ /** Not the program's stream: the runtime telling its host something. */
96
+ | {
97
+ type: "diagnostic";
98
+ id: number;
99
+ message: string;
50
100
  } | ({
51
101
  type: "spawn";
52
102
  id: number;
@@ -59,6 +109,7 @@ export type WaliWorkerResponse = {
59
109
  type: "result";
60
110
  id: number;
61
111
  filesystem: BrowserFileSystemSnapshot;
112
+ filesystemFinalized?: boolean;
62
113
  result?: {
63
114
  stdout: string;
64
115
  stderr: string;
@@ -66,8 +117,24 @@ export type WaliWorkerResponse = {
66
117
  };
67
118
  error?: string;
68
119
  };
69
- export interface WaliFilesystemUpdateMessage {
120
+ export type WaliFilesystemUpdateMessage = {
70
121
  type: "filesystem";
71
122
  patch: BrowserProcessFilesystemPatch;
123
+ } | {
124
+ type: "imported";
125
+ patch: BrowserProcessFilesystemPatch;
126
+ } | {
127
+ type: "import-error";
128
+ message: string;
129
+ } | {
130
+ type: "finalized";
131
+ } | {
132
+ type: "checkpoint";
133
+ control: SharedArrayBuffer;
134
+ };
135
+ export interface WaliFilesystemImportMessage {
136
+ type: "import";
137
+ patch: BrowserProcessFilesystemPatch;
138
+ base: BrowserFileSystemSnapshot;
72
139
  }
73
140
  //# sourceMappingURL=worker-program-protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-program-protocol.d.ts","sourceRoot":"","sources":["../src/worker-program-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,KAAK,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAElG,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,EAAE,yBAAyB,CAAC;IACtC,oBAAoB,CAAC,EAAE,WAAW,CAAC;IACnC,SAAS,EAAE;QAAE,OAAO,EAAE,sBAAsB,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,aAAa,EAAE,OAAO,mDAAmD,EAAE,2BAA2B,CAAC;IACvG,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAC;IACpC,iBAAiB,CAAC,EAAE,WAAW,EAAE,CAAC;CACnC;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,iBAAiB,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,uBAAuB,CAAC,GACzD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,yBAAyB,CAAC;IACtC,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,6BAA6B,CAAC;CACtC"}
1
+ {"version":3,"file":"worker-program-protocol.d.ts","sourceRoot":"","sources":["../src/worker-program-protocol.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,97 @@
1
+ import { verifyArtifactIntegrity } from "@volter/browser-runtime/browser-artifact-integrity.js";
2
+ import { openPackReader } from "@volter/browser-runtime/browser-pack-store.js";
1
3
  import { BrowserWaliRuntime } from "./runtime.js";
2
- import { createImportedMemory } from "./module-layout.js";
4
+ import { findImportedMemory, memoryForLayout } from "./module-layout.js";
3
5
  import { SnapshotWaliFileSystem } from "./snapshot-filesystem.js";
4
6
  import { SharedWaliStdinReader } from "./stdin.js";
5
7
  import { createProcessFilesystemPatch } from "./process-bridge.js";
6
8
  const modules = new Map();
9
+ /**
10
+ * The project's store, opened once for this worker's life and followed
11
+ * through the owner's log before each run, as a thread's reader is
12
+ * (ADR-0019). Opening it was up to 76 ms of every run of a small program on a
13
+ * loaded machine (2026-09-24).
14
+ */
15
+ const readers = new Map();
16
+ async function projectReader(projectId) {
17
+ const held = readers.get(projectId);
18
+ if (held) {
19
+ const store = await held.catch(() => undefined);
20
+ if (store) {
21
+ try {
22
+ await store.refresh();
23
+ return store;
24
+ }
25
+ catch {
26
+ store.close();
27
+ }
28
+ }
29
+ readers.delete(projectId);
30
+ }
31
+ const opening = openPackReader({ navigator: globalThis.navigator }, projectId);
32
+ readers.set(projectId, opening);
33
+ const store = await opening.catch(() => undefined);
34
+ if (!store)
35
+ readers.delete(projectId);
36
+ return store;
37
+ }
7
38
  self.onmessage = (event) => {
8
39
  void run(event.data);
9
40
  };
10
41
  async function run(request) {
11
- const filesystem = SnapshotWaliFileSystem.fromSnapshot(request.filesystem);
42
+ const received = performance.now();
43
+ let store;
44
+ let filesystem;
45
+ if (request.store) {
46
+ // The tree is read from the project's store, one file as the program
47
+ // opens it; the snapshot the page sent is metadata and private files.
48
+ store = await projectReader(request.store.projectId);
49
+ if (!store) {
50
+ send({ type: "result", id: request.id, filesystem: request.filesystem, error: "The project's store is not there to read." });
51
+ return;
52
+ }
53
+ filesystem = SnapshotWaliFileSystem.fromStore(store, request.filesystem);
54
+ }
55
+ else {
56
+ filesystem = SnapshotWaliFileSystem.fromSnapshot(request.filesystem);
57
+ }
58
+ // The store can advance after the page prepares its snapshot. Imported
59
+ // state is this worker's baseline, not a guest mutation to publish back.
60
+ // Capture it before the bootstrap creates any directories of its own.
61
+ const base = filesystem.toSnapshot();
12
62
  filesystem.mkdirSync("/tmp", { recursive: true });
13
- filesystem.mkdirSync("/home/supercode", { recursive: true });
63
+ filesystem.mkdirSync("/home/user", { recursive: true });
14
64
  filesystem.mkdirSync(request.cwd, { recursive: true });
65
+ const initialPatch = createProcessFilesystemPatch(base, filesystem.toSnapshot());
66
+ if (request.filesystemUpdatePort && (initialPatch.files.length > 0 || initialPatch.removed.length > 0)) {
67
+ request.filesystemUpdatePort.postMessage({ type: "filesystem", patch: initialPatch });
68
+ }
69
+ let filesystemFinalized = false;
70
+ const filesystemMs = performance.now() - received;
15
71
  try {
16
- const artifact = await loadModule(request.url, request.integrity);
17
- const memory = createImportedMemory(artifact.bytes);
72
+ const moduleStarted = performance.now();
73
+ const artifact = await loadModule(request.url, request.integrity, request.compiled, (compiled) => send({ type: "compiled", id: request.id, compiled }));
74
+ const moduleMs = performance.now() - moduleStarted;
75
+ const memoryLayout = artifact.layout;
76
+ const memory = memoryLayout ? memoryForLayout(memoryLayout) : undefined;
18
77
  const result = await new BrowserWaliRuntime().run(artifact.module, {
19
78
  argv: request.argv,
79
+ ...(request.pid !== undefined ? { pid: request.pid } : {}),
80
+ ...(request.parentPid !== undefined ? { parentPid: request.parentPid } : {}),
81
+ ...(request.childPidAllocator ? { childPidAllocator: request.childPidAllocator } : {}),
82
+ ...(memoryLayout ? { memoryLayout } : {}),
83
+ ...(request.descriptorTable ? { descriptorTable: request.descriptorTable } : {}),
20
84
  ...(request.executablePath ? { executablePath: request.executablePath } : {}),
21
85
  cwd: request.cwd,
22
86
  env: request.env,
23
87
  stdin: new SharedWaliStdinReader(request.stdin),
88
+ terminal: request.terminal,
24
89
  filesystem,
90
+ ...(request.filesystemPolicy ? { filesystemPolicy: request.filesystemPolicy } : {}),
91
+ ...(request.store ? { store: request.store } : {}),
25
92
  ...(memory ? { memory } : {}),
26
93
  threadPoolSize: request.threadPoolSize,
94
+ ...(request.codec ? { codec: request.codec } : {}),
27
95
  ...(request.network ? { network: {
28
96
  ...request.network,
29
97
  ...(request.loopbackPort ? { loopbackPort: request.loopbackPort } : {}),
@@ -33,23 +101,44 @@ async function run(request) {
33
101
  ...(request.filesystemUpdatePort ? { filesystemUpdatePort: request.filesystemUpdatePort } : {}),
34
102
  ...(request.fileLocks ? { fileLocks: request.fileLocks } : {}),
35
103
  fileCoherence: request.fileCoherence,
104
+ signalState: request.signalState,
36
105
  browserProcess: {
106
+ // The loopback attachment is this process's one port and does not
107
+ // cross into a fork; a program whose only network is loopback (git,
108
+ // whose HTTP is its remote helper) forks with no network rather than
109
+ // with a network naming nothing, which the child's runtime refuses
110
+ // before it runs (every `fork` then ended in a silent 127).
111
+ fork: (process) => send({ type: "fork", id: request.id, ...process, stdin: request.stdin, threadPoolSize: request.threadPoolSize,
112
+ ...(request.network && request.network.allowedHosts.length > 0 ? { network: request.network } : {}) }),
113
+ ...(request.childFilesystemPolicyVersion === 1 ? { filesystemPolicyVersion: 1 } : {}),
37
114
  spawn: (process) => send({
38
115
  type: "spawn",
39
116
  id: request.id,
40
117
  ...process,
41
- filesystemPatch: createProcessFilesystemPatch(request.filesystem, filesystem.toSnapshot()),
118
+ filesystemPatch: createProcessFilesystemPatch(base, filesystem.toSnapshot()),
42
119
  }),
43
120
  kill: (pid, signal) => send({ type: "kill", id: request.id, pid, signal }),
44
121
  restore: (snapshot) => filesystem.replaceSnapshot(snapshot),
45
122
  },
46
- onStdout: (chunk) => send({ type: "stdout", id: request.id, chunk: new TextDecoder().decode(chunk) }),
123
+ onStdout: (chunk) => send({ type: "stdout", id: request.id, chunk }),
47
124
  onStderr: (chunk) => send({ type: "stderr", id: request.id, chunk: new TextDecoder().decode(chunk) }),
125
+ onDiagnostic: (message) => send({ type: "diagnostic", id: request.id, message }),
126
+ onFilesystemFinalized: () => { filesystemFinalized = true; },
48
127
  });
128
+ const snapshotStarted = performance.now();
129
+ const finalSnapshot = filesystem.toSnapshot();
130
+ const totalMs = performance.now() - received;
131
+ // the runtime prints its own phases for a long run; these are the worker's around it
132
+ if (totalMs > 2000)
133
+ console.log("[wali-profile]", JSON.stringify({ argv: request.argv.slice(0, 3), worker: {
134
+ filesystemMs: Math.round(filesystemMs), moduleMs: Math.round(moduleMs),
135
+ snapshotMs: Math.round(performance.now() - snapshotStarted), totalMs: Math.round(totalMs),
136
+ } }));
49
137
  send({
50
138
  type: "result",
51
139
  id: request.id,
52
- filesystem: filesystem.toSnapshot(),
140
+ filesystem: finalSnapshot,
141
+ filesystemFinalized,
53
142
  result: { stdout: result.stdout, stderr: result.stderr, exitCode: result.exitCode },
54
143
  });
55
144
  }
@@ -58,6 +147,7 @@ async function run(request) {
58
147
  type: "result",
59
148
  id: request.id,
60
149
  filesystem: filesystem.toSnapshot(),
150
+ filesystemFinalized,
61
151
  error: formatWorkerError(error),
62
152
  });
63
153
  }
@@ -71,39 +161,41 @@ function formatWorkerError(error) {
71
161
  const retained = Math.floor((MAX_ERROR_LENGTH - 96) / 2);
72
162
  return `${message.slice(0, retained)}\n… ${message.length - retained * 2} error characters truncated …\n${message.slice(-retained)}\nWALI error summary:\n${summary}`;
73
163
  }
74
- function loadModule(url, integrity) {
164
+ /**
165
+ * The program's module: the one the page handed over, compiled by an earlier
166
+ * worker, or fetched, checked and compiled here and reported to the page,
167
+ * which hands it to the program's next worker. Compiling a 6 MB module was 82
168
+ * to 278 ms of a run given a new worker (2026-09-24).
169
+ */
170
+ function loadModule(url, integrity, compiled, report) {
75
171
  const protocol = new URL(url, globalThis.location.href).protocol;
76
172
  if (protocol !== "blob:" && !integrity) {
77
173
  return Promise.reject(new Error("Remote WALI programs require pinned SHA-256 integrity metadata."));
78
174
  }
79
175
  const key = `${url}\n${integrity ?? "local-unverified"}`;
80
176
  let pending = modules.get(key);
177
+ if (!pending && compiled) {
178
+ pending = Promise.resolve(compiled);
179
+ modules.set(key, pending);
180
+ }
81
181
  if (!pending) {
82
182
  pending = fetch(url).then(async (response) => {
83
183
  if (!response.ok)
84
184
  throw new Error(`Unable to load WALI program: HTTP ${response.status}.`);
85
185
  const bytes = await response.arrayBuffer();
86
186
  if (integrity)
87
- await verifyIntegrity(bytes, integrity);
88
- return { bytes, module: await WebAssembly.compile(bytes) };
187
+ await verifyArtifactIntegrity(bytes, integrity);
188
+ const layout = findImportedMemory(new Uint8Array(bytes));
189
+ const artifact = { module: await WebAssembly.compile(bytes), ...(layout ? { layout } : {}) };
190
+ report(artifact);
191
+ return artifact;
89
192
  });
90
193
  modules.set(key, pending);
91
194
  pending.catch(() => modules.delete(key));
92
195
  }
93
196
  return pending;
94
197
  }
95
- async function verifyIntegrity(bytes, expected) {
96
- if (!/^sha256-[A-Za-z0-9+/]{43}=$/u.test(expected))
97
- throw new Error("Invalid WALI artifact integrity metadata.");
98
- const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", bytes));
99
- let binary = "";
100
- for (const byte of digest)
101
- binary += String.fromCharCode(byte);
102
- const actual = `sha256-${btoa(binary)}`;
103
- if (actual !== expected)
104
- throw new Error(`WALI artifact integrity mismatch: expected ${expected}, received ${actual}.`);
105
- }
106
198
  function send(message) {
107
- postMessage(message);
199
+ postMessage(message, (message.type === "spawn" || message.type === "fork") && message.descriptorTable ? [message.descriptorTable.port, ...(message.descriptorTable.releasePort ? [message.descriptorTable.releasePort] : [])] : []);
108
200
  }
109
201
  //# sourceMappingURL=worker-program-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-program-worker.js","sourceRoot":"","sources":["../src/worker-program-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-program-worker.js","sourceRoot":"","sources":["../src/worker-program-worker.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ export interface BrowserWaliWorkerProgramOptions {
11
11
  cwd?: string;
12
12
  env?: Readonly<Record<string, string>>;
13
13
  threadPoolSize?: number;
14
+ /** Set when the program's manifest lists `media.webcodecs`. */
15
+ codec?: {
16
+ version: 1;
17
+ };
14
18
  network: {
15
19
  relayUrl?: string;
16
20
  allowedHosts: readonly string[];
@@ -23,6 +27,13 @@ export interface BrowserWaliWorkerProgramOptions {
23
27
  spawn?: BrowserCommandBackend;
24
28
  /** Durability barrier applied after the process snapshot is restored. */
25
29
  onFilesystemCommit?(filesystem: BrowserFileSystem, patch?: import("./process-bridge.js").BrowserProcessFilesystemPatch): void | Promise<void>;
30
+ /**
31
+ * Trees whose files the process's image leaves out. A program names the
32
+ * trees it never reads (the other packs' installs), so its snapshot carries
33
+ * its own resources and the shared bin and not a page's every pack; the
34
+ * directories of those trees stay, so a cwd inside one still resolves.
35
+ */
36
+ excludedImagePaths?(): readonly string[];
26
37
  /** Adds process-private files without materializing them in the shared host filesystem. */
27
38
  prepareFilesystem?(snapshot: BrowserFileSystemSnapshot): Promise<BrowserFileSystemSnapshot>;
28
39
  /** Persists and removes process-private files before a completed snapshot reaches the host. */
@@ -32,15 +43,19 @@ export interface BrowserWaliWorkerProgramOptions {
32
43
  /** Private overlay consulted by lock-bound file coherence instead of the shared host filesystem. */
33
44
  coherenceFilesystem?: BrowserProcessFileSystem;
34
45
  }
35
- /** Runs one unchanged WALI executable off the UI thread while retaining its compiled module. */
36
46
  export declare class BrowserWaliWorkerProgram {
37
47
  private readonly filesystem;
38
48
  private readonly program;
49
+ readonly capabilities: Readonly<{
50
+ filesystemPolicy: true;
51
+ }>;
52
+ /** Started by the first run, so a program the page offers and never runs costs no worker. */
39
53
  private worker;
40
54
  private pending;
41
55
  private stdin;
42
56
  private terminalSize;
43
57
  private nextId;
58
+ private readonly forkWorkers;
44
59
  private readonly childControllers;
45
60
  private openUrlHandler;
46
61
  private urlScanTail;
@@ -48,7 +63,9 @@ export declare class BrowserWaliWorkerProgram {
48
63
  private processPorts;
49
64
  private threadOutputPorts;
50
65
  private filesystemUpdatePort;
66
+ private readonly traceId;
51
67
  private preparing;
68
+ private applyingFilesystem;
52
69
  constructor(filesystem: BrowserFileSystem, program: BrowserWaliWorkerProgramOptions);
53
70
  run(argv: readonly string[], options?: BrowserProcessRunOptions): Promise<BrowserProcessResult>;
54
71
  private forwardStdin;
@@ -60,12 +77,19 @@ export declare class BrowserWaliWorkerProgram {
60
77
  terminate(): void;
61
78
  private createWorker;
62
79
  private handleMessage;
80
+ private forkChild;
63
81
  private spawnChild;
64
82
  private applyLiveFilesystemPatch;
83
+ private scheduleFilesystemImport;
65
84
  private finishPending;
66
85
  private emitStdout;
67
86
  private emitStderr;
68
87
  private scanOpenUrls;
69
88
  private resetWorker;
70
89
  }
90
+ /**
91
+ * An abort that is a signal: the reason carries its number as `signal`, which
92
+ * the shell's `kill` and a process's own kill of a child set.
93
+ */
94
+ export declare function signalAbortReason(signal: number, message: string): DOMException;
71
95
  //# sourceMappingURL=worker-program.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-program.d.ts","sourceRoot":"","sources":["../src/worker-program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-program.d.ts","sourceRoot":"","sources":["../src/worker-program.ts"],"names":[],"mappings":"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"}