Files
2026-08-16 14:58:47 +08:00

26 lines
1.3 KiB
TypeScript

/**
* `lib/choreography` — the shared orchestration/spec modules.
*
* The single source of truth for the semantics a faithful classroom-video
* exporter needs from playback, so neither the app runtime nor the exporter
* re-implements (and silently drifts from) the other:
*
* - **Timing** — playback timing constants + the deterministic no-audio speech
* estimate ({@link estimateSpeechDurationMs}).
* - **Cursor** — {@link resolvePlaybackCursor}, the scene/action walk.
* - **Timeline** — {@link resolveActionTimeline}, the index→time expansion.
* - **Descriptors** — versioned, declarative animation descriptors
* ({@link DESCRIPTORS}, e.g. `spotlight.v1`) + their zod schema.
*
* Kept in `lib/` (not a package) because these semantics co-evolve with the
* playback engine. Purity is machine-enforced: these modules import only
* `@openmaic/dsl` (types + the fire-and-forget partition), `zod` (descriptor
* schema), and pure helpers — no React / DOM / GSAP / framer-motion / render
* backend, so the exporter can interpret them in a pure Node environment. The
* eslint `@/`-boundary block on `lib/choreography/**` keeps host-app paths out.
*/
export * from './timing';
export * from './cursor';
export * from './timeline';
export * from './descriptors/index';