agent_workspace_contract/environment/
commands.rs1use serde::{Deserialize, Serialize};
2
3use crate::CommandSpec;
4
5pub const COMPUTER_COMMANDS_PATH: &str = "/internal/v1/computers/{computerId}/commands";
6pub const COMPUTER_COMMAND_PATH: &str = "/internal/v1/computers/{computerId}/commands/{commandId}";
7pub const COMPUTER_COMMAND_OUTPUT_PATH: &str =
8 "/internal/v1/computers/{computerId}/commands/{commandId}/output";
9pub const COMPUTER_COMMAND_CANCEL_PATH: &str =
10 "/internal/v1/computers/{computerId}/commands/{commandId}/cancel";
11pub const COMPUTER_OWNERS_PATH: &str = "/internal/v1/computers/{computerId}/owners";
12pub const SPACE_OWNERS_PATH: &str = "/internal/v1/spaces/{spaceId}/owners";
13
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
15#[serde(rename_all = "snake_case")]
16pub enum ComputerCommandState {
17 Queued,
18 Running,
19 Succeeded,
20 Failed,
21 Canceling,
22 Canceled,
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26#[serde(deny_unknown_fields, rename_all = "camelCase")]
27pub struct CreateComputerCommandRequest {
28 pub space_id: String,
29 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub id: Option<String>,
31 pub command: CommandSpec,
32}
33
34#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
35#[serde(deny_unknown_fields, rename_all = "camelCase")]
36pub struct ComputerCommandResource {
37 pub id: String,
38 pub computer_id: String,
39 pub space_id: String,
40 pub spec: CommandSpec,
41 pub state: ComputerCommandState,
42 pub output_end_cursor: u64,
43 pub output_truncated: bool,
44 pub version: u64,
45 pub created_at_ms: u64,
46 pub updated_at_ms: u64,
47 #[serde(default, skip_serializing_if = "Option::is_none")]
48 pub exit_code: Option<i32>,
49 #[serde(default, skip_serializing_if = "Option::is_none")]
50 pub error_code: Option<String>,
51}
52
53#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
54#[serde(rename_all = "camelCase")]
55pub struct ComputerCommandOutputPage {
56 pub chunks: Vec<ComputerCommandOutputChunk>,
57 #[serde(default, skip_serializing_if = "Option::is_none")]
58 pub next_cursor: Option<u64>,
59 pub truncated: bool,
60}
61
62#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
63#[serde(rename_all = "camelCase")]
64pub struct ComputerCommandOutputChunk {
65 pub stream: ComputerCommandOutputStream,
66 pub content: String,
67 pub cursor: u64,
68}
69
70#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
71#[serde(rename_all = "snake_case")]
72pub enum ComputerCommandOutputStream {
73 Stdout,
74 Stderr,
75}
76
77#[derive(Debug, Clone, PartialEq, Eq)]
79pub struct ProviderCommandOutput {
80 pub exit_code: Option<i32>,
81 pub stdout: String,
82 pub stderr: String,
83 pub truncated: bool,
84}