Skip to main content

soma_codemode/types/
caller.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4#[serde(rename_all = "snake_case")]
5pub enum CodeModeSurface {
6    Cli,
7    Mcp,
8    Api,
9}
10
11#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
12pub struct CodeModeCallerCapabilities {
13    #[serde(default)]
14    pub trusted_local: bool,
15    #[serde(default)]
16    pub admin: bool,
17}
18
19#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
20pub struct CodeModeCaller {
21    pub id: String,
22    #[serde(default)]
23    pub capabilities: CodeModeCallerCapabilities,
24}
25
26impl CodeModeCaller {
27    #[must_use]
28    pub fn trusted_local(id: impl Into<String>) -> Self {
29        Self {
30            id: id.into(),
31            capabilities: CodeModeCallerCapabilities {
32                trusted_local: true,
33                admin: true,
34            },
35        }
36    }
37}