Skip to content

ResolvedPlan

Defined in: console-sdk/src/session/types.ts:259

The session’s normalized plan (SDK_PLAN.md §3.12.4): what StartWorkoutInput resolves to after interval normalization and round expansion (rows 29–30). Renderable — drives IntervalHeader/RoundHeader.

Every interval carries an explicit role (null = broadcast), the rest is defaulted, and rounds is 1 for a free/target workout. Produced by the pure normalizer in ./plan.

intervals: readonly NormalizedInterval[]

Defined in: console-sdk/src/session/types.ts:274

Normalized intervals, each with an explicit role (null = broadcast) and a defaulted rest. A free workout resolves to an empty list; a structured plan to one entry per leg with rounds already materialized (multi-entry plans are tiled ×rounds and carry rounds: 1).


kind: "free" | "intervals"

Defined in: console-sdk/src/session/types.ts:261

Which programming kind produced this plan.


mode: "broadcast" | "sequential"

Defined in: console-sdk/src/session/types.ts:267

The choreography for an intervals plan; always 'broadcast' for a free/single-target workout (the sequential executor is never selected for it). 'sequential' marks the turn-based relay path.


rounds: number | "unlimited"

Defined in: console-sdk/src/session/types.ts:276

Number of rounds, or 'unlimited'; 1 for a free/target workout.


target: WorkoutTarget | null

Defined in: console-sdk/src/session/types.ts:278

The whole-workout target for a free workout, else null.


targets: PerformanceTargets | null

Defined in: console-sdk/src/session/types.ts:280

The whole-workout performance targets for a free workout, else null.