Streaming Responses
All Virtuoso outputs stream token-by-token via generateContentStream, reducing perceived
latency by 60–80% versus waiting for complete responses.
How it works
src/api/streaming.tswraps the provider’s streaming API- The
useStreaminghook (src/hooks/useStreaming.ts) accumulates chunks into React state - Intermediate text is rendered live in Insight cards while
task:progressevents tick on the Symphony Bus
What streams
| Surface | Streams? |
|---|---|
| Lens insights (captions, summaries, walkthroughs) | Yes |
| Conductor responses & ReAct thoughts | Yes |
| Chat lens conversations | Yes |
| Media generation (Veo/Imagen) | No — progress events instead |
Function calls + streaming
Structured lenses stream too: function-call deltas are parsed incrementally, validated by Zod schemas when complete, and appended to the insight as rows arrive — so a long key-moments list fills in progressively instead of appearing all at once.