aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-ai/src/tui/events.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/tui/events.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/tui/events.rs')
-rw-r--r--crates/atuin-ai/src/tui/events.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/crates/atuin-ai/src/tui/events.rs b/crates/atuin-ai/src/tui/events.rs
index a791bb80..1a422fef 100644
--- a/crates/atuin-ai/src/tui/events.rs
+++ b/crates/atuin-ai/src/tui/events.rs
@@ -5,13 +5,20 @@
/// eye-declare's context system. The main event loop in `inline.rs`
/// receives them and mutates `AppState` accordingly.
#[derive(Debug)]
-pub enum AiTuiEvent {
+pub(crate) enum AiTuiEvent {
/// User updated the input text
InputUpdated(String),
/// User submitted text input (Enter in Input mode)
SubmitInput(String),
/// User entered a slash command (e.g. "/help")
+ #[allow(unused)]
SlashCommand(String),
+ /// Check the permission for a tool call
+ CheckToolCallPermission(String),
+ /// User selected a permission
+ SelectPermission(PermissionResult),
+ /// Continue after client tools have completed
+ ContinueAfterTools,
/// Cancel active generation or streaming (Esc during Generating/Streaming)
CancelGeneration,
/// Execute the suggested command
@@ -20,8 +27,18 @@ pub enum AiTuiEvent {
InsertCommand,
/// Cancel confirmation of dangerous command
CancelConfirmation,
+ /// Interrupt a running tool execution (Ctrl+C during ExecutingPreview)
+ InterruptToolExecution,
/// Retry after error
Retry,
/// Exit the application
Exit,
}
+
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub(crate) enum PermissionResult {
+ Allow,
+ AlwaysAllowInDir,
+ AlwaysAllow,
+ Deny,
+}