aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-ai/src/fsm/effects.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/atuin-ai/src/fsm/effects.rs')
-rw-r--r--crates/atuin-ai/src/fsm/effects.rs99
1 files changed, 0 insertions, 99 deletions
diff --git a/crates/atuin-ai/src/fsm/effects.rs b/crates/atuin-ai/src/fsm/effects.rs
deleted file mode 100644
index adc9628e..00000000
--- a/crates/atuin-ai/src/fsm/effects.rs
+++ /dev/null
@@ -1,99 +0,0 @@
-//! Effects (outputs) from the agent FSM.
-//!
-//! The FSM returns these as data; the driver is responsible for executing them.
-
-use std::path::PathBuf;
-use std::time::Duration;
-
-use serde_json::Value;
-
-use crate::permissions::rule::Rule;
-use crate::permissions::writer::RuleDisposition;
-use crate::tools::ClientToolCall;
-
-/// Where to write a permission rule.
-#[derive(Debug, Clone, PartialEq, Eq)]
-pub(crate) enum PermissionTarget {
- /// Project-level: `<git_root_or_cwd>/.atuin/permissions.ai.toml`
- Project,
- /// Global: `~/.config/atuin/permissions.ai.toml`
- Global,
-}
-
-/// Side effects the driver should execute after a state transition.
-#[derive(Debug, Clone)]
-pub(crate) enum Effect {
- // ─── Network ────────────────────────────────────────────────
- /// Start a new streaming request to the server.
- StartStream {
- messages: Vec<Value>,
- session_id: Option<String>,
- },
- /// Abort the active stream connection.
- AbortStream,
-
- // ─── Tool orchestration ─────────────────────────────────────
- /// Run the permission resolver for a tool call.
- CheckPermission {
- tool_id: String,
- tool: ClientToolCall,
- },
- /// Execute a tool (file read, edit, write, shell, history search).
- ExecuteTool {
- tool_id: String,
- tool: ClientToolCall,
- },
- /// Kill a running tool (send interrupt to shell command).
- AbortTool { tool_id: String },
- /// Load a skill's content asynchronously (read + interpolate).
- LoadSkill {
- name: String,
- arguments: Option<String>,
- },
-
- // ─── Persistence ────────────────────────────────────────────
- /// Persist current conversation state to disk.
- Persist,
- /// Write a permanent permission rule to disk.
- WritePermissionRule {
- target: PermissionTarget,
- rule: Rule,
- disposition: RuleDisposition,
- },
- /// Cache a session-scoped file permission grant.
- CacheSessionGrant { path: PathBuf },
- /// Archive current session and start fresh (IO only — state already updated by FSM).
- ArchiveSession,
-
- // ─── Timers ─────────────────────────────────────────────────
- /// Schedule a timer that fires an event after the given delay.
- ScheduleTimeout {
- timeout_id: u64,
- duration: Duration,
- kind: TimeoutKind,
- },
-
- // ─── Exit ───────────────────────────────────────────────────
- /// Exit the application with the given action.
- ExitApp(ExitAction),
-}
-
-/// What kind of timeout was scheduled.
-#[derive(Debug, Clone, PartialEq, Eq)]
-pub(crate) enum TimeoutKind {
- /// Dangerous command confirmation dialog auto-dismiss.
- Confirmation,
- /// Shell tool execution timeout — abort the tool if it's still running.
- ToolExecution { tool_id: String },
-}
-
-/// What to do when exiting the TUI.
-#[derive(Debug, Clone, PartialEq, Eq)]
-pub(crate) enum ExitAction {
- /// Run the suggested command.
- Execute(String),
- /// Insert the command into the shell without running.
- Insert(String),
- /// Exit without action.
- Cancel,
-}