Skip to main content

dakera_client/
lib.rs

1//! Dakera Rust Client SDK
2//!
3//! A high-level Rust client for interacting with Dakera AI Agent Memory Platform.
4//!
5//! # Quick Start (HTTP)
6//!
7//! ```rust,no_run
8//! use dakera_client::{DakeraClient, UpsertRequest, QueryRequest};
9//!
10//! #[tokio::main]
11//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
12//!     // Create a client
13//!     let client = DakeraClient::new("http://localhost:3000")?;
14//!
15//!     // Check health
16//!     let health = client.health().await?;
17//!     println!("Server healthy: {}", health.healthy);
18//!
19//!     // Upsert vectors
20//!     let request = UpsertRequest {
21//!         vectors: vec![
22//!             dakera_client::Vector {
23//!                 id: "vec1".to_string(),
24//!                 values: vec![0.1, 0.2, 0.3, 0.4],
25//!                 metadata: None,
26//!             },
27//!         ],
28//!     };
29//!     client.upsert("my-namespace", request).await?;
30//!
31//!     // Query for similar vectors
32//!     let query = QueryRequest {
33//!         vector: vec![0.1, 0.2, 0.3, 0.4],
34//!         top_k: 10,
35//!         filter: None,
36//!         include_metadata: true,
37//!         include_vectors: false,
38//!         distance_metric: Default::default(),
39//!         consistency: Default::default(),
40//!         staleness_config: None,
41//!     };
42//!     let results = client.query("my-namespace", query).await?;
43//!
44//!     for match_ in results.results {
45//!         println!("ID: {}, Score: {}", match_.id, match_.score);
46//!     }
47//!
48//!     Ok(())
49//! }
50//! ```
51//!
52//! # gRPC Client with Connection Pooling
53//!
54//! Enable the `grpc` feature for high-performance gRPC communication:
55//!
56//! ```rust,ignore
57//! use dakera_client::grpc::{GrpcClient, GrpcClientConfig, GrpcConnectionPool};
58//!
59//! #[tokio::main]
60//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
61//!     // Single client with HTTP/2 multiplexing
62//!     let config = GrpcClientConfig::default()
63//!         .with_endpoint("http://localhost:50051")
64//!         .with_concurrency_limit(100);
65//!     let client = GrpcClient::connect(config).await?;
66//!
67//!     // Or use a connection pool for even higher throughput
68//!     let pool = GrpcConnectionPool::new(GrpcClientConfig::default(), 4).await?;
69//!     let client = pool.get();
70//!
71//!     Ok(())
72//! }
73//! ```
74
75pub mod admin;
76pub mod agents;
77pub mod analytics;
78#[cfg(feature = "http-client")]
79mod client;
80mod error;
81pub mod events;
82pub mod filter;
83pub mod keys;
84pub mod knowledge;
85pub mod memory;
86pub mod session;
87mod types;
88
89// gRPC client with connection pooling
90#[cfg(feature = "grpc")]
91mod grpc_client;
92#[cfg(feature = "grpc")]
93mod grpc_proto;
94
95pub use events::{DakeraEvent, MemoryEvent, OpStatus, VectorMutationOp};
96
97pub use admin::{
98    AutoPilotConfig, AutoPilotConfigRequest, AutoPilotConfigResponse, AutoPilotConsolidationResult,
99    AutoPilotDedupResult, AutoPilotStatusResponse, AutoPilotTriggerAction, AutoPilotTriggerRequest,
100    AutoPilotTriggerResponse, BackupInfo, BackupListResponse, CacheStats, ClusterStatus,
101    ConsolidationResultSnapshot, CreateBackupRequest, CreateBackupResponse, DecayConfigResponse,
102    DecayConfigUpdateRequest, DecayConfigUpdateResponse, DecayStatsResponse, DedupResultSnapshot,
103    FulltextReindexNamespaceResult, FulltextReindexResponse, IndexStats, IndexStatsResponse,
104    KpiSnapshot, LastDecayCycleStats, NodeInfo, NodeListResponse, OpsStats, QuotaConfig,
105    QuotaListResponse, QuotaStatus, RestoreBackupRequest, RestoreBackupResponse, RuntimeConfig,
106    SlowQueryListResponse,
107};
108pub use agents::{AgentStats, AgentSummary, CompressResponse, Memory, WakeUpResponse};
109pub use analytics::{AnalyticsOverview, LatencyAnalytics, StorageAnalytics, ThroughputAnalytics};
110#[cfg(feature = "http-client")]
111pub use client::{DakeraClient, DakeraClientBuilder};
112pub use error::{ClientError, Result};
113pub use keys::{
114    ApiKeyUsageResponse, CreateKeyRequest, CreateKeyResponse, CreateNamespaceKeyRequest,
115    CreateNamespaceKeyResponse, KeyInfo, ListKeysResponse, ListNamespaceKeysResponse,
116    NamespaceKeyInfo, NamespaceKeyUsageResponse, RotateKeyResponse,
117};
118pub use knowledge::{
119    AgentNetworkEdge, AgentNetworkInfo, AgentNetworkNode, AgentNetworkStats,
120    CrossAgentNetworkRequest, CrossAgentNetworkResponse, DeduplicateRequest, DeduplicateResponse,
121    FullKnowledgeGraphRequest, KnowledgeEdge, KnowledgeGraphRequest, KnowledgeGraphResponse,
122    KnowledgeNode, SummarizeRequest, SummarizeResponse,
123};
124pub use memory::{
125    // OBS-1: Business-Event Audit Log
126    AuditEvent,
127    AuditExportResponse,
128    AuditListResponse,
129    AuditQuery,
130    BatchForgetRequest,
131    BatchForgetResponse,
132    BatchMemoryFilter,
133    BatchRecallRequest,
134    BatchRecallResponse,
135    // CE-6: DBSCAN Adaptive Consolidation
136    ConsolidationConfig,
137    ConsolidationLogEntry,
138    ExtractionProviderInfo,
139    // EXT-1: External Extraction Providers
140    ExtractionResult,
141    ForgetRequest,
142    ForgetResponse,
143    MemoryExportResponse,
144    // DX-1: Memory Import / Export
145    MemoryImportResponse,
146    MemoryType,
147    RecallRequest,
148    RecallResponse,
149    RecalledMemory,
150    // SEC-3: AES-256-GCM Encryption Key Rotation
151    RotateEncryptionKeyRequest,
152    RotateEncryptionKeyResponse,
153    // CE-10: Routing mode
154    RoutingMode,
155    Session,
156    SessionEndResponse,
157    SessionStartResponse,
158    StoreMemoryRequest,
159    StoreMemoryResponse,
160};
161#[cfg(feature = "http-client")]
162pub use session::ChatMemorySession;
163pub use types::*;
164
165// gRPC exports
166#[cfg(feature = "grpc")]
167pub mod grpc {
168    //! gRPC client with connection pooling for high-performance scenarios.
169    pub use crate::grpc_client::{GrpcClient, GrpcClientConfig, GrpcConnectionPool, PoolStats};
170    pub use crate::grpc_proto::*;
171}
172
173// Re-export reqwest for CLI and other consumers
174#[cfg(feature = "http-client")]
175pub use reqwest;