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;
86mod types;
87
88// gRPC client with connection pooling
89#[cfg(feature = "grpc")]
90mod grpc_client;
91#[cfg(feature = "grpc")]
92mod grpc_proto;
93
94pub use events::{DakeraEvent, MemoryEvent, OpStatus, VectorMutationOp};
95
96pub use admin::{
97    AutoPilotConfig, AutoPilotConfigRequest, AutoPilotConfigResponse, AutoPilotConsolidationResult,
98    AutoPilotDedupResult, AutoPilotStatusResponse, AutoPilotTriggerAction, AutoPilotTriggerRequest,
99    AutoPilotTriggerResponse, BackupInfo, BackupListResponse, CacheStats, ClusterStatus,
100    ConsolidationResultSnapshot, CreateBackupRequest, CreateBackupResponse, DecayConfigResponse,
101    DecayConfigUpdateRequest, DecayConfigUpdateResponse, DecayStatsResponse, DedupResultSnapshot,
102    FulltextReindexNamespaceResult, FulltextReindexResponse, IndexStats, IndexStatsResponse,
103    KpiSnapshot, LastDecayCycleStats, NodeInfo, NodeListResponse, OpsStats, QuotaConfig,
104    QuotaListResponse, QuotaStatus, RestoreBackupRequest, RestoreBackupResponse, RuntimeConfig,
105    SlowQueryListResponse,
106};
107pub use agents::{AgentStats, AgentSummary, CompressResponse, Memory, WakeUpResponse};
108pub use analytics::{AnalyticsOverview, LatencyAnalytics, StorageAnalytics, ThroughputAnalytics};
109#[cfg(feature = "http-client")]
110pub use client::{DakeraClient, DakeraClientBuilder};
111pub use error::{ClientError, Result};
112pub use keys::{
113    ApiKeyUsageResponse, CreateKeyRequest, CreateKeyResponse, CreateNamespaceKeyRequest,
114    CreateNamespaceKeyResponse, KeyInfo, ListKeysResponse, ListNamespaceKeysResponse,
115    NamespaceKeyInfo, NamespaceKeyUsageResponse, RotateKeyResponse,
116};
117pub use knowledge::{
118    AgentNetworkEdge, AgentNetworkInfo, AgentNetworkNode, AgentNetworkStats,
119    CrossAgentNetworkRequest, CrossAgentNetworkResponse, DeduplicateRequest, DeduplicateResponse,
120    FullKnowledgeGraphRequest, KnowledgeEdge, KnowledgeGraphRequest, KnowledgeGraphResponse,
121    KnowledgeNode, SummarizeRequest, SummarizeResponse,
122};
123pub use memory::{
124    // OBS-1: Business-Event Audit Log
125    AuditEvent,
126    AuditExportResponse,
127    AuditListResponse,
128    AuditQuery,
129    BatchForgetRequest,
130    BatchForgetResponse,
131    BatchMemoryFilter,
132    BatchRecallRequest,
133    BatchRecallResponse,
134    // CE-6: DBSCAN Adaptive Consolidation
135    ConsolidationConfig,
136    ConsolidationLogEntry,
137    ExtractionProviderInfo,
138    // EXT-1: External Extraction Providers
139    ExtractionResult,
140    ForgetRequest,
141    ForgetResponse,
142    MemoryExportResponse,
143    // DX-1: Memory Import / Export
144    MemoryImportResponse,
145    MemoryType,
146    RecallRequest,
147    RecallResponse,
148    RecalledMemory,
149    // SEC-3: AES-256-GCM Encryption Key Rotation
150    RotateEncryptionKeyRequest,
151    RotateEncryptionKeyResponse,
152    // CE-10: Routing mode
153    RoutingMode,
154    Session,
155    SessionEndResponse,
156    SessionStartResponse,
157    StoreMemoryRequest,
158    StoreMemoryResponse,
159};
160pub use types::*;
161
162// gRPC exports
163#[cfg(feature = "grpc")]
164pub mod grpc {
165    //! gRPC client with connection pooling for high-performance scenarios.
166    pub use crate::grpc_client::{GrpcClient, GrpcClientConfig, GrpcConnectionPool, PoolStats};
167    pub use crate::grpc_proto::*;
168}
169
170// Re-export reqwest for CLI and other consumers
171#[cfg(feature = "http-client")]
172pub use reqwest;