1use crate::DeploymentStatus;
4use alien_error::AlienError;
5use serde::{Deserialize, Serialize};
6use std::collections::HashMap;
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
11#[serde(rename_all = "camelCase")]
12pub struct DevStatus {
13 pub pid: u32,
15 pub platform: String,
17 pub stack_id: String,
19 pub state_dir: String,
21 pub api_url: String,
23 pub started_at: String,
25 pub status: DevStatusState,
27 pub agents: HashMap<String, AgentStatus>,
29 pub last_updated: String,
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub error: Option<AlienError>,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
38#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
39#[serde(rename_all = "camelCase")]
40pub enum DevStatusState {
41 Initializing,
43 Ready,
45 Error,
47 ShuttingDown,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
53#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
54#[serde(rename_all = "camelCase")]
55pub struct AgentStatus {
56 pub id: String,
58 pub name: String,
60 pub status: DeploymentStatus,
62 pub resources: HashMap<String, DevResourceInfo>,
64 pub created_at: String,
66 #[serde(skip_serializing_if = "Option::is_none")]
68 pub error: Option<AlienError>,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
73#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
74#[serde(rename_all = "camelCase")]
75pub struct DevResourceInfo {
76 pub url: String,
78 #[serde(skip_serializing_if = "Option::is_none")]
80 pub resource_type: Option<String>,
81}