Skip to main content

vv_agent/runtime/engine/
state.rs

1use std::path::PathBuf;
2use std::sync::{Arc, Mutex};
3
4use crate::llm::LlmClient;
5use crate::runtime::backends::RuntimeExecutionBackend;
6use crate::runtime::hooks::RuntimeHook;
7use crate::runtime::lifecycle::AfterCycleHook;
8use crate::tools::{ToolPolicy, ToolRegistry};
9use crate::workspace::WorkspaceBackend;
10
11use super::RunEventHandler;
12
13pub struct AgentRuntime<C: LlmClient> {
14    pub llm_client: C,
15    pub tool_registry: ToolRegistry,
16    pub default_workspace: Option<PathBuf>,
17    pub event_handler: Option<RunEventHandler>,
18    pub log_preview_chars: Option<usize>,
19    pub workspace_backend: Arc<dyn WorkspaceBackend>,
20    pub hooks: Vec<Arc<dyn RuntimeHook>>,
21    pub after_cycle_hooks: Vec<Arc<dyn AfterCycleHook>>,
22    pub execution_backend: RuntimeExecutionBackend,
23    pub settings_file: Option<PathBuf>,
24    pub default_backend: Option<String>,
25    pub sub_agent_timeout_seconds: f64,
26    pub(crate) tool_policy: Option<ToolPolicy>,
27    pub(crate) pending_tool_approval:
28        Option<Arc<Mutex<Option<crate::result::PendingToolApproval>>>>,
29}