aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-ai/src/driver.rs
diff options
context:
space:
mode:
authorMichelle Tilley <michelle@michelletilley.net>2026-04-23 13:29:58 -0700
committerGitHub <noreply@github.com>2026-04-23 13:29:58 -0700
commitb121b73d07df389d324b3a8f27066661a6609618 (patch)
treef66b69655b6d425ff642200224b3b2a1fdcd0df8 /crates/atuin-ai/src/driver.rs
parentfix: minor issues with fish's vim mode(s) (#3362) (diff)
downloadatuin-b121b73d07df389d324b3a8f27066661a6609618.zip
feat: Send user-defined context with `TERMINAL.md` (#3443)
This PR adds the ability to inject user-defined content into Atuin AI requests, a la `AGENTS.md` or `CLAUDE.md`. * `.atuin/TERMINAL.md` (or alternatively just `TERMINAL.md`) is checked in every directory from the cwd up to the root * `~/.config/atuin/TERMINAL.md` (or equivalent config dir) is also checked * Supports Claude-style ``` !`` ``` and ```` ```!...``` ```` style shell interpolation
Diffstat (limited to 'crates/atuin-ai/src/driver.rs')
-rw-r--r--crates/atuin-ai/src/driver.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/crates/atuin-ai/src/driver.rs b/crates/atuin-ai/src/driver.rs
index 3acb9798..b5e1c275 100644
--- a/crates/atuin-ai/src/driver.rs
+++ b/crates/atuin-ai/src/driver.rs
@@ -775,6 +775,13 @@ async fn run_stream_bridge(
use crate::stream::{StreamContent, StreamControl, StreamFrame, create_chat_stream};
use futures::StreamExt;
+ // Gather user context files (TERMINAL.md) and interpolate commands.
+ let shell = client_ctx.shell.as_deref().unwrap_or("sh");
+ let start_dir = std::env::current_dir().unwrap_or_default();
+ let global_ctx_path = crate::user_context::global_context_path();
+ let user_contexts =
+ crate::user_context::gather(&start_dir, Some(&global_ctx_path), shell).await;
+
let stream = create_chat_stream(
app_ctx.endpoint.clone(),
app_ctx.token.clone(),
@@ -782,6 +789,7 @@ async fn run_stream_bridge(
client_ctx,
app_ctx.send_cwd,
app_ctx.last_command.clone(),
+ user_contexts,
);
futures::pin_mut!(stream);