use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Company { pub id: String, pub name: String, pub description: String, pub status: String, pub auto_approve_hires: bool, pub review_deliverables: bool, pub execution_mode: String, pub created_at: String, pub updated_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Connector { pub id: String, pub label: String, pub description: String, pub status: String, pub version: Option, pub auth_state: String, pub last_checked_at: Option, pub last_error: Option, pub model: Option, pub env_binding_text: String, pub notes: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Workspace { pub id: String, pub company_id: String, pub name: String, pub local_path: String, pub repo_url: String, pub repo_ref: String, pub project_id: Option, pub state: String, pub is_primary: bool, pub created_at: String, pub updated_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Agent { pub id: String, pub company_id: String, pub name: String, pub role: String, pub title: String, pub department: Option, pub status: String, pub reports_to: Option, pub connector_id: String, pub workspace_id: Option, pub model: Option, pub capabilities: String, pub budget_monthly_usd: f64, pub spent_monthly_usd: f64, pub created_at: String, pub updated_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Goal { pub id: String, pub company_id: String, pub title: String, pub description: String, pub parent_id: Option, pub owner_agent_id: Option, pub status: String, pub created_at: String, pub updated_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Project { pub id: String, pub company_id: String, pub goal_id: Option, pub name: String, pub description: String, pub lead_agent_id: Option, pub status: String, pub target_date: Option, pub created_at: String, pub updated_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Task { pub id: String, pub company_id: String, pub project_id: Option, pub goal_id: Option, pub parent_id: Option, pub title: String, pub description: String, pub assignee_agent_id: Option, pub workspace_id: Option, pub status: String, pub priority: String, pub active_run_id: Option, pub cost_usd: f64, pub task_type: Option, pub requires_user_review: bool, pub started_at: Option, pub completed_at: Option, pub cancelled_at: Option, pub created_at: String, pub updated_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Approval { pub id: String, pub company_id: String, pub related_task_id: Option, pub related_agent_id: Option, pub requested_by_agent_id: Option, pub approval_type: String, pub payload_summary: String, pub impact_summary: String, pub payload_json: Option, pub decision_note: String, pub state: String, pub created_at: String, pub updated_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Run { pub id: String, pub company_id: String, pub task_id: Option, pub agent_id: String, pub workspace_id: Option, pub connector_id: String, pub status: String, pub summary: String, pub error_message: Option, pub model: Option, pub cost_usd: Option, pub started_at: Option, pub finished_at: Option, pub created_at: String, pub updated_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Activity { pub id: String, pub company_id: String, pub actor: String, pub action: String, pub entity_type: String, pub entity_id: String, pub detail: String, pub created_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct AgentMessage { pub id: String, pub company_id: String, pub from_agent_id: String, pub to_agent_id: Option, pub sender_kind: String, pub channel: String, pub channel_target_id: Option, pub subject: String, pub body: String, pub priority: String, pub read_at: Option, pub parent_message_id: Option, pub attachments_json: String, pub created_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Document { pub id: String, pub company_id: String, pub document_type: String, pub title: String, pub content: String, pub author_agent_id: Option, pub reviewer_agent_id: Option, pub project_id: Option, pub goal_id: Option, pub parent_doc_id: Option, pub version: i64, pub status: String, pub tags_json: String, pub latest_revision_id: Option, pub created_at: String, pub updated_at: String, } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct ThreadWaitState { pub id: String, pub thread_id: String, pub company_id: String, pub waiting_for: String, pub related_approval_id: Option, pub reason: String, pub created_at: String, pub resolved_at: Option, }