agentics_domain/
zip_project.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
5#[serde(rename_all = "snake_case")]
6pub enum ZipProjectNetworkAccess {
7 Disabled,
8 Loopback,
9 Enabled,
10}
11
12impl ZipProjectNetworkAccess {
13 pub fn docker_network_mode(self) -> DockerNetworkMode {
15 match self {
16 Self::Disabled | Self::Loopback => DockerNetworkMode::None,
17 Self::Enabled => DockerNetworkMode::Bridge,
18 }
19 }
20
21 pub fn clamp_to(self, maximum: Self) -> Self {
23 if self.rank() <= maximum.rank() {
24 self
25 } else {
26 maximum
27 }
28 }
29
30 fn rank(self) -> u8 {
31 match self {
32 Self::Disabled => 0,
33 Self::Loopback => 1,
34 Self::Enabled => 2,
35 }
36 }
37}
38
39#[derive(Debug, Clone, Copy, PartialEq, Eq)]
41pub enum DockerNetworkMode {
42 None,
44 Bridge,
46}
47
48impl DockerNetworkMode {
49 pub fn as_str(self) -> &'static str {
51 match self {
52 Self::None => "none",
53 Self::Bridge => "bridge",
54 }
55 }
56}
57
58#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
60pub struct ZipProjectPhaseLimits {
61 pub timeout_sec: u64,
62 pub memory_limit_mb: u64,
63 pub cpu_limit_millis: u32,
64 pub disk_limit_mb: u64,
65 pub network_access: ZipProjectNetworkAccess,
66}