T8: sausage:process WIT (spawn, wait, kill), one store per process over the shared root, /proc/processes, /run, pipeline and cancellation groups, Exec. brush and 78 uutils commands; the shared cwd-init object sets the cwd from PWD and keeps numeric exit codes. The corpus matches native bash. T9: V8 (deno_core) runs pi-durable, pi-ai and chord; SQLite storage in <dir>/host/harness.sqlite (WAL, synchronous=FULL); file tools on the VFS, bash through Exec; resumes after SIGKILL.
33 lines
1.6 KiB
Markdown
33 lines
1.6 KiB
Markdown
# Host JavaScript
|
|
|
|
The console uses pi-durable in V8. Rust owns the SQLite connection.
|
|
The console runs V8 on a dedicated current-thread Tokio runtime.
|
|
This satisfies Deno's runtime requirement without a change to the CLI runtime.
|
|
The database lives at `<dir>/host/harness.sqlite`, outside the world.
|
|
WAL preserves atomic transactions after SIGKILL. `synchronous=FULL` flushes each commit before SQLite reports success.
|
|
|
|
The coding tools access the shared VFS through Rust operations.
|
|
The shell sends commands to the host's `Exec` implementation.
|
|
The adapter supplies the filesystem operations that the four coding tools use.
|
|
It does not implement the other portable filesystem capabilities or shell spill files.
|
|
The console currently uses an explicit unavailable stub. Host integration can call `run_with_exec`.
|
|
|
|
## Reproduce the bundles
|
|
|
|
```sh
|
|
npm ci --prefix host/js
|
|
npm run --prefix host/js bundle
|
|
CARGO_TARGET_DIR=target/harness nix develop -c cargo test -p sausage --test harness
|
|
```
|
|
|
|
The lock file pins npm dependencies. The checked-in bundles let Cargo build without npm or network access for JavaScript.
|
|
Cargo still needs its normal Rust dependencies and the V8 archive.
|
|
|
|
For Nix, use a separate npm derivation with `importNpmLock` and the checked-in lock file.
|
|
Run the bundle script there. Pass its output to the Rust source derivation before Crane builds the host.
|
|
The Rust build must not execute npm or download JavaScript packages.
|
|
|
|
The console reads `PI_PROXY_BASE_URL` and `PI_PROXY_API_KEY` from the host environment.
|
|
It selects `openai/gpt-6.1-sol` with low reasoning effort.
|
|
This model rejects disabled reasoning. Tests use the faux provider without credentials.
|