Server-internal command emitted by the leave-reassign saga (server crate):
reconcile a stream’s control lock against live presence. Exposed so the saga can emit it.
Reconcile live camera targets into a persistent shot library. This command
is create-only by (library, kind, target_name): discovery can add a new
rail or preset, but can never overwrite an operator’s tuned Shot values.
Atomically import a Pulse-profile OTIO document into the shared definition
library. Camera execution remains untouched; this command only persists Shot
and Timeline definitions.
Idempotent persisted-data migration invoked by OTIO-native clients when
they connect. This is deliberately explicit and observable rather than a
hidden database rewrite during server startup.
Remove an empty collection. Memberships directly inside it are removed,
while child collections must be deliberately handled first so a broad tree
cannot disappear from one accidental click.
Upsert the durable global camera settings. The client sends this whenever the
operator changes a control, and reads them back (GetCamPrefsByQuery) on connect
to restore the panel + re-apply to the freshly-launched pawn. Full struct each
time (last-write-wins) — simplest and the payload is tiny.
Persist one stream’s authored Home camera pose and lens. The command only
updates server state; moving the live camera remains an explicit client action.
Create or update a generic organizational bin. Collection names and depth
are user-defined; the server enforces only tree integrity and sibling-name
uniqueness.
Bridge-mirrored summary of a cluster the operator may capture on. The
browser never queries Pulse Cluster, so these summaries are how the UI
learns valid targets at all.
Client-side record trigger: set the intent to record streamer_id (active on/off) +
camera metadata. The recorder service watches RecordingRequest, chooses the active
rig (rail/crane) or preset/shot as its human artifact label, and starts/stops the
server-side no-transcode capture. Keyed by streamer_id (one active recording per stream).
Upsert one persistent shot definition. The stable shot ID is supplied by the
client so reconnects cannot create duplicate definitions for the same target.
Set a stream’s friendly DISPLAY name (from the cluster def’s previs.stream_name,
written on previs launch, keyed by the StreamerId). Upsert / last-write-wins. The
StreamerId is unchanged, so duplicate names never collide.
Create or update one named reusable timeline. Every entry persists a complete
parameter snapshot; Shot values are defaults used only when adding or
migrating an entry.