fix: normalize claude system events and refresh tests

This commit is contained in:
Nathan Flurry 2026-01-26 20:44:58 -08:00
parent fdeef51f9c
commit c91595d338
14 changed files with 99 additions and 25 deletions

View file

@ -7,6 +7,7 @@ use crate::{
QuestionInfo,
QuestionOption,
QuestionRequest,
Started,
UniversalEventData,
UniversalMessage,
UniversalMessageParsed,
@ -20,6 +21,7 @@ pub fn event_to_universal_with_session(
) -> EventConversion {
let event_type = event.get("type").and_then(Value::as_str).unwrap_or("");
match event_type {
"system" => system_event_to_universal(event),
"assistant" => assistant_event_to_universal(event),
"tool_use" => tool_use_event_to_universal(event, session_id),
"tool_result" => tool_result_event_to_universal(event),
@ -114,6 +116,18 @@ fn assistant_event_to_universal(event: &Value) -> EventConversion {
EventConversion::new(UniversalEventData::Message { message })
}
fn system_event_to_universal(event: &Value) -> EventConversion {
let subtype = event
.get("subtype")
.and_then(Value::as_str)
.unwrap_or("system");
let started = Started {
message: Some(format!("system.{subtype}")),
details: Some(event.clone()),
};
EventConversion::new(UniversalEventData::Started { started })
}
fn tool_use_event_to_universal(event: &Value, session_id: String) -> EventConversion {
let tool_use = event.get("tool_use");
let name = tool_use