You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bug(workspace): a voice call sits at the top of the thread instead of where it happened, and the agent's next typed turn does not know what was said #2694
A voice call in the Workspace is part of the conversation it was made in, so it must sit in the thread at the point in time it happened — after the typed turns that came before it and before the ones typed after it. Today the "Voice call" block ends up pinned at the top of the discussion instead of where the call took place in the sequence, so a conversation that mixes speaking and typing reads out of order.
The same defect has a second face on the agent's side: the agent's next typed turn does not reliably know what was just said in the call. A person who talks something through and then continues in text expects the agent to pick up where the call left off. Today that only happens on a cold turn; on the common path, where the thread resumes the agent's live session, the spoken exchange is not in the agent's context at all.
Context
Reported by the operator on dev (2026-09-10) while using the Workspace voice mode (abilityai/trinity-enterprise#534, in development): start a voice call, talk something through, end the call, then carry the same topic on in text. The natural read of that thread is chronological — text, the call, more text. Instead the call's transcript block stays at the head of the thread and the follow-up typed turns appear to belong to a different, earlier conversation.
The #534 acceptance criteria already say the spoken turns are written into the chat that was active when the call started, "in order". This sharpens that: in order means in the thread's timeline, relative to every other turn, not just internally ordered inside the block.
Agent context (operator doubt, verified on dev 2026-09-10): the call runs on the voice provider and writes its spoken turns into the thread as rows; the agent's own session never saw them. A typed turn replays recent thread history to the agent only when the thread starts cold; when it resumes the agent's live session, the history replay is deliberately dropped on the assumption that the session already remembers the conversation. That assumption is true for typed turns and false for spoken ones, so after a voice call the resumed agent has no record of it. Even the cold path keeps only the last dozen spoken rows per call and summarises the rest as a count.
Acceptance Criteria
The thread is one timeline. A voice call's block appears exactly where the call happened: after every turn (typed or spoken) that preceded it and before every turn that followed it.
Typed turns sent after the call ends land below the call's block, and a second call later in the same thread produces a second block at its own position — never merged into, or placed beside, the first.
The position holds on every read of the thread: live right after the call ends, after a page reload, after switching chats and coming back, and when the thread is long enough that the history window no longer starts at its beginning.
Two rows of one spoken exchange (the person's line and the agent's reply) keep their order relative to each other and to the neighbouring typed turns; nothing is reordered by ties in timestamps.
Regression test covering a thread of the shape typed → call → typed → call → typed that asserts the render order.
The agent knows what was said. The first typed turn after a voice call, in the same chat, is answered with the call's content in the agent's context, whether that turn resumes the agent's live session or starts cold. A question like "so, what did we just agree on?" gets the right answer.
The spoken turns reach the agent as part of the thread's timeline, in the same order the person sees them, and marked as spoken; the platform's own rows (the call's summary line) are never replayed as words the agent said.
A long call is not silently truncated to a handful of lines with no way for the agent to reach the rest; whatever budget applies, the agent is told what was left out and the full transcript remains readable to it in the thread.
Test: a resumed-session turn following a voice call carries the call's content.
Summary
A voice call in the Workspace is part of the conversation it was made in, so it must sit in the thread at the point in time it happened — after the typed turns that came before it and before the ones typed after it. Today the "Voice call" block ends up pinned at the top of the discussion instead of where the call took place in the sequence, so a conversation that mixes speaking and typing reads out of order.
The same defect has a second face on the agent's side: the agent's next typed turn does not reliably know what was just said in the call. A person who talks something through and then continues in text expects the agent to pick up where the call left off. Today that only happens on a cold turn; on the common path, where the thread resumes the agent's live session, the spoken exchange is not in the agent's context at all.
Context
Reported by the operator on
dev(2026-09-10) while using the Workspace voice mode (abilityai/trinity-enterprise#534, in development): start a voice call, talk something through, end the call, then carry the same topic on in text. The natural read of that thread is chronological — text, the call, more text. Instead the call's transcript block stays at the head of the thread and the follow-up typed turns appear to belong to a different, earlier conversation.The #534 acceptance criteria already say the spoken turns are written into the chat that was active when the call started, "in order". This sharpens that: in order means in the thread's timeline, relative to every other turn, not just internally ordered inside the block.
Agent context (operator doubt, verified on
dev2026-09-10): the call runs on the voice provider and writes its spoken turns into the thread as rows; the agent's own session never saw them. A typed turn replays recent thread history to the agent only when the thread starts cold; when it resumes the agent's live session, the history replay is deliberately dropped on the assumption that the session already remembers the conversation. That assumption is true for typed turns and false for spoken ones, so after a voice call the resumed agent has no record of it. Even the cold path keeps only the last dozen spoken rows per call and summarises the rest as a count.Acceptance Criteria
Technical Notes
abilityai/trinity-enterprise#534(the Workspace voice mode this refines) · refactor(agent-detail): retire the chat-panel voice overlay — the Talk button opens voice in the Workspace #2559 (the Talk door) · bug(workspace): code blocks in agent replies are unreadable — same-tint block, ~11px type, horizontal scroll — and nothing in the thread can be copied #2515 (the other Workspace thread-rendering bug in this area).