From 9fb9c2b2cb1059eb32fe9eba74b8fc7ca5d543ef Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Wed, 8 Apr 2026 14:17:40 -0400 Subject: [PATCH] Add serde derives to AST types, enable chrono serde feature Prep for wiring context_new.rs into the codebase: AstNode, NodeLeaf, NodeBody, Role all derive Serialize/Deserialize for conversation log persistence. Co-Authored-By: Proof of Concept --- Cargo.toml | 2 +- src/agent/context_new.rs | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 328e96a..504d630 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ uuid = { version = "1", features = ["v4"] } bincode = "1" regex = "1" glob = "0.3" -chrono = "0.4" +chrono = { version = "0.4", features = ["serde"] } libc = "0.2" memchr = "2" memmap2 = "0.9" diff --git a/src/agent/context_new.rs b/src/agent/context_new.rs index 34a1e3e..d6415bb 100644 --- a/src/agent/context_new.rs +++ b/src/agent/context_new.rs @@ -30,6 +30,7 @@ // the NodeBody variant. Grammar constraints enforced by construction. use chrono::{DateTime, Utc}; +use serde::{Serialize, Deserialize}; use super::tokenizer; // --------------------------------------------------------------------------- @@ -37,7 +38,7 @@ use super::tokenizer; // --------------------------------------------------------------------------- /// Branch roles — maps directly to the grammar's message roles. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum Role { System, User, @@ -45,7 +46,7 @@ pub enum Role { } /// Leaf content — each variant knows how to render itself. -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub enum NodeBody { // Children of message branches — rendered without im_start/im_end Content(String), @@ -62,7 +63,7 @@ pub enum NodeBody { } /// A leaf node: typed content with cached token IDs. -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct NodeLeaf { body: NodeBody, token_ids: Vec, @@ -70,7 +71,7 @@ pub struct NodeLeaf { } /// A node in the context AST. -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub enum AstNode { Leaf(NodeLeaf), Branch { role: Role, children: Vec },