useChat-based React and Vue UIs.
toResponse()
Both Session and Conversation provide two methods for streaming to the client:
toUIMessageStream(input)— returns aReadableStream<UIMessageChunk>that maps session events to AI SDK 5 typed chunkstoResponse(input, options)— wraps the stream in an HTTPResponsewith SSE headers, ready to return from any route handler
Next.js Example
app/api/chat/route.ts
Custom Data Parts
The stream emits all standard AI SDK 5 chunk types (text-delta, reasoning-delta, tool-input-available, tool-output-available, start, finish, etc.) plus custom OpenHarness data parts for subagent activity, compaction, retry, and turn lifecycle:
| Data part | Description |
|---|---|
data-oh:subagent.start | A subagent task was spawned |
data-oh:subagent.done | A subagent task completed |
data-oh:subagent.error | A subagent task failed |
data-oh:compaction.start | Compaction started |
data-oh:compaction.done | Compaction finished |
data-oh:retry | Retrying after transient error |
data-oh:turn.start | Turn started |
data-oh:turn.done | Turn finished |
data-oh:session.compacting | Session is compacting |