First Version

This commit is contained in:
2026-07-10 15:02:09 +01:00
commit 38494a85a9
562 changed files with 196313 additions and 0 deletions
+308
View File
@@ -0,0 +1,308 @@
use serde::{Deserialize, Serialize};
use serde_json::Value;
// ──────────────────────────────────────────
// Pagination
// ──────────────────────────────────────────
#[derive(Debug, Clone, Deserialize)]
pub struct Page<T> {
pub items: Vec<T>,
pub total: u64,
pub page: u64,
pub size: u64,
pub pages: u64,
}
// ──────────────────────────────────────────
// Workspace
// ──────────────────────────────────────────
#[derive(Debug, Clone, Deserialize)]
pub struct Workspace {
pub id: String,
pub metadata: Option<Value>,
pub configuration: Option<Value>,
pub created_at: String,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct WorkspaceCreate {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub configuration: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct WorkspaceUpdate {
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub configuration: Option<Value>,
}
/// Filter body for `POST /workspaces/list`
#[derive(Debug, Clone, Serialize, Default)]
pub struct WorkspaceGet {
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<Value>,
}
// ──────────────────────────────────────────
// Peer
// ──────────────────────────────────────────
#[derive(Debug, Clone, Deserialize)]
pub struct Peer {
pub id: String,
pub workspace_id: String,
pub created_at: String,
pub metadata: Option<Value>,
pub configuration: Option<Value>,
}
#[derive(Debug, Clone, Serialize)]
pub struct PeerCreate {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub configuration: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct PeerUpdate {
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub configuration: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct PeerGet {
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<Value>,
}
// ──────────────────────────────────────────
// Session
// ──────────────────────────────────────────
#[derive(Debug, Clone, Deserialize)]
pub struct Session {
pub id: String,
pub is_active: bool,
pub workspace_id: String,
pub metadata: Option<Value>,
pub configuration: Option<Value>,
pub created_at: String,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct SessionCreate {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
/// Map of peer_id → SessionPeerConfig
#[serde(skip_serializing_if = "Option::is_none")]
pub peers: Option<std::collections::HashMap<String, SessionPeerConfig>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub configuration: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct SessionUpdate {
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub configuration: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct SessionGet {
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SessionPeerConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub observe_me: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub observe_others: Option<bool>,
}
// ──────────────────────────────────────────
// Message
// ──────────────────────────────────────────
#[derive(Debug, Clone, Deserialize)]
pub struct Message {
pub id: String,
pub content: String,
pub peer_id: String,
pub session_id: String,
pub workspace_id: String,
pub metadata: Option<Value>,
pub created_at: String,
pub token_count: i64,
}
#[derive(Debug, Clone, Serialize)]
pub struct MessageCreate {
pub content: String,
pub peer_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub configuration: Option<Value>,
/// RFC3339 datetime; if None the server assigns now
#[serde(skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct MessageBatchCreate {
pub messages: Vec<MessageCreate>,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct MessageGet {
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct MessageUpdate {
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
}
// ──────────────────────────────────────────
// Conclusion
// ──────────────────────────────────────────
#[derive(Debug, Clone, Deserialize)]
pub struct Conclusion {
pub id: String,
pub content: String,
pub observer_id: String,
pub observed_id: String,
pub session_id: Option<String>,
pub created_at: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct ConclusionCreate {
/// 165535 characters
pub content: String,
pub observer_id: String,
pub observed_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub session_id: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct ConclusionBatchCreate {
/// 1100 conclusions
pub conclusions: Vec<ConclusionCreate>,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct ConclusionGet {
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<Value>,
}
#[derive(Debug, Clone, Serialize)]
pub struct ConclusionQuery {
pub query: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_k: Option<u32>,
/// 0.01.0
#[serde(skip_serializing_if = "Option::is_none")]
pub distance: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<Value>,
}
// ──────────────────────────────────────────
// Dialectic / Peer context
// ──────────────────────────────────────────
#[derive(Debug, Clone, Serialize)]
pub struct DialecticOptions {
/// Natural language query
pub query: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub session_id: Option<String>,
/// peer_id to get the representation for (defaults to the caller)
#[serde(skip_serializing_if = "Option::is_none")]
pub target: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stream: Option<bool>,
/// minimal | low | medium | high | max
#[serde(skip_serializing_if = "Option::is_none")]
pub reasoning_level: Option<String>,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct PeerRepresentationGet {
#[serde(skip_serializing_if = "Option::is_none")]
pub session_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub search_query: Option<String>,
/// 1100
#[serde(skip_serializing_if = "Option::is_none")]
pub search_top_k: Option<u32>,
/// 0.01.0
#[serde(skip_serializing_if = "Option::is_none")]
pub search_max_distance: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_most_frequent: Option<bool>,
/// 1100
#[serde(skip_serializing_if = "Option::is_none")]
pub max_conclusions: Option<u32>,
}
// ──────────────────────────────────────────
// Search
// ──────────────────────────────────────────
#[derive(Debug, Clone, Serialize)]
pub struct MessageSearchOptions {
pub query: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u32>,
}
// ──────────────────────────────────────────
// Queue
// ──────────────────────────────────────────
#[derive(Debug, Clone, Deserialize)]
pub struct QueueStatus {
pub total_work_units: u64,
pub completed_work_units: u64,
pub in_progress_work_units: u64,
pub pending_work_units: u64,
pub sessions: Option<Value>,
}
// ──────────────────────────────────────────
// List query params (pagination)
// ──────────────────────────────────────────
#[derive(Debug, Clone, Default)]
pub struct PageParams {
pub page: Option<u64>,
pub size: Option<u64>,
pub reverse: Option<bool>,
}