Skip to main content

agentlink_sdk/
lib.rs

1//! AgentLink SDK
2//!
3//! A pure protocol implementation for AgentLink IM services.
4//! This crate provides HTTP and MQTT clients without any Tauri or SQLite dependencies.
5//!
6//! # Example (使用邮箱登录)
7//!
8//! ```rust
9//! use agentlink_sdk::{AgentLinkClient, ClientConfig};
10//!
11//! async fn example() {
12//!     let config = ClientConfig {
13//!         api_url: "https://api.agentlink.im/api/v1".to_string(),
14//!         mqtt_broker_url: "mqtts://mqtt.agentlink.im:8883".to_string(),
15//!         token: None,
16//!         user_id: None,
17//!     };
18//!
19//!     let client = AgentLinkClient::new(config);
20//!
21//!     // Login
22//!     let response = client.auth()
23//!         .login_with_email_code("user@example.com", "123456")
24//!         .await
25//!         .unwrap();
26//!
27//!     // Connect MQTT
28//!     client.connect_mqtt(&response.token, &response.user.id)
29//!         .await
30//!         .unwrap();
31//! }
32//! ```
33//!
34//! # Example (使用 API Key,类似 OpenAI SDK)
35//!
36//! ```rust,ignore
37//! use agentlink_sdk::{AgentLinkClient, EVENT_MESSAGE_RECEIVED};
38//!
39//! // 方式 1: 从环境变量读取 API Key
40//! // 环境变量: AGENTLINK_API_KEY=your-api-key
41//! let client = AgentLinkClient::from_env().expect("Missing AGENTLINK_API_KEY");
42//!
43//! // 方式 2: 直接传入 API Key
44//! let client = AgentLinkClient::from_api_key("your-api-key");
45//!
46//! // 连接 MQTT 并启动事件循环
47//! client.connect_and_start().await.expect("Connection failed");
48//!
49//! // 注册事件处理器
50//! client.on(EVENT_MESSAGE_RECEIVED, |event| async move {
51//!     println!("收到消息: {:?}", event);
52//! }).await;
53//! ```
54
55pub mod client;
56pub mod error;
57pub mod events;
58pub mod http;
59pub mod mqtt;
60pub mod protocols;
61pub mod services;
62pub mod token_manager;
63
64pub use client::{
65    AgentLinkClient, ClientConfig,
66    ENV_API_KEY, ENV_API_URL,
67    DEFAULT_API_URL, API_PATH_PREFIX,
68};
69pub use error::{SdkError, SdkResult};
70pub use events::*;
71
72// Re-export commonly used types
73pub use protocols::{
74    auth::{AuthResponse, LoginRequest, LoginResponse, SendCodeRequest, SendCodeResponse},
75    conversation::{Conversation, CreateConversationRequest, CreateConversationResponse},
76    events::ServerEvent,
77    friend::{FriendRequest, FriendRequestsResponse, Friendship, FriendsListResponse},
78    message::{Message, SendMessageRequest},
79    user::{User, UserLoginMethod},
80};
81
82pub use mqtt::{
83    client::{MqttClient, MqttConnectionState, MqttEvent},
84};
85
86pub use services::{
87    auth_service::AuthService,
88    conversation_service::ConversationService,
89    friend_service::FriendService,
90    message_service::MessageService,
91    user_service::UserService,
92};
93pub use token_manager::TokenManager;