Conversation
Waking → ready → listening → acknowledged → thinking → result, clarification, or confirmation.
conversationState
Interaction contract · prototype v1
One reference for the companion’s ten conversation states, independent capability conditions, action-safety rules, transitions, timing, native boundaries, and downloadable Lottie animations.
Deterministic product reference. No live microphone, speech model, navigation, or app-action API is included.
Motion gallery
Select any animation to replay it at full size. The set covers ten conversation states, activity and surface variants, and independent microphone and completion conditions.
Implementation model
Do not encode permission, capture, keyboard, or surface visibility into the conversation enum. Those conditions change independently.
Waking → ready → listening → acknowledged → thinking → result, clarification, or confirmation.
conversationState
Permission and Mic on/off are distinct. Bot audio can remain available while capture is off.
permission + micEnabled
The orb persists across app pages, stays draggable in every state, and is clamped inside the visible screen. The first tap activates it; the next reveals independent circular actions around it. The orb shifts inward near an edge so every action remains reachable. No companion overlay exists.
resting | active | actions
Voice leads. Keyboard and Dialogue are entry-point events whose native destinations remain intentionally deferred.
mic + keyboard + dialogue
Default sequence
Consequential actions
Purchases, bookings, cancellations, and account changes stop at awaiting-confirmation. Show the exact action and material consequence before proceeding.
Interruption
District remains usable while the companion works. Speech output can be interrupted by voice or tap; app actions should only stop from an explicit tap.
Partial completion
Never imply an external side effect was undone. Keep committed steps, cancel only future steps, then ask what the user wants to do next.
Developer package
The ZIP contains the same individual files below. Treat the Swift model as implementation guidance, then connect it to District’s production voice and action systems. Two Lottie sets ship side by side — V1 canonical and the V2 precision build — compare them live before choosing.