From e8d6ab105e6b7a273fcbda232b68a9816a85b69d Mon Sep 17 00:00:00 2001 From: nlathia Date: Wed, 17 Jun 2026 09:16:48 +0100 Subject: [PATCH 1/2] add AgentMetadata dataclass and missing fields to Conversation model --- src/gradient_labs/conversation.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/gradient_labs/conversation.py b/src/gradient_labs/conversation.py index 0f809d9..081d186 100644 --- a/src/gradient_labs/conversation.py +++ b/src/gradient_labs/conversation.py @@ -53,6 +53,21 @@ class ConversationEventType(str, Enum): TYPING: str = "typing" +@dataclass_json +@dataclass(frozen=True) +class AgentMetadata: + intent: Optional[str] = None + intent_hand_off_target: Optional[str] = field( + default=None, metadata=config(field_name="intent_handoff_target") + ) + hand_off_reason: Optional[str] = field( + default=None, metadata=config(field_name="handoff_reason") + ) + hand_off_note: Optional[str] = field( + default=None, metadata=config(field_name="handoff_note") + ) + + @dataclass_json @dataclass(frozen=True) class Conversation: @@ -79,6 +94,14 @@ class Conversation: mm_field=fields.DateTime(format="iso"), ) ) + is_active: bool = field(default=False, metadata=config(field_name="agent_is_active")) + latest_intent: Optional[str] = None + latest_hand_off_target: Optional[str] = field( + default=None, metadata=config(field_name="latest_handoff_target") + ) + agent_metadata: Optional[AgentMetadata] = field( + default=None, metadata=config(field_name="latest_agent_metadata") + ) @dataclass_json From 1680760fbc1293db9378436628d60019f2fa20f4 Mon Sep 17 00:00:00 2001 From: nlathia Date: Wed, 17 Jun 2026 10:47:20 +0100 Subject: [PATCH 2/2] fix ruff formatting --- src/gradient_labs/conversation.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gradient_labs/conversation.py b/src/gradient_labs/conversation.py index 081d186..57cb08b 100644 --- a/src/gradient_labs/conversation.py +++ b/src/gradient_labs/conversation.py @@ -94,7 +94,9 @@ class Conversation: mm_field=fields.DateTime(format="iso"), ) ) - is_active: bool = field(default=False, metadata=config(field_name="agent_is_active")) + is_active: bool = field( + default=False, metadata=config(field_name="agent_is_active") + ) latest_intent: Optional[str] = None latest_hand_off_target: Optional[str] = field( default=None, metadata=config(field_name="latest_handoff_target")