Referencia de @styx/api-contracts generada de su TSDoc.
packages/api-contracts/package.jsonPágina generada desde
el TSDoc de @styx/api-contracts. No se edita a mano:bun run docs:genla regenera ybun run docs:checkfalla si difiere.
constMEDIA_DAEMON_CONTRACTS:object
Todos los contratos que atiende el daemon por su socket de control.
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:
IBusContract<"cmd",TObject<{sessionId:TString; }>,TObject<{closed:TBoolean; }>>
Desliga la sesión: todo token suyo muere a la vez (revocación). Idempotente.
MediaClosePackaging:
IBusContract<"cmd",TObject<{packagingId:TString; }>,TObject<{closed:TBoolean; }>>
Cierra un empaquetado (pkg_*) y libera su plan de segmentos. Idempotente.
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:
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:
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:
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:
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:
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:
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:
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:
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).