Agent message
A live thread: agent leads (left), user trails (right)
The Gateway routes every session through the credential-store proxy for credentials. Want me to wire the retry/backoff next?
Yes. Exponential backoff, cap at 30s. Show me the diff first.
On it. Reading SseClient.kt, then patching the reconnect loop:
Here’s the backoff helper:
fun nextDelay(attempt: Int): Long = minOf(30_000, 1_000 shl attempt) .plus(Random.nextLong(250))
- Backoff is 1s → 30s with jitter.
- Replays from
lastSeqon reconnect.
Applying the patch and re-running the SSE tests
System divider + a failed turn (status is warm + icon + text, never color alone)
Reconnected. The stream is healthy again.
Retry fired 0 times · tab to Copy / Thinking / Retry. The island is live.
The bottom-of-chat streaming / typing indicator (the “Streaming…” dots shown while
tokens arrive) is documented here for the design system of record, but is not currently
implemented in the products: live bottom-of-chat streaming indicators proved inconsistent
and hard to get right, so the apps have moved away from them. The design stays as
reference; the streaming prop remains in the spec, unshipped.
Parameters
Section titled “Parameters”- Swift: no chat surface ships yet; Voice is transcription-only. The Swift API above is intended, not implemented.
- Bubble radius: Compose hardcodes the bubble at 18.dp with a 6.dp tail
via
rememberBubbleShape; the tokens are 20 / 6 (radius.bubble/radius.bubble-tail, used by the web demo). Compose should consume the token. - Copy affordance (resolved): each platform keeps its interaction idiom. Android’s bubble long-press opens the multi-action menu (Copy becomes an item); web exposes an explicit, focusable Copy button (no hover / long-press on a pointer-less keyboard path).
- Failed turn (resolved): the in-thread failed bubble wins on every platform, styled to the Banner inline-alert grammar of an inset status-error disc, the intent whispered into the border, a lifted neutral surface (never a red/pink fill, never a bare inset well), text + Retry. Android moves stream errors off the floating status pill and into the thread.