use supercode_harness::{Agent, Config};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = Config::builder()
.disable_tool("bash")
.tool_description(
"read_file",
"Read a UTF-8 text file, relative to the project root.",
)
.prompt(
"review",
"Review the file {args} for bugs and style issues.",
)
.build();
println!("bash enabled? {}", config.tool_enabled("bash"));
println!("read_file enabled? {}", config.tool_enabled("read_file"));
println!(
"read_file desc: {}",
config.tool_description("read_file", "default builtin description")
);
let agent = Agent::with_provider(config, Box::new(NoProvider));
let expanded = agent.expand_prompt("/review src/main.rs");
println!("expanded prompt: {expanded}");
assert_eq!(
expanded,
"Review the file src/main.rs for bugs and style issues."
);
println!("\n✓ tools toggled, description overridden, slash command expanded");
Ok(())
}
struct NoProvider;
#[async_trait::async_trait]
impl supercode_harness::Provider for NoProvider {
async fn complete(
&self,
_req: &supercode_harness::ChatRequest,
_on_delta: &(dyn for<'a> Fn(&'a str) + Send + Sync),
) -> supercode_harness::Result<(supercode_harness::ChatMessage, supercode_harness::Usage)> {
unreachable!("this example does not run inference")
}
}