use serde::{Deserialize, Serialize};
use crate::CommandSpec;
pub const COMPUTER_COMMANDS_PATH: &str = "/internal/v1/workspace/computers/{computerId}/commands";
pub const COMPUTER_COMMAND_PATH: &str =
"/internal/v1/workspace/computers/{computerId}/commands/{commandId}";
pub const COMPUTER_COMMAND_OUTPUT_PATH: &str =
"/internal/v1/workspace/computers/{computerId}/commands/{commandId}/output";
pub const COMPUTER_COMMAND_CANCEL_PATH: &str =
"/internal/v1/workspace/computers/{computerId}/commands/{commandId}/cancel";
pub const COMPUTER_OWNERS_PATH: &str = "/internal/v1/workspace/computers/{computerId}/owners";
pub const SPACE_OWNERS_PATH: &str = "/internal/v1/workspace/spaces/{spaceId}/owners";
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ComputerCommandState {
Queued,
Running,
Succeeded,
Failed,
Canceling,
Canceled,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(deny_unknown_fields, rename_all = "camelCase")]
pub struct CreateComputerCommandRequest {
pub space_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub command: CommandSpec,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(deny_unknown_fields, rename_all = "camelCase")]
pub struct ComputerCommandResource {
pub id: String,
pub computer_id: String,
pub space_id: String,
pub spec: CommandSpec,
pub state: ComputerCommandState,
pub output_end_cursor: u64,
pub output_truncated: bool,
pub version: u64,
pub created_at_ms: u64,
pub updated_at_ms: u64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub exit_code: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error_code: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ComputerCommandOutputPage {
pub chunks: Vec<ComputerCommandOutputChunk>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub next_cursor: Option<u64>,
pub truncated: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ComputerCommandOutputChunk {
pub stream: ComputerCommandOutputStream,
pub content: String,
pub cursor: u64,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ComputerCommandOutputStream {
Stdout,
Stderr,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ProviderCommandOutput {
pub exit_code: Option<i32>,
pub stdout: String,
pub stderr: String,
pub truncated: bool,
}