Files
sausage/host/js
surma 57a47b069e host: process table, shell, coreutils and harness (T8, T9)
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.
2026-11-06 16:34:34 +00:00
..

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

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.