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 keys;
83pub mod knowledge;
84pub mod memory;
85mod types;
86
87// gRPC client with connection pooling
88#[cfg(feature = "grpc")]
89mod grpc_client;
90#[cfg(feature = "grpc")]
91mod grpc_proto;
92
93pub use events::{DakeraEvent, MemoryEvent, OpStatus, VectorMutationOp};
94
95pub use admin::{
96    AutoPilotConfig, AutoPilotConfigRequest, AutoPilotConfigResponse, AutoPilotConsolidationResult,
97    AutoPilotDedupResult, AutoPilotStatusResponse, AutoPilotTriggerAction, AutoPilotTriggerRequest,
98    AutoPilotTriggerResponse, BackupInfo, BackupListResponse, CacheStats, ClusterStatus,
99    ConsolidationResultSnapshot, CreateBackupRequest, CreateBackupResponse, DedupResultSnapshot,
100    IndexStats, IndexStatsResponse, NodeInfo, NodeListResponse, QuotaConfig, QuotaListResponse,
101    QuotaStatus, RestoreBackupRequest, RestoreBackupResponse, RuntimeConfig, SlowQueryListResponse,
102};
103pub use agents::{AgentStats, AgentSummary};
104pub use analytics::{AnalyticsOverview, LatencyAnalytics, StorageAnalytics, ThroughputAnalytics};
105#[cfg(feature = "http-client")]
106pub use client::{DakeraClient, DakeraClientBuilder};
107pub use error::{ClientError, Result};
108pub use keys::{
109    ApiKeyUsageResponse, CreateKeyRequest, CreateKeyResponse, KeyInfo, ListKeysResponse,
110    RotateKeyResponse,
111};
112pub use knowledge::{
113    AgentNetworkEdge, AgentNetworkInfo, AgentNetworkNode, AgentNetworkStats,
114    CrossAgentNetworkRequest, CrossAgentNetworkResponse, DeduplicateRequest, DeduplicateResponse,
115    FullKnowledgeGraphRequest, KnowledgeEdge, KnowledgeGraphRequest, KnowledgeGraphResponse,
116    KnowledgeNode, SummarizeRequest, SummarizeResponse,
117};
118pub use memory::{
119    BatchForgetRequest, BatchForgetResponse, BatchMemoryFilter, BatchRecallRequest,
120    BatchRecallResponse,
121};
122pub use types::*;
123
124// gRPC exports
125#[cfg(feature = "grpc")]
126pub mod grpc {
127    //! gRPC client with connection pooling for high-performance scenarios.
128    pub use crate::grpc_client::{GrpcClient, GrpcClientConfig, GrpcConnectionPool, PoolStats};
129    pub use crate::grpc_proto::*;
130}
131
132// Re-export reqwest for CLI and other consumers
133#[cfg(feature = "http-client")]
134pub use reqwest;