use serde::{Deserialize, Serialize};
pub mod keys {
pub const SUBAGENT_TYPE: &str = "subagent_type";
pub const LAST_RUN_STATUS: &str = "last_run_status";
pub const LAST_RUN_ERROR: &str = "last_run_error";
pub const PROVIDER_NAME: &str = "provider_name";
pub const PENDING_INJECTED_MESSAGES: &str = "pending_injected_messages";
pub const SELECTED_SKILL_IDS: &str = "selected_skill_ids";
pub const SKILL_MODE: &str = "skill_mode";
pub const SKILL_MODE_LEGACY: &str = "mode";
pub const REASONING_EFFORT: &str = "reasoning_effort";
pub const ENHANCE_PROMPT: &str = "enhance_prompt";
pub const TASK_LIST_VERSION: &str = "task_list_version";
pub const TODO_LIST_VERSION: &str = "todo_list_version";
pub const WORKSPACE_PATH: &str = "workspace_path";
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct SessionRuntimeMetadata {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subagent_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_run_status: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_run_error: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub provider_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pending_injected_messages: Option<Vec<serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selected_skill_ids: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub skill_mode: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reasoning_effort: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enhance_prompt: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub task_list_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub todo_list_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub workspace_path: Option<String>,
}
impl SessionRuntimeMetadata {
pub fn is_empty(&self) -> bool {
*self == Self::default()
}
}