rightkit_agent_engine_protocol/
protocol.rs1use serde::{Deserialize, Serialize};
17
18#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
20#[serde(rename_all = "kebab-case")]
21pub enum AskForApproval {
22 #[serde(rename = "untrusted")]
24 UnlessTrusted,
25 #[default]
27 OnRequest,
28 Granular(GranularApprovalConfig),
30 Never,
32}
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
35pub struct GranularApprovalConfig {
36 pub sandbox_approval: bool,
37 pub rules: bool,
38 #[serde(default)]
39 pub skill_approval: bool,
40 #[serde(default)]
41 pub request_permissions: bool,
42 pub mcp_elicitations: bool,
43}
44
45impl GranularApprovalConfig {
46 pub const fn allows_sandbox_approval(self) -> bool {
47 self.sandbox_approval
48 }
49 pub const fn allows_rules_approval(self) -> bool {
50 self.rules
51 }
52 pub const fn allows_skill_approval(self) -> bool {
53 self.skill_approval
54 }
55 pub const fn allows_request_permissions(self) -> bool {
56 self.request_permissions
57 }
58 pub const fn allows_mcp_elicitations(self) -> bool {
59 self.mcp_elicitations
60 }
61}
62
63#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
64#[serde(rename_all = "kebab-case")]
65pub enum NetworkAccess {
66 #[default]
67 Restricted,
68 Enabled,
69}
70
71impl NetworkAccess {
72 pub const fn is_enabled(self) -> bool {
73 matches!(self, Self::Enabled)
74 }
75}