use rmcp::schemars;
use serde::Deserialize;
use bears::task::{Priority, Status, TaskType};
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct ListReadyParams {
pub limit: Option<u64>,
pub tag: Option<String>,
pub epic: Option<String>,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct ListTasksFilterParams {
pub status: Option<Status>,
pub priority: Option<Priority>,
pub tag: Option<String>,
pub epic: Option<String>,
pub limit: Option<u64>,
pub active_only: Option<bool>,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct TaskIdParams {
pub id: String,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct CreateTaskParams {
pub title: String,
pub priority: Option<Priority>,
pub tags: Option<Vec<String>>,
pub depends_on: Option<Vec<String>>,
pub parent: Option<String>,
pub body: Option<String>,
#[serde(rename = "type")]
pub task_type: Option<TaskType>,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct UpdateTaskParams {
pub id: String,
pub title: Option<String>,
pub status: Option<Status>,
pub priority: Option<Priority>,
pub tags: Option<Vec<String>>,
pub assignee: Option<String>,
pub body: Option<String>,
pub parent: Option<String>,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct DepParams {
pub id: String,
pub depends_on: String,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct SearchParams {
pub query: String,
pub limit: Option<u64>,
pub active_only: Option<bool>,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct PruneParams {
pub include_done: Option<bool>,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct PlanEpicParams {
pub id: String,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct GetGraphParams {
pub include_done: Option<bool>,
pub epic: Option<String>,
pub limit: Option<u64>,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct ArchiveTaskParams {
pub id: Option<String>,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct RestoreTaskParams {
pub id: String,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct ListArchivedParams {
pub limit: Option<u64>,
}