@tutti-os/workbench-host
v0.0.123
Published
Product-neutral Workbench coordinator and disposable session lifecycle for renderer hosts.
Keywords
Readme
@tutti-os/workbench-host
Product-neutral Workbench coordinator and disposable session lifecycle for renderer hosts.
The package owns renderer-local session indexing, immutable partition replacement, lease disposal, stable host-input publication, surface attachment handoff, and deterministic capability ownership checks. It does not own React, Electron, product transport clients, authentication discovery, or product business policy.
Runtime API
import {
createWorkbenchHostSessionConfiguration,
WorkbenchHostCoordinator,
WorkbenchHostSession
} from "@tutti-os/workbench-host";
const configuration = createWorkbenchHostSessionConfiguration({
createSession: (partition) =>
new WorkbenchHostSession({
partition,
resolve: (update: string) => ({
hostInput: { value: update },
state: update
})
})
});
const coordinator = new WorkbenchHostCoordinator();
const lease = coordinator.open({
configuration,
partition: {
scope: { id: "workspace-1", kind: "workspace" }
}
});
lease.session.update("ready");
lease.release();
coordinator.dispose();Create one coordinator per renderer/window dependency-injection root. Product DI tokens and registration stay in the product renderer. Separate renderer coordinators never share sessions, and renderer isolation does not grant a second durable snapshot writer.
Conformance
The @tutti-os/workbench-host/conformance subpath exposes runner-neutral test
cases. Consumers can register the same cases in Node test, Vitest, or another
test runner and may supply their DI-resolved coordinator, partition mapping, and
capability profile fixture.
import { test } from "node:test";
import { createWorkbenchHostConformanceCases } from "@tutti-os/workbench-host/conformance";
for (const conformanceCase of createWorkbenchHostConformanceCases()) {
test(conformanceCase.name, conformanceCase.run);
}The shared cases cover the public kernel contract. Product repositories and composition roots must add their own durable-writer, metadata preservation, snapshot restore, and transport isolation cases.
