Background
In the experiment app, components/ChatPanel.tsx currently derives the colleague's "typing" indicator purely from the response message length (via lib/messageTiming.ts) — i.e. it only animates typing after the full response has arrived from the API.
Ask
Show the typing indicator while the LLM is still streaming/generating its response, so the indicator reflects real latency (the colleague now runs gpt-5.5 with low reasoning, configurable per scenario in lib/scenarios.json). This matters more now that we track a 20s latency budget (API_TIMEOUT_MS).
Notes
- Surfaced during the colleague-eval merge (PR for branch
merge-colleague-evals).
- Related:
app/api/chat/route.ts streams the response (streamText / toUIMessageStreamResponse).
Background
In the experiment app,
components/ChatPanel.tsxcurrently derives the colleague's "typing" indicator purely from the response message length (vialib/messageTiming.ts) — i.e. it only animates typing after the full response has arrived from the API.Ask
Show the typing indicator while the LLM is still streaming/generating its response, so the indicator reflects real latency (the colleague now runs gpt-5.5 with
lowreasoning, configurable per scenario inlib/scenarios.json). This matters more now that we track a 20s latency budget (API_TIMEOUT_MS).Notes
merge-colleague-evals).app/api/chat/route.tsstreams the response (streamText/toUIMessageStreamResponse).