aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-ai/src/tui/state.rs
diff options
context:
space:
mode:
authorMichelle Tilley <michelle@michelletilley.net>2026-04-21 10:32:54 -0700
committerGitHub <noreply@github.com>2026-04-21 10:32:54 -0700
commit0f20ee4eb871907defe7848f0d3e2203cfff057e (patch)
treecda9034c4c6e7b5ecf0fe957978284e9138b80ff /crates/atuin-ai/src/tui/state.rs
parentchore: Clarified note about regular expressions matching in path. (#3427) (diff)
downloadatuin-0f20ee4eb871907defe7848f0d3e2203cfff057e.zip
feat: AI tool rendering overhaul + edit_file tool (#3423)
Overhaul of how AI tool calls are modeled, rendered, and displayed in the Atuin AI TUI. Fixes bugs in shell command output capture, implements the `edit_file` tool with full safety infrastructure, and adds a diff preview for edits.
Diffstat (limited to 'crates/atuin-ai/src/tui/state.rs')
-rw-r--r--crates/atuin-ai/src/tui/state.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/crates/atuin-ai/src/tui/state.rs b/crates/atuin-ai/src/tui/state.rs
index e122918e..af1ebffe 100644
--- a/crates/atuin-ai/src/tui/state.rs
+++ b/crates/atuin-ai/src/tui/state.rs
@@ -474,6 +474,12 @@ pub(crate) struct Session {
pub slash_registry: SlashCommandRegistry,
/// The unique ID for this invocation
pub invocation_id: String,
+ /// Tracks which files have been read, for freshness checking before edits.
+ pub file_tracker: crate::file_tracker::FileReadTracker,
+ /// Session-scoped edit permission grants (per-file, time-limited).
+ pub edit_permissions: crate::edit_permissions::EditPermissionCache,
+ /// Backs up files before the first edit in a session.
+ pub snapshot_store: Option<crate::snapshots::SnapshotStore>,
}
impl Session {
@@ -491,6 +497,9 @@ impl Session {
archived_view_events: Vec::new(),
slash_registry: Default::default(),
invocation_id: invocation_id.unwrap_or_else(|| uuid::Uuid::now_v7().to_string()),
+ file_tracker: Default::default(),
+ edit_permissions: Default::default(),
+ snapshot_store: None,
}
}