1use kindling_types::{CapsuleType, Id, ObservationInput, PinTargetType, ScopeIds};
8use serde::Serialize;
9
10#[derive(Debug, Clone, Serialize)]
12#[serde(rename_all = "camelCase")]
13pub(crate) struct OpenCapsuleBody {
14 pub kind: CapsuleType,
15 pub intent: String,
16 pub scope_ids: ScopeIds,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub id: Option<Id>,
19}
20
21#[derive(Debug, Clone, Default, Serialize)]
23#[serde(rename_all = "camelCase")]
24pub struct CloseCapsuleBody {
25 #[serde(skip_serializing_if = "Option::is_none")]
27 pub generate_summary: Option<bool>,
28 #[serde(skip_serializing_if = "Option::is_none")]
30 pub summary_content: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub confidence: Option<f64>,
34}
35
36#[derive(Debug, Clone, Serialize)]
39#[serde(rename_all = "camelCase")]
40pub(crate) struct AppendObservationBody {
41 #[serde(flatten)]
42 pub input: ObservationInput,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub capsule_id: Option<Id>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub validate: Option<bool>,
47}
48
49#[derive(Debug, Clone, Serialize)]
51#[serde(rename_all = "camelCase")]
52pub struct CreatePinBody {
53 pub target_type: PinTargetType,
55 pub target_id: Id,
57 #[serde(skip_serializing_if = "Option::is_none")]
59 pub note: Option<String>,
60 #[serde(skip_serializing_if = "Option::is_none")]
62 pub ttl_ms: Option<i64>,
63 #[serde(skip_serializing_if = "Option::is_none")]
65 pub scope_ids: Option<ScopeIds>,
66}
67
68impl CreatePinBody {
69 pub fn new(target_type: PinTargetType, target_id: impl Into<Id>) -> Self {
71 Self {
72 target_type,
73 target_id: target_id.into(),
74 note: None,
75 ttl_ms: None,
76 scope_ids: None,
77 }
78 }
79}
80
81#[derive(Debug, Clone, Serialize)]
85#[serde(rename_all = "camelCase")]
86pub(crate) struct SessionStartContextBody {
87 #[serde(skip_serializing_if = "Option::is_none")]
88 pub max_results: Option<u32>,
89 pub scope_ids: ScopeIds,
90}
91
92#[derive(Debug, Clone, Serialize)]
94#[serde(rename_all = "camelCase")]
95pub(crate) struct PreCompactContextBody {
96 pub scope_ids: ScopeIds,
97}