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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//! rhema-agent-tools — the agent toolkit on rhema-core's tool
//! abstraction.
//!
//! The pieces any agent needs, concrete and shared. The concepts stay in
//! rhema-core (`ToolResolver`, `ToolCall`, `Session`); this crate
//! implements them:
//!
//! - [`approval`] — the `Approval` hook and `AllowAll`/`DenyAll`
//! - [`exec`] — the `ShellExecutor` seam: where `bash` commands run
//! - [`shell`] — `ShellTools`, one approval-gated `bash` scoped to a
//! workspace; reading, listing, and editing are shell work, not
//! separate tools
//! - [`skills`] — discovery of markdown skills, prompt presentation
//! - [`overlay`] — `Overlay`, one resolver over built-ins plus an extension set
//! - [`paste`] — `ExpandPastes`, paste expansion at the provider seam
//! - [`revive`] — `repair_dangling_calls`, `revive_dangling_calls`
//! - [`prompt`] — the Jinja system-prompt renderer
//! - [`vision`] — the `see` macro: a bash command's staged images
//! become [`ToolResult`] image blocks
//! - [`jobs`] — the `job` macro: background shells the model starts now
//! and reads on a later turn
//!
//! # Skills
//!
//! A skill is a folder with a `SKILL.md` whose frontmatter carries a
//! `description` (the trigger). Only name, trigger, and file enter the
//! system prompt; the model reads a body itself through the shell when a
//! trigger applies. Skills live globally under the config directory and
//! per-workspace under `.rhema/skills`, project shadowing global.
//!
//! # Consumers
//!
//! The coding-agent driver (`rhema-coding-agent`) builds on the kit; the
//! TUI and ACP adapters reach it through that driver. The claw's resident
//! agent assembles its own agent from the same pieces, which is the
//! point: one shell, one approval seam, one expansion, one renderer —
//! not one per driver.
pub use ;
pub use LocalShell;
pub use ;
pub use Overlay;
pub use ExpandPastes;
pub use ;
// Re-exported so a caller can name the error the renderer returns
// without depending on minijinja itself.
pub use TemplateError;
pub use ;
pub use ShellTools;
pub use Skill;