use agent_feedback::{buffered_response, AgentFeedbackLayer, Options};
use axum::{middleware, routing::get, Router};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let feedback = AgentFeedbackLayer::new(
Options::new(std::env::var("AGENT_FEEDBACK_KEY")?)
.include(["/search", "/docs/**"])
.account_ref(|request| authenticated_account_id(request))
.user_ref(|request| authenticated_user_id(request))
.anonymous_ref(|request| first_party_visitor_id(request))
.customer_ref(|request| authenticated_account_id(request)) // durable Ask once compatibility
.session_ref(|request| product_journey_id(request)), // optional server-issued journey
)?;
let app = Router::new()
.route("/search", get(search_handler))
.layer(feedback.clone())
.layer(middleware::from_fn(authenticate_product_request));
// Start Axum, then call feedback.shutdown().await during graceful shutdown.
Ok(())
}