1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! # adk-devtools
//!
//! Developer tools for ADK-Rust coding agents — `read_file`, `write_file`,
//! `edit_file`, `glob`, `grep`, and `bash` — all scoped to a sandboxed
//! [`Workspace`].
//!
//! These are the inner-loop tools a coding agent needs: read and edit files,
//! search the tree, and run commands/tests. Every operation is rooted at a
//! workspace directory and rejected if it escapes; mutations and `bash` are
//! gated by the workspace's capability flags.
//!
//! ## Quick start
//!
//! ```rust,ignore
//! use adk_devtools::{DevToolset, Workspace};
//! use adk_agent::LlmAgentBuilder;
//! use std::sync::Arc;
//!
//! let workspace = Workspace::new("./my-repo");
//! let agent = LlmAgentBuilder::new("coding-agent")
//! .model(model)
//! .toolset(Arc::new(DevToolset::new(workspace)))
//! .build()?;
//! ```
//!
//! ## Sandboxing
//!
//! [`Workspace`] enforces **path containment** (no escaping the root),
//! **read-only** mode (deny writes/bash), and a **bash timeout**. Phase 1 runs
//! `bash` host-local; for strong isolation, run behind a containerized
//! `CodeExecutor` (see `docs/design/coding-agent.md`). The policy vocabulary is
//! aligned with `adk-code`'s `SandboxPolicy` and will integrate with it directly
//! in a later phase.
pub use DevToolError;
pub use ;
pub use DevToolset;
pub use ;