eoka-protocol
Protocol types and tool catalog metadata for Eoka browser automation.
This crate is the source of truth for daemon request wire commands, stable tool paths, operation metadata, input schemas, and manifest projection. Downstream surfaces such as the CLI manifest, Tack adapter, SDK, and MCP integration use these definitions to avoid drift.
The sidecar module defines the NDJSON envelopes, lifecycle negotiation,
structured errors and the actual implemented sidecar method registry. It is
separate from the daemon/CLI catalog. Export complete per-method input and result
JSON Schemas with cargo run -p eoka-protocol --bin export-sidecar-schema.
Sidecar request IDs are positive integers through 9007199254740991. Integer
fields in exported schemas retain their Rust bounds and are capped at the
JavaScript exact integer range; runtime validation rejects unsafe integers rather
than rounding. Responses contain exactly one result or error, including
successful null results. Action and CDP errors retain structured evidence.
Evaluation preserves the existing { "result": ... } wire wrapper and accepts
only JSON-compatible data. Explicit null is successful; undefined, functions,
symbols, BigInt, non-finite or unsafe integral numbers, array holes, cycles and
non-JSON objects are errors. page.execute discards its return value.
Protocol 1.3 preserves the screenshot {dataBase64} result while adding typed
PNG/JPEG/WebP options and direct non-overwrite file output. In-memory screenshot
bytes are bounded at 16 MiB. Artifact metadata reports absolute paths and
JavaScript-safe byte counts; native video is MP4 with Chrome-selected codec.
Canonical recording start/get/stop/cancel DTOs use caller-known UUIDs and expose running/finalizing/completed/cancelled/failed states. Completed records require a published artifact; failures preserve stage, code, retained private partial path and uncertain-cleanup evidence. Recovery is live-session-scoped, never automatic restart. Method/capability negotiation does not guarantee a browser encoder. The Node contracts and bundled schemas are generated from this module. See the wire protocol for transition, retry, cancellation and file-publication semantics.