Package-level declarations
Types
A marker for events. Concrete event types live with the plan provider. The orchestrator only routes them to LinearOnboardingStep.transition.
The screen that renders a step. The orchestrator only tags steps with it. Routing is up to the caller.
Drives one linear onboarding run at a time. It walks a LinearOnboardingPlan's steps, skips any whose LinearOnboardingStep.precondition is false, and publishes the current position as state. A step can branch by returning a LinearOnboardingTransition. LinearOnboardingTransition.SwitchTo pushes a side plan, and LinearOnboardingTransition.ReturnAndAdvance pops back to its caller.
An ordered list of steps with callbacks for the end of the run. onCompleted and onSkipped run just before the matching terminal state, and on completion result is passed into LinearOnboardingState.Completed.result. Only the root plan's callbacks and result run. When a side plan aborts or runs out of steps, that outcome surfaces through the root.
A stable, human-readable id for a plan, handy for filtering and telemetry. Not persisted.
A marker for whatever a completed run produced, such as a pending query. Concrete types live with the plan provider.
Where a run is. Either not yet started, paused on a step, or finished (completed or skipped).
The least the orchestrator needs to walk a plan. Concrete steps live with the plan provider. Anything a renderer needs, like which dialog to show, goes on host-specific subtypes that the renderer downcasts to.
A stable, human-readable id for a step, handy for logging and telemetry. Not persisted.
Functions
The states of the run for planId, both in-progress and terminal. LinearOnboardingState.NotStarted and states from other plans never match. A new collector gets the current matching state as soon as it subscribes.