wsb 0.179.3992

Workspace - A tool suite for file operations, version management, and development workflow automation
Documentation
use crate::prelude::*;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DBMessage {
    pub id: i64,
    pub session_id: String,
    pub ordinal: i64,
    pub role: String,
    pub content: String,
    pub timestamp: Option<String>,
    pub has_thinking: bool,
    pub has_tool_use: bool,
    pub content_length: i64,
    pub is_system: bool,
    pub model: String,
    pub token_usage: String,
    pub context_tokens: i64,
    pub output_tokens: i64,
    pub has_context_tokens: bool,
    pub has_output_tokens: bool,
    pub claude_message_id: String,
    pub claude_request_id: String,
    pub source_type: String,
    pub source_subtype: String,
    pub source_uuid: String,
    pub source_parent_uuid: String,
    pub is_sidechain: bool,
    pub is_compact_boundary: bool,
    #[serde(skip_serializing)]
    pub tool_calls: Vec<DBToolCall>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DBToolCall {
    pub tool_name: String,
    pub category: String,
    pub tool_use_id: Option<String>,
    pub input_json: Option<String>,
    pub skill_name: Option<String>,
    pub result_content_length: Option<i64>,
    pub result_content: Option<String>,
    pub subagent_session_id: Option<String>,
}

#[derive(Debug, Clone)]
pub struct MessageInsert {
    pub session_id: String,
    pub ordinal: i64,
    pub role: String,
    pub content: String,
    pub timestamp: Option<String>,
    pub has_thinking: bool,
    pub has_tool_use: bool,
    pub content_length: i64,
    pub is_system: bool,
    pub model: String,
    pub token_usage: String,
    pub context_tokens: i64,
    pub output_tokens: i64,
    pub has_context_tokens: bool,
    pub has_output_tokens: bool,
    pub claude_message_id: String,
    pub claude_request_id: String,
    pub source_type: String,
    pub source_subtype: String,
    pub source_uuid: String,
    pub source_parent_uuid: String,
    pub is_sidechain: bool,
    pub is_compact_boundary: bool,
    pub tool_calls: Vec<ToolCallInsert>,
}

impl Default for MessageInsert {
    fn default() -> Self {
        Self {
            session_id: String::new(),
            ordinal: 0,
            role: String::new(),
            content: String::new(),
            timestamp: None,
            has_thinking: false,
            has_tool_use: false,
            content_length: 0,
            is_system: false,
            model: String::new(),
            token_usage: String::new(),
            context_tokens: 0,
            output_tokens: 0,
            has_context_tokens: false,
            has_output_tokens: false,
            claude_message_id: String::new(),
            claude_request_id: String::new(),
            source_type: String::new(),
            source_subtype: String::new(),
            source_uuid: String::new(),
            source_parent_uuid: String::new(),
            is_sidechain: false,
            is_compact_boundary: false,
            tool_calls: Vec::new(),
        }
    }
}

#[derive(Debug, Clone)]
pub struct ToolCallInsert {
    pub tool_name: String,
    pub category: String,
    pub tool_use_id: Option<String>,
    pub input_json: Option<String>,
    pub skill_name: Option<String>,
    pub result_content_length: Option<i64>,
    pub result_content: Option<String>,
    pub subagent_session_id: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MinimapEntry {
    pub ordinal: i64,
    pub role: String,
    pub content_length: i64,
    pub has_thinking: bool,
    pub has_tool_use: bool,
}