compactEvents
compactEvents reduces verbose streaming sequences in an event array while
preserving semantics. Use it to shrink logs before persistence or to simplify
post‑processing of Server‑Sent Events (SSE) streams.
API
What it does
- Text messages: Groups
TEXT_MESSAGE_START→TEXT_MESSAGE_CONTENT*→TEXT_MESSAGE_ENDfor the samemessageId, concatenating alldeltachunks into a singleTEXT_MESSAGE_CONTENTevent. - Tool calls: Groups
TOOL_CALL_START→TOOL_CALL_ARGS*→TOOL_CALL_ENDfor the sametoolCallId, concatenating alldeltachunks into a singleTOOL_CALL_ARGSevent. - Interleaved events: Any events that occur between a start/end pair are moved after that sequence so the streaming block remains contiguous.
- Pass‑through: All other events (state, custom, etc.) are preserved unchanged.
Example
Before:TOOL_CALL_ARGS chunks.
When to use
- Persisting event history (store fewer frames with the same meaning)
- Preparing snapshots for analytics or export
- Reducing noise in tests or debugging output
Notes & limitations
- This utility focuses on message and tool‑call streams. It does not modify
state events (
STATE_SNAPSHOT/STATE_DELTA) or generate message snapshots. - For background and broader patterns (branching, normalization), see Serialization.