Expand description
Parse Anthropic’s Server-Sent Events stream into typed events.
No SDK dependency. Build it into whatever HTTP client / async runtime
you already have: feed EventParser::feed bytes as they arrive,
drain ready events with EventParser::next_event.
§Quick start
use claude_stream::{EventParser, Event};
// Wire bytes Anthropic sent us:
let chunk = b"event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"id\":\"msg_1\",\"role\":\"assistant\"}}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"Hello\"}}\n\n";
let mut parser = EventParser::new();
parser.feed(chunk);
// Drain everything ready:
while let Some(event) = parser.next_event().unwrap() {
match event {
Event::MessageStart { message } => println!("started: {}", message.id),
Event::ContentBlockDelta { delta, .. } => {
if let claude_stream::Delta::TextDelta { text } = delta {
print!("{text}");
}
}
_ => {}
}
}Structs§
- Event
Parser - Incremental SSE parser for Anthropic’s
messagesstream. - Message
- The message shell carried by
Event::MessageStart. - Message
Delta - Top-level message delta.
- Usage
- Token usage. Field set evolves; we keep optional everywhere.
Enums§
- Content
Block - One content block (passed by
Event::ContentBlockStart). - Delta
- One delta extending an in-progress content block.
- Event
- One Anthropic streaming event.
- Parse
Error - Errors from parsing one event.