SDK y paquetes@styx/api-contractsbusvariables

Variable: MEDIA_DAEMON_CONTRACTS

Referencia de @styx/api-contracts generada de su TSDoc.

ImplementadoSin versión del tren todavía· generada desde packages/api-contracts/package.json

Página generada desde el TSDoc de @styx/api-contracts. No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere.

Variable: MEDIA_DAEMON_CONTRACTS

const MEDIA_DAEMON_CONTRACTS: object

Todos los contratos que atiende el daemon por su socket de control.

Type Declaration

MediaCancel

MediaCancel: IBusContract<"cmd", TObject<{ packagingId: TOptional<TString>; requestId: TString; sessionId: TOptional<TString>; }>, TObject<{ cancelled: TBoolean; }>>

Cancela un requestId DENTRO de su sesión (SEC-Z14): sessionId para una sesión de bytes (sess_*), packagingId para un empaquetado (pkg_*). El mismo requestId en otra sesión no se toca.

MediaCloseIngest

MediaCloseIngest: IBusContract<"cmd", TObject<{ sessionId: TString; }>, TObject<{ closed: TBoolean; }>>

Desliga la sesión: todo token suyo muere a la vez (revocación). Idempotente.

MediaClosePackaging

MediaClosePackaging: IBusContract<"cmd", TObject<{ packagingId: TString; }>, TObject<{ closed: TBoolean; }>>

Cierra un empaquetado (pkg_*) y libera su plan de segmentos. Idempotente.

MediaCloseSession

MediaCloseSession: IBusContract<"cmd", TObject<{ sessionId: TString; }>, TObject<{ closed: TBoolean; }>>

Cierra una sesión de bytes del daemon y libera lo que retiene. Idempotente: closed: false significa que el daemon no tenía esa sesión.

MediaCreateSession

MediaCreateSession: IBusContract<"cmd", TObject<{ capActor: TOptional<TString>; capResource: TOptional<TString>; relPath: TString; rootId: TString; }>, TObject<{ error: TOptional<TObject<{ code: TString; message: TString; recoverable: TBoolean; }>>; result: TOptional<TObject<{ certHash: TOptional<TString>; endpoint: TString; fileSize: TOptional<TInteger>; sessionId: TString; transportType: TUnion<[TLiteral<"webtransport">, TLiteral<"h3">, TLiteral<"http+unix">]>; }>>; }>>

Abre en el daemon una sesión de bytes sobre un fichero de una raíz de medios ({rootId, relPath}, dec-0117 I7). Con capActor/capResource la sesión queda ligada a ese actor y recurso, y los transportes exigen una SCT que coincida (dec-0117 I2, dec-0119).

MediaOpenIngest

MediaOpenIngest: IBusContract<"cmd", TObject<{ capActor: TString; capResource: TString; }>, TObject<{ error: TOptional<TObject<{ code: TString; message: TString; recoverable: TBoolean; }>>; result: TOptional<TObject<{ endpoint: TString; rootId: TString; sessionId: TString; }>>; }>>

Liga una sesión ing_* al actor y a la raíz de ingesta del daemon; la SCT ingest de esa sesión es lo que el IngestSink acepta.

MediaOpenMoqtSession

MediaOpenMoqtSession: IBusContract<"cmd", TObject<{ capActor: TString; capResource: TString; }>, TObject<{ error: TOptional<TObject<{ code: TString; message: TString; recoverable: TBoolean; }>>; result: TOptional<TObject<{ sessionId: TString; }>>; }>>

Abre una sesión MoQT de publicación en el daemon. Sólo la admite styx-ops (harness y operación): ningún servicio la llama en un production path.

MediaOpenPackaging

MediaOpenPackaging: IBusContract<"cmd", TObject<{ audio: TOptional<TInteger>; capActor: TOptional<TString>; capResource: TOptional<TString>; engine: TOptional<TUnion<[TLiteral<"zig">, TLiteral<"libav">, TLiteral<"auto">]>>; includeAudio: TOptional<TBoolean>; relPath: TString; rootId: TString; segmentMs: TOptional<TInteger>; video: TOptional<TInteger>; }>, TObject<{ error: TOptional<TObject<{ code: TString; message: TString; recoverable: TBoolean; }>>; result: TOptional<TObject<{ certHash: TOptional<TString>; codecs: TString; engine: TUnion<[TLiteral<"zig">, TLiteral<"libav">]>; fallback: TOptional<TString>; masterUrl: TOptional<TString>; mediaUrl: TOptional<TString>; packagingId: TString; segments: TInteger; targetDurationS: TInteger; tcpMasterUrl: TOptional<TString>; transportType: TUnion<[TLiteral<"h3">, TLiteral<"none">]>; }>>; }>>

Abre un empaquetado HLS/CMAF de un fichero de una raíz de medios (dec-0110): elige motor (zig, libav o auto, con el motivo del fallback si lo hubo) y devuelve las URLs de master y media playlist sobre HTTP/3, o transportType: none sin listener.

MediaPing

MediaPing: IBusContract<"qry", TObject<{ }>, TObject<{ packagingSessions: TInteger; sessions: TInteger; }>>

Sonda de vida del daemon por el socket de control: devuelve cuántas sesiones de bytes y de empaquetado tiene abiertas.

MediaPollIngestEvents

MediaPollIngestEvents: IBusContract<"cmd", TObject<{ ackSeq: TInteger; }>, TObject<{ error: TOptional<TObject<{ code: TString; message: TString; recoverable: TBoolean; }>>; events: TOptional<TArray<TObject<{ actorDigest: TString; blake3: TString; filename: TString; key: TString; rootId: TString; seq: TInteger; sessionId: TString; sizeBytes: TInteger; uploadId: TString; }>>>; }>>

Confirma todo evento con seq <= ackSeq y devuelve los más antiguos sin confirmar (como mucho MAX_INGEST_EVENTS_PER_POLL).

MediaProbe

MediaProbe: IBusContract<"qry", TObject<{ engine: TOptional<TUnion<[TLiteral<"zig">, TLiteral<"libav">, TLiteral<"auto">]>>; relPath: TString; rootId: TString; }>, TObject<{ error: TOptional<TObject<{ code: TString; message: TString; recoverable: TBoolean; }>>; result: TOptional<TObject<{ container: TUnion<[TLiteral<"mp4">, TLiteral<"mov">, TLiteral<"matroska">, TLiteral<"webm">]>; durationUs: TOptional<TInteger>; engine: TUnion<[TLiteral<"zig">, TLiteral<"libav">]>; fileSize: TInteger; streams: TArray<TObject<{ channels: TOptional<...>; codec: TString; default: TBoolean; frameRateDen: TOptional<...>; frameRateNum: TOptional<...>; height: TOptional<...>; index: TInteger; kind: TUnion<...>; language: TOptional<...>; sampleRate: TOptional<...>; width: TOptional<...>; }>>; }>>; }>>

Facts de un asset por el motor de medios del daemon, en proceso (dec-0110: FFmpeg sólo como librería, nunca como proceso). Sustituye al ffprobe que workers-svc lanzaba como proceso (cmd.workers.probe, retirado).

engine: zig (facts propios), libav (FFmpeg 8 vía FFI) o auto (la misma regla que openPackaging: zig si lee el contenedor, si no libav cuando está compilado). Sin engine, el default del daemon (STYX_MEDIA_ENGINE). La respuesta dice qué motor contestó.

MediaSeek

MediaSeek: IBusContract<"cmd", TObject<{ requestId: TString; sessionId: TString; timeUs: TInteger; }>, TObject<{ found: TBoolean; }>>

Pide un seek a timeUs dentro de una sesión de bytes, identificado por requestId (el que cmd.media.cancel puede cancelar, r04).