feat(config): make config writes atomic with rollback-safe replacement (#190)
* feat(runtime): add Docker runtime MVP and runtime-aware command builder * feat(security): add shell risk classification, approval gates, and action throttling * feat(gateway): add per-endpoint rate limiting and webhook idempotency * feat(config): make config writes atomic with rollback-safe replacement --------- Co-authored-by: chumyin <chumyin@users.noreply.github.com>
This commit is contained in:
parent
f1e3b1166d
commit
b0e1e32819
11 changed files with 1202 additions and 67 deletions
|
|
@ -23,13 +23,22 @@ pub use traits::Tool;
|
|||
pub use traits::{ToolResult, ToolSpec};
|
||||
|
||||
use crate::memory::Memory;
|
||||
use crate::runtime::{NativeRuntime, RuntimeAdapter};
|
||||
use crate::security::SecurityPolicy;
|
||||
use std::sync::Arc;
|
||||
|
||||
/// Create the default tool registry
|
||||
pub fn default_tools(security: Arc<SecurityPolicy>) -> Vec<Box<dyn Tool>> {
|
||||
default_tools_with_runtime(security, Arc::new(NativeRuntime::new()))
|
||||
}
|
||||
|
||||
/// Create the default tool registry with explicit runtime adapter.
|
||||
pub fn default_tools_with_runtime(
|
||||
security: Arc<SecurityPolicy>,
|
||||
runtime: Arc<dyn RuntimeAdapter>,
|
||||
) -> Vec<Box<dyn Tool>> {
|
||||
vec![
|
||||
Box::new(ShellTool::new(security.clone())),
|
||||
Box::new(ShellTool::new(security.clone(), runtime)),
|
||||
Box::new(FileReadTool::new(security.clone())),
|
||||
Box::new(FileWriteTool::new(security)),
|
||||
]
|
||||
|
|
@ -41,9 +50,26 @@ pub fn all_tools(
|
|||
memory: Arc<dyn Memory>,
|
||||
composio_key: Option<&str>,
|
||||
browser_config: &crate::config::BrowserConfig,
|
||||
) -> Vec<Box<dyn Tool>> {
|
||||
all_tools_with_runtime(
|
||||
security,
|
||||
Arc::new(NativeRuntime::new()),
|
||||
memory,
|
||||
composio_key,
|
||||
browser_config,
|
||||
)
|
||||
}
|
||||
|
||||
/// Create full tool registry including memory tools and optional Composio.
|
||||
pub fn all_tools_with_runtime(
|
||||
security: &Arc<SecurityPolicy>,
|
||||
runtime: Arc<dyn RuntimeAdapter>,
|
||||
memory: Arc<dyn Memory>,
|
||||
composio_key: Option<&str>,
|
||||
browser_config: &crate::config::BrowserConfig,
|
||||
) -> Vec<Box<dyn Tool>> {
|
||||
let mut tools: Vec<Box<dyn Tool>> = vec![
|
||||
Box::new(ShellTool::new(security.clone())),
|
||||
Box::new(ShellTool::new(security.clone(), runtime)),
|
||||
Box::new(FileReadTool::new(security.clone())),
|
||||
Box::new(FileWriteTool::new(security.clone())),
|
||||
Box::new(MemoryStoreTool::new(memory.clone())),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue