Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 141 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,19 @@ rusqlite = { version = "0.40", features = ["bundled"], optional = true }
# by the `repl` feature to keep the default build light.
rhai = { version = "1", features = ["sync"], optional = true }

# Optional builtin tool family for deterministic time/date helpers.
chrono = { version = "0.4", optional = true }
chrono-tz = { version = "0.10", optional = true }

[features]
default = []
# Embedded SQLite-backed checkpointer (`graph::checkpoint::SqliteCheckpointer`).
sqlite = ["dep:rusqlite"]
# Embedded Rhai-backed `.ragsh` REPL session runtime (`repl::session`).
repl = ["dep:rhai"]
# Builtin generic tools (`harness::tools`) kept out of the default dependency
# graph so host applications can choose whether they want these implementations.
tools = ["dep:chrono", "dep:chrono-tz"]

[dev-dependencies]
tokio = { version = "1", features = ["macros", "rt-multi-thread", "time", "test-util"] }
Expand Down
2 changes: 2 additions & 0 deletions src/harness/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ pub mod subagent;
pub mod summarization;
pub mod testkit;
pub mod tool;
#[cfg(feature = "tools")]
pub mod tools;
pub mod usage;
pub mod workspace;

Expand Down
13 changes: 13 additions & 0 deletions src/harness/tools/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//! Optional builtin harness tools.
//!
//! These tools are generic implementations that depend only on TinyAgents'
//! [`Tool`][crate::harness::tool::Tool] interface. They are behind the `tools`
//! Cargo feature so applications that provide their own tool surface do not pull
//! in extra dependencies by default.

mod time;

pub use time::{CurrentTimeTool, ResolveTimeTool, register_time_tools, time_tools};

#[cfg(test)]
mod time_test;
Loading