aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-ai/src/tui/events.rs
diff options
context:
space:
mode:
authorMichelle Tilley <michelle@michelletilley.net>2026-03-26 19:19:47 -0700
committerGitHub <noreply@github.com>2026-03-27 02:19:47 +0000
commitb649a7ab8de6488c1341e94c37d032c07d5b3f13 (patch)
treeca9aadc1175b8439dd85de135f3804681b755776 /crates/atuin-ai/src/tui/events.rs
parentfix: set WorkingDirectory in PowerShell Invoke-AtuinSearch (#3351) (diff)
downloadatuin-b649a7ab8de6488c1341e94c37d032c07d5b3f13.zip
feat: Use eye-declare for more performant and flexible AI TUI (#3343)
This PR replaces the mess of custom rendering code in Atuin AI with [eye-declare](https://github.com/BinaryMuse/eye-declare), and updates the TUI to feel more terminal-native: output appears inline and persists in scrollback, so you can scroll up and look at previous conversations for reference. The "review" state — which used to exist between the LLM generating a response and the user either executing or following up — has been removed; just start typing to follow up with the LLM, or press `enter` at the empty input box to execute the suggested command. <img width="1203" height="633" alt="image" src="https://github.com/user-attachments/assets/159ee447-9a2a-4edd-b56e-a79bf1aaaa94" />
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
new file mode 100644
index 00000000..a791bb80
--- /dev/null
+++ b/crates/atuin-ai/src/tui/events.rs
@@ -0,0 +1,27 @@
+/// Application-domain events emitted by UI components.
+///
+/// Components translate raw key events into these semantic events,
+/// which are sent via an `mpsc::Sender<AiTuiEvent>` provided through
+/// eye-declare's context system. The main event loop in `inline.rs`
+/// receives them and mutates `AppState` accordingly.
+#[derive(Debug)]
+pub 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")
+ SlashCommand(String),
+ /// Cancel active generation or streaming (Esc during Generating/Streaming)
+ CancelGeneration,
+ /// Execute the suggested command
+ ExecuteCommand,
+ /// Insert command without executing
+ InsertCommand,
+ /// Cancel confirmation of dangerous command
+ CancelConfirmation,
+ /// Retry after error
+ Retry,
+ /// Exit the application
+ Exit,
+}