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.
SessionDescriptor — descriptor efímero de una sesión de playback.
Es la pieza de convergencia entre los dos workstreams de F0 (r24 §5.3):
playback-svc (Bun) lo construye al resolver un PlaybackIntent y lo
devuelve al cliente; el endpoint (dentro de delivery) es lo que en la
convergencia sesión 2 se cablea al daemon Zig vía IPC CreateSession +
evento TransportEndpoint.
El descriptor embede el IPlaybackPlan composicional ya resuelto (con
mode derivado, r20 §1) para que el cliente conozca el pipeline decidido
y pueda exponerlo en UI/telemetría.
Scope F0.A.2a (guardrail r24 §3): descriptor efímero en memoria, SIN persistencia sofisticada, SIN UI, SIN políticas finales de eviction. Es un contrato de paso — su riqueza crece en F0.A.2/F2 cuando entra el daemon real y el cache de sesiones.
readonlyactor:IActorContext
Actor OIDC-first que disparó la sesión. En F0.A.2a es dev actor
(forma correcta {service, userId?, roles?} SIN auth real — guardrail
r24 §3). En F-IDENTITY se reemplaza por el actor OIDC PocketID real.
readonlyassetId:string
Asset que se reproduce (FK a catalog media_assets.id).
readonlycreatedAt:string
Timestamp ISO 8601 de creación de la sesión.
readonlydelivery:ISessionDelivery
Cómo el cliente llega a los bytes (transport + endpoint + token).
readonlyexpiresAt:string
Timestamp ISO 8601 de expiración de la sesión efímera.
readonlyplan:IPlaybackPlan
Plan composicional resuelto por el Planner. mode ya está derivado
(r20 §1): el cliente NO lo envía, lo recibe calculado.
readonlysessionId:string
UUID v4 de la sesión efímera (crypto.randomUUID()).