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.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;