diff --git a/crates/goose-types/src/lib.rs b/crates/goose-types/src/lib.rs index 88749664e5da..96d43aaf8ca6 100644 --- a/crates/goose-types/src/lib.rs +++ b/crates/goose-types/src/lib.rs @@ -106,6 +106,18 @@ pub struct SystemNotificationContent { pub data: Option, } +#[derive(Debug, Clone, Default, Serialize, Deserialize, ToSchema)] +#[serde(rename_all = "camelCase")] +pub struct TokenState { + pub input_tokens: i32, + pub output_tokens: i32, + pub total_tokens: i32, + pub accumulated_input_tokens: i32, + pub accumulated_output_tokens: i32, + pub accumulated_total_tokens: i32, + pub accumulated_cost: Option, +} + impl MessageMetadata { pub fn agent_only() -> Self { Self { diff --git a/crates/goose/src/conversation/message.rs b/crates/goose/src/conversation/message.rs index 5bef9acd28a8..a04f06be364c 100644 --- a/crates/goose/src/conversation/message.rs +++ b/crates/goose/src/conversation/message.rs @@ -5,6 +5,7 @@ use chrono::Utc; pub use goose_types::{ InferenceMetadata, MessageMetadata, MessageProviderMetadata as ProviderMetadata, RedactedThinkingContent, SystemNotificationContent, SystemNotificationType, ThinkingContent, + TokenState, }; use rmcp::model::{ AnnotateAble, CallToolRequestParams, CallToolResult, Content, ImageContent, JsonObject, @@ -931,18 +932,6 @@ impl Message { } } -#[derive(Debug, Clone, Default, Serialize, Deserialize, ToSchema)] -#[serde(rename_all = "camelCase")] -pub struct TokenState { - pub input_tokens: i32, - pub output_tokens: i32, - pub total_tokens: i32, - pub accumulated_input_tokens: i32, - pub accumulated_output_tokens: i32, - pub accumulated_total_tokens: i32, - pub accumulated_cost: Option, -} - #[cfg(test)] mod tests { use crate::conversation::message::{Message, MessageContent, MessageMetadata};