use agy_bridge::{
AgyBridge,
config::AgentConfig,
triggers::{TriggerConfig, TriggerEntry, TriggerSet},
};
#[tokio::main]
async fn main() -> Result<(), agy_bridge::error::Error> {
agy_bridge::load_dotenv();
let periodic_trigger = TriggerEntry {
name: "poll_threads".into(),
config: TriggerConfig::every_secs(30),
message_template: "Check threads for new updates".into(),
};
let file_trigger = TriggerEntry {
name: "watch_workspace".into(),
config: TriggerConfig::on_file_change("/tmp/agy-bridge-demo"),
message_template: "Files changed in workspace: {changes}".into(),
};
println!(
" Periodic trigger: {}",
periodic_trigger.config.description()
);
println!(
" File-watch trigger: {}",
file_trigger.config.description()
);
let trigger_set = TriggerSet::from([periodic_trigger.clone(), file_trigger.clone()]);
println!(
" TriggerSet has {} triggers: {:?}",
trigger_set.len(),
trigger_set.iter().map(|t| &t.name).collect::<Vec<_>>()
);
let config = AgentConfig::builder()
.triggers(Vec::<TriggerEntry>::from(trigger_set))
.build();
let bridge = AgyBridge::builder().build()?;
let agent = bridge.agent(config).await?;
let prompt = "Describe how triggers automate agent workflows.";
println!(" User: {prompt}");
let response_text = agent.chat(prompt).await?.text().await?;
println!(" Agent: {response_text}");
agent.shutdown().await?;
Ok(())
}