@drawskit/engine-node
v0.1.4
Published
Headless WhiteboardEngine workspace replay for Node compaction
Readme
@drawskit/engine-node
Node.js headless workspace replay engine. The package includes its WASM engine; no separate WASM package or build tools are required at runtime.
import { getEngineVersion, materializeWorkspace } from '@drawskit/engine-node';
console.log(getEngineVersion());
const result = materializeWorkspace({
room_id: 'example', base_seq: 0, target_seq: 0, workspace: null, envelopes: [],
});Build from the repository root with pnpm build:wasm, then
pnpm --filter @drawskit/engine-node build.
The Docker build also requires the generated platforms/web/drawskit-wasm/pkg/ input.
See the release guide.
Headless replay imports server baselines through Rust Core's
import_authoritative_workspace, preserving every board camera. Client
import_workspace keeps device-local join behavior. Zero-tail baselines also
pass through Core import/export validation. catch_up.skipped is an explicit
counter for authoritative revision conflicts that advance the room sequence.
Sidecar requests require all five fields shown above with exact JSON types;
missing fields and numeric strings are rejected. Presentation records are mapped
by room-svc into existing Core set_active_board, set_viewport,
set_courseware_page, or media_marker operations; they occupy the same
contiguous room sequence as drawing operations.
The new authoritative import requires rebuilding the bundled WASM and this Node package together. Local task artifacts are development evidence, not a published release. Update the backend's released dependency and verify deployment artifacts before enabling classroom frozen submissions.
forkWorkspace({target_room_id, workspace}) creates a detached content baseline
through Rust WorkspaceExport::fork_for_room. It requires a different, nonempty
room identity and a complete board graph. The output starts at checkpoint zero,
retains pages/shapes/cameras/courseware references, and clears source board
versions, element revisions, operation IDs, tombstones, and WebView readiness.
It leaves the input unchanged and does not grant access or copy external asset
objects. Sidecar exposes the same operation at POST /v1/fork.
Fork is an internal server capability, rather than a client rendering API. Each client joins the freshly initialized target room through its existing workspace/bootstrap port. Backend orchestration must initialize an empty private room before granting access, and must copy or authorize embedded private assets separately. A source snapshot URL or raw JSON rewrite does not establish that workflow. Version 0.1.4 is prepared locally; package publication and deployment are separate steps.
