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;