use kindling_types::{CapsuleType, Id, ObservationInput, PinTargetType, ScopeIds};
use serde::Serialize;
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct OpenCapsuleBody {
pub kind: CapsuleType,
pub intent: String,
pub scope_ids: ScopeIds,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<Id>,
}
#[derive(Debug, Clone, Default, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CloseCapsuleBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub generate_summary: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub summary_content: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub confidence: Option<f64>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct AppendObservationBody {
#[serde(flatten)]
pub input: ObservationInput,
#[serde(skip_serializing_if = "Option::is_none")]
pub capsule_id: Option<Id>,
#[serde(skip_serializing_if = "Option::is_none")]
pub validate: Option<bool>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CreatePinBody {
pub target_type: PinTargetType,
pub target_id: Id,
#[serde(skip_serializing_if = "Option::is_none")]
pub note: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ttl_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scope_ids: Option<ScopeIds>,
}
impl CreatePinBody {
pub fn new(target_type: PinTargetType, target_id: impl Into<Id>) -> Self {
Self {
target_type,
target_id: target_id.into(),
note: None,
ttl_ms: None,
scope_ids: None,
}
}
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct SessionStartContextBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub max_results: Option<u32>,
pub scope_ids: ScopeIds,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct PreCompactContextBody {
pub scope_ids: ScopeIds,
}