agent_sdk/types/
permissions.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4pub use starpod_hooks::{PermissionLevel, PermissionUpdate};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9#[serde(tag = "behavior")]
10pub enum PermissionResult {
11 #[serde(rename = "allow")]
12 Allow {
13 #[serde(skip_serializing_if = "Option::is_none")]
14 updated_input: Option<HashMap<String, serde_json::Value>>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 updated_permissions: Option<Vec<PermissionUpdate>>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 tool_use_id: Option<String>,
19 },
20 #[serde(rename = "deny")]
21 Deny {
22 message: String,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 interrupt: Option<bool>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 tool_use_id: Option<String>,
27 },
28}
29
30#[derive(Debug, Clone)]
32pub struct CanUseToolOptions {
33 pub suggestions: Vec<PermissionUpdate>,
34 pub blocked_path: Option<String>,
35 pub decision_reason: Option<String>,
36 pub tool_use_id: String,
37 pub agent_id: Option<String>,
38}