use saya_agent::{AgentEvent, AgentOutput, ApprovalChoice, CancellationToken};
use tokio::sync::mpsc::UnboundedReceiver;
use tokio::sync::oneshot;
pub(crate) enum StreamMsg {
Event(AgentEvent),
ApprovalRequest {
tool: String,
detail: Option<String>,
grant: Option<String>,
respond: oneshot::Sender<ApprovalChoice>,
},
Notice(String),
Done(Result<AgentOutput, String>),
}
pub(crate) struct Stream {
pub(crate) rx: UnboundedReceiver<StreamMsg>,
pub(crate) cancel: CancellationToken,
pub(crate) prompt: String,
}