use serde::{Deserialize, Serialize};
use super::cancel::{CancelInfo, FailureInfo};
use super::state::ExecutionResult;
use crate::TokenUsage;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "payload_kind", rename_all = "snake_case")]
pub enum ResumePayload {
Single {
response: String,
usage: Option<TokenUsage>,
query_id: String,
},
Batch(Vec<QueryResponse>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QueryResponse {
pub query_id: String,
pub response: String,
pub usage: Option<TokenUsage>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "outcome", rename_all = "snake_case")]
pub enum ResumeOutcome {
Continued,
Terminal(TerminalOutcome),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "terminal", rename_all = "snake_case")]
pub enum TerminalOutcome {
Done(ExecutionResult),
Cancelled(CancelInfo),
Failed(FailureInfo),
}