diff options
Diffstat (limited to 'crates/atuin-ai/src/event_serde.rs')
| -rw-r--r-- | crates/atuin-ai/src/event_serde.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/crates/atuin-ai/src/event_serde.rs b/crates/atuin-ai/src/event_serde.rs index 546d6e5b..e3f9d6f7 100644 --- a/crates/atuin-ai/src/event_serde.rs +++ b/crates/atuin-ai/src/event_serde.rs @@ -64,6 +64,19 @@ pub(crate) fn serialize_event(event: &ConversationEvent) -> (String, String) { "system_context".to_string(), serde_json::json!({ "content": content }).to_string(), ), + ConversationEvent::SkillInvocation { + name, + arguments, + content, + } => ( + "skill_invocation".to_string(), + serde_json::json!({ + "name": name, + "arguments": arguments, + "content": content, + }) + .to_string(), + ), } } @@ -112,6 +125,14 @@ pub(crate) fn deserialize_event(event_type: &str, event_data: &str) -> Result<Co "system_context" => Ok(ConversationEvent::SystemContext { content: json_string(&data, "content")?, }), + "skill_invocation" => Ok(ConversationEvent::SkillInvocation { + name: json_string(&data, "name")?, + arguments: data + .get("arguments") + .and_then(|v| if v.is_null() { None } else { v.as_str() }) + .map(String::from), + content: json_string(&data, "content")?, + }), other => Err(eyre!("unknown event type: {other}")), } } |
