use kindling_service::{CloseCapsuleOptions, CreatePinOptions, OpenCapsuleOptions};
use kindling_types::{CapsuleType, Id, ObservationInput, PinTargetType, ScopeIds};
use serde::Deserialize;
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OpenCapsuleRequest {
pub kind: CapsuleType,
pub intent: String,
#[serde(default)]
pub scope_ids: ScopeIds,
#[serde(default)]
pub id: Option<Id>,
}
impl From<OpenCapsuleRequest> for OpenCapsuleOptions {
fn from(r: OpenCapsuleRequest) -> Self {
OpenCapsuleOptions {
kind: r.kind,
intent: r.intent,
scope_ids: r.scope_ids,
id: r.id,
}
}
}
#[derive(Debug, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CloseCapsuleRequest {
#[serde(default)]
pub generate_summary: Option<bool>,
#[serde(default)]
pub summary_content: Option<String>,
#[serde(default)]
pub confidence: Option<f64>,
}
impl From<CloseCapsuleRequest> for CloseCapsuleOptions {
fn from(r: CloseCapsuleRequest) -> Self {
CloseCapsuleOptions {
generate_summary: r.generate_summary.unwrap_or(false),
summary_content: r.summary_content,
confidence: r.confidence,
}
}
}
#[derive(Debug, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OpenCapsuleQuery {
#[serde(default)]
pub session_id: Option<String>,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AppendObservationRequest {
#[serde(flatten)]
pub input: ObservationInput,
#[serde(default)]
pub capsule_id: Option<Id>,
#[serde(default)]
pub validate: Option<bool>,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CreatePinRequest {
pub target_type: PinTargetType,
pub target_id: Id,
#[serde(default)]
pub note: Option<String>,
#[serde(default)]
pub ttl_ms: Option<i64>,
#[serde(default)]
pub scope_ids: Option<ScopeIds>,
}
impl From<CreatePinRequest> for CreatePinOptions {
fn from(r: CreatePinRequest) -> Self {
CreatePinOptions {
target_type: r.target_type,
target_id: r.target_id,
note: r.note,
ttl_ms: r.ttl_ms,
scope_ids: r.scope_ids,
}
}
}
#[derive(Debug, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionStartContextRequest {
#[serde(default)]
pub max_results: Option<u32>,
#[serde(default)]
pub scope_ids: ScopeIds,
}
pub const DEFAULT_MAX_RESULTS: u32 = 10;
#[derive(Debug, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PreCompactContextRequest {
#[serde(default)]
pub scope_ids: ScopeIds,
}