aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-ai/src/permissions/file.rs
diff options
context:
space:
mode:
authorMichelle Tilley <michelle@michelletilley.net>2026-04-10 13:24:57 -0700
committerGitHub <noreply@github.com>2026-04-10 20:24:57 +0000
commit09279a428659cf41824737d3e0c97bcc19a8885a (patch)
tree64731502c065df2483e8dd680d46c5559f3094f2 /crates/atuin-ai/src/permissions/file.rs
parentfeat: add strip_trailing_whitespace, on by default (#3390) (diff)
downloadatuin-09279a428659cf41824737d3e0c97bcc19a8885a.zip
feat: Client-tool execution + permission system (#3370)
Adds client-side tool execution to Atuin AI, starting with `atuin_history`. The server can request tool calls, which are executed locally with a permission system, and results are sent back to continue the conversation.
Diffstat (limited to 'crates/atuin-ai/src/permissions/file.rs')
-rw-r--r--crates/atuin-ai/src/permissions/file.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/crates/atuin-ai/src/permissions/file.rs b/crates/atuin-ai/src/permissions/file.rs
new file mode 100644
index 00000000..c973f55b
--- /dev/null
+++ b/crates/atuin-ai/src/permissions/file.rs
@@ -0,0 +1,26 @@
+use std::path::PathBuf;
+
+use serde::{Deserialize, Serialize};
+
+use crate::permissions::rule::Rule;
+
+#[derive(Debug, Clone)]
+pub(crate) struct RuleFile {
+ pub path: PathBuf,
+ pub content: RuleFileContent,
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub(crate) struct RuleFileContent {
+ pub permissions: RuleFilePermissions,
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub(crate) struct RuleFilePermissions {
+ #[serde(default)]
+ pub allow: Vec<Rule>,
+ #[serde(default)]
+ pub deny: Vec<Rule>,
+ #[serde(default)]
+ pub ask: Vec<Rule>,
+}