Push to talk. Holding the button opens the channel; the occupancy list shows who holds it; releasing hands the utterance to the agent, which composes and then answers. The composer underneath is the typed path to the same agent.
The occupancy rows are StagedMarks, so a page with forty of them costs one engine per distinct state. An empty row renders "not in use" rather than a gap, because the question the list answers is whether anything is touching the resource right now, and silence is an answer.
A voice interface has one problem a text one does not: nothing on screen proves that the agent is hearing you. The character is that proof. It listens when the microphone opens, turns into a level meter while you speak, composes while the transcript is being answered, and shows who is holding the channel when several agents could be.
the microphone opens; the character nods now and then
listening
dictating
speech is detected; the wave belt is the level meter
dictating
composing
the utterance ended and a reply is being written
composing
sending
the reply goes out — spoken, with the voice dial in speaking mode
sending
idle
playback finished
listening is protocol id 35 and dictating is 46. listening nods on impulses rather than a curve — velocity added to the vertical spring — which is what makes it read as attention rather than as an animation loop.
dictating hands its body to wave: four bars with a pseudo-random envelope, a level meter drawn as a character. In line-face mode dictating, composing and sending also pulse the mouth on two incommensurate sines, so it reads as speech rather than a metronome.
voice is the dial. level is 0–1 from the host's audio meter; bands is how many bars; mode tells listening from speaking, and speaking bars move faster and taller. Each band wobbles on its own pair of sines — a meter where every bar moves together reads as a slider, not a voice.