Skip to main content

rushai_protocol/
permission.rs

1use serde::{Deserialize, Serialize};
2
3use crate::ids::{RequestId, SessionId};
4
5/// A tool asking to perform an action it has no grant for.
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7pub struct PermissionRequest {
8    pub id: RequestId,
9    pub session: SessionId,
10    pub tool: String,
11    pub action: String,
12    #[serde(default, skip_serializing_if = "Option::is_none")]
13    pub path: Option<String>,
14    pub description: String,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
18#[serde(rename_all = "snake_case")]
19pub enum Decision {
20    /// Allow this request only.
21    Once,
22    /// Allow for the rest of the session.
23    Session,
24    /// Allow and persist across sessions.
25    Always,
26    Deny,
27}