soma_codemode/types/
caller.rs1use 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}