feat: add the worker-thread code runtime (dsh-code-runtime-worker)
The shipped backend of the code-execution seam, per the Code Mode RFC's
worker-thread section: one fresh Node worker per run, executing the
model's TypeScript after a host-side type-strip (wrapped in an
async-function shell so top-level return/await parse, sliced back out
position-preserved), bindings bridged over the message port under
hostile-peer rules (own-property name lookup, at-most-once replies,
post-settlement drops, null-prototype namespaces), logs streamed eagerly
with an in-band truncation marker, and two independent budgets — measured
event-loop busy time (computeMs) plus a never-pausing wall ceiling
(maxWallMs) — funneling into worker.terminate(). env: {} and execArgv: []
keep the isolate hermetic; disposal aborts in-flight runs and awaits
worker exits.
The worker entry loads unbuilt via Node's native type stripping
(src/worker.ts, erasable-only) and ships built as a sibling tsdown bundle
(lib/worker.js); tests/built-lib.e2e.ts pins the built load path under
plain node and joins the built-artifact smoke gate. Unit suites cover the
bootstrap in-process (fake port) and the runtime over real workers,
per-file 100%.
This commit is contained in:
@@ -31,7 +31,12 @@ export default defineConfig({
|
||||
// can't import one without booting it, so they are driven by the keyless
|
||||
// Loader-path smoke (a real subprocess) instead of the in-process unit
|
||||
// suite — the same reason `examples/start.ts` sat out of coverage scope.
|
||||
exclude: ['packages/*/*/src/types.ts', 'packages/*/*/src/bin.ts'],
|
||||
// `worker.ts` files are the same class as bin.ts: self-executing
|
||||
// worker-thread entrypoints that only ever run inside a spawned isolate
|
||||
// the v8 provider cannot observe. They stay thin glue over in-process-
|
||||
// tested logic (bootstrap.ts) and are pinned by real-worker integration
|
||||
// tests.
|
||||
exclude: ['packages/*/*/src/types.ts', 'packages/*/*/src/bin.ts', 'packages/*/*/src/worker.ts'],
|
||||
// 100% or it doesn't merge (docs/testing.md: excessive tests are welcome).
|
||||
// Per-file so a well-covered big file can't subsidize a bare one.
|
||||
// Every v8 ignore comment must carry a reason — see the quality-gates RFC
|
||||
|
||||
Reference in New Issue
Block a user