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 #[serde(skip_serializing_if = "Option::is_none")]
62 pub commands_url: Option<String>,
63 pub status: DeploymentStatus,
65 pub resources: HashMap<String, DevResourceInfo>,
67 pub created_at: String,
69 #[serde(skip_serializing_if = "Option::is_none")]
71 pub error: Option<AlienError>,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
76#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
77#[serde(rename_all = "camelCase")]
78pub struct DevResourceInfo {
79 pub url: String,
81 #[serde(skip_serializing_if = "Option::is_none")]
83 pub resource_type: Option<String>,
84}