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.matches {
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 MemoryExportResponse,
141 // DX-1: Memory Import / Export
142 MemoryImportResponse,
143 // SEC-3: AES-256-GCM Encryption Key Rotation
144 RotateEncryptionKeyRequest,
145 RotateEncryptionKeyResponse,
146 // CE-10: Routing mode
147 RoutingMode,
148};
149pub use types::*;
150
151// gRPC exports
152#[cfg(feature = "grpc")]
153pub mod grpc {
154 //! gRPC client with connection pooling for high-performance scenarios.
155 pub use crate::grpc_client::{GrpcClient, GrpcClientConfig, GrpcConnectionPool, PoolStats};
156 pub use crate::grpc_proto::*;
157}
158
159// Re-export reqwest for CLI and other consumers
160#[cfg(feature = "http-client")]
161pub use reqwest;