use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RunCreateStateful {
#[serde(rename = "assistant_id")]
pub assistant_id: Box<models::RunCreateStatefulAssistantId>,
#[serde(rename = "checkpoint", skip_serializing_if = "Option::is_none")]
pub checkpoint: Option<models::CheckpointConfig>,
#[serde(
rename = "input",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub input: Option<Option<Box<models::Input1>>>,
#[serde(
rename = "command",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub command: Option<Option<Box<models::Command>>>,
#[serde(rename = "metadata", skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
#[serde(rename = "config", skip_serializing_if = "Option::is_none")]
pub config: Option<Box<models::Config3>>,
#[serde(rename = "context", skip_serializing_if = "Option::is_none")]
pub context: Option<serde_json::Value>,
#[serde(rename = "webhook", skip_serializing_if = "Option::is_none")]
pub webhook: Option<String>,
#[serde(rename = "interrupt_before", skip_serializing_if = "Option::is_none")]
pub interrupt_before: Option<Box<models::InterruptBefore1>>,
#[serde(rename = "interrupt_after", skip_serializing_if = "Option::is_none")]
pub interrupt_after: Option<Box<models::InterruptAfter1>>,
#[serde(rename = "stream_mode", skip_serializing_if = "Option::is_none")]
pub stream_mode: Option<Box<models::StreamMode>>,
#[serde(rename = "stream_subgraphs", skip_serializing_if = "Option::is_none")]
pub stream_subgraphs: Option<bool>,
#[serde(rename = "stream_resumable", skip_serializing_if = "Option::is_none")]
pub stream_resumable: Option<bool>,
#[serde(rename = "on_disconnect", skip_serializing_if = "Option::is_none")]
pub on_disconnect: Option<OnDisconnect>,
#[serde(rename = "feedback_keys", skip_serializing_if = "Option::is_none")]
pub feedback_keys: Option<Vec<String>>,
#[serde(rename = "multitask_strategy", skip_serializing_if = "Option::is_none")]
pub multitask_strategy: Option<MultitaskStrategy>,
#[serde(rename = "if_not_exists", skip_serializing_if = "Option::is_none")]
pub if_not_exists: Option<IfNotExists>,
#[serde(rename = "after_seconds", skip_serializing_if = "Option::is_none")]
pub after_seconds: Option<f64>,
#[serde(rename = "checkpoint_during", skip_serializing_if = "Option::is_none")]
pub checkpoint_during: Option<bool>,
#[serde(rename = "durability", skip_serializing_if = "Option::is_none")]
pub durability: Option<Durability>,
}
impl RunCreateStateful {
pub fn new(assistant_id: models::RunCreateStatefulAssistantId) -> RunCreateStateful {
RunCreateStateful {
assistant_id: Box::new(assistant_id),
checkpoint: None,
input: None,
command: None,
metadata: None,
config: None,
context: None,
webhook: None,
interrupt_before: None,
interrupt_after: None,
stream_mode: None,
stream_subgraphs: None,
stream_resumable: None,
on_disconnect: None,
feedback_keys: None,
multitask_strategy: None,
if_not_exists: None,
after_seconds: None,
checkpoint_during: None,
durability: None,
}
}
}
#[derive(
Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize,
)]
pub enum OnDisconnect {
#[serde(rename = "cancel")]
#[default]
Cancel,
#[serde(rename = "continue")]
Continue,
}
#[derive(
Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize,
)]
pub enum MultitaskStrategy {
#[serde(rename = "reject")]
#[default]
Reject,
#[serde(rename = "rollback")]
Rollback,
#[serde(rename = "interrupt")]
Interrupt,
#[serde(rename = "enqueue")]
Enqueue,
}
#[derive(
Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize,
)]
pub enum IfNotExists {
#[serde(rename = "create")]
#[default]
Create,
#[serde(rename = "reject")]
Reject,
}
#[derive(
Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize,
)]
pub enum Durability {
#[serde(rename = "sync")]
#[default]
Sync,
#[serde(rename = "async")]
Async,
#[serde(rename = "exit")]
Exit,
}