use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum GateType {
Routine,
#[default]
Novel,
Urgent,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GateResult {
pub gate: GateType,
pub confidence: f64,
pub reason: String,
}
impl Default for GateResult {
fn default() -> Self {
Self {
gate: GateType::Novel,
confidence: 0.5,
reason: String::from("default: novel"),
}
}
}
#[derive(Debug, Clone)]
pub struct GateContext<'a> {
pub message: &'a str,
pub recent_messages: &'a [RecentMessage],
pub arousal: f64,
}
#[derive(Debug, Clone)]
pub struct GateContextWithFeedback<'a> {
pub base: GateContext<'a>,
pub resource_pressure: f64,
pub previous_gate: Option<&'a GateResult>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RecentMessage {
pub role: String,
pub content: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ProblemType {
SimpleChat,
Task,
Question,
Dilemma,
SystemDilemma,
}