pub fn parse_message(data: &Value) -> Result<Option<Message>, MessageParseError>Expand description
Parses a raw JSON value from the CLI into a typed Message.
§Arguments
data— A JSON value representing a single message from the CLI output stream.
§Returns
Ok(Some(message))— Successfully parsed into a known message type.Ok(None)— The message type is unrecognized (silently skipped).Err(MessageParseError)— The message is malformed or missing required fields.
§Supported message types
type field | Parsed into |
|---|---|
"user" | Message::User |
"assistant" | Message::Assistant |
"system" | Message::System |
"result" | Message::Result |
"stream_event" | Message::StreamEvent |
§Example
use claude_code::{parse_message, Message};
use serde_json::json;
let raw = json!({
"type": "system",
"subtype": "initialized"
});
let parsed = parse_message(&raw).unwrap();
assert!(matches!(parsed, Some(Message::System(_))));