aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-ai/src/tui/events.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/atuin-ai/src/tui/events.rs')
-rw-r--r--crates/atuin-ai/src/tui/events.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/crates/atuin-ai/src/tui/events.rs b/crates/atuin-ai/src/tui/events.rs
index 1a422fef..969f6ae5 100644
--- a/crates/atuin-ai/src/tui/events.rs
+++ b/crates/atuin-ai/src/tui/events.rs
@@ -38,7 +38,34 @@ pub(crate) enum AiTuiEvent {
#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) enum PermissionResult {
Allow,
+ /// Per-file, time-limited grant scoped to the current session.
+ AllowFileForSession,
AlwaysAllowInDir,
AlwaysAllow,
Deny,
}
+
+impl PermissionResult {
+ /// String identifier used as the SelectOption value.
+ pub fn as_value_str(&self) -> &'static str {
+ match self {
+ Self::Allow => "allow",
+ Self::AllowFileForSession => "allow-file-session",
+ Self::AlwaysAllowInDir => "always-allow-in-dir",
+ Self::AlwaysAllow => "always-allow",
+ Self::Deny => "deny",
+ }
+ }
+
+ /// Parse from a SelectOption value string.
+ pub fn from_value_str(s: &str) -> Option<Self> {
+ match s {
+ "allow" => Some(Self::Allow),
+ "allow-file-session" => Some(Self::AllowFileForSession),
+ "always-allow-in-dir" => Some(Self::AlwaysAllowInDir),
+ "always-allow" => Some(Self::AlwaysAllow),
+ "deny" => Some(Self::Deny),
+ _ => None,
+ }
+ }
+}