1mod api;
30mod auth;
31#[cfg(feature = "bot")]
32pub mod bot;
33pub mod events;
34pub mod loaders;
35pub mod store;
36pub mod tools;
37pub mod vector_store;
38
39pub use events::listener::LarkEventListener;
40pub use loaders::bitable::LarkBitableLoader;
41pub use loaders::doc::LarkDocLoader;
42pub use loaders::drive::LarkDriveLoader;
43pub use loaders::spreadsheet::LarkSpreadsheetLoader;
44pub use loaders::wiki::LarkWikiLoader;
45pub use store::cache::LarkBitableLlmCache;
46pub use store::checkpointer::LarkBitableCheckpointer;
47pub use store::memory::LarkBitableMemoryStore;
48pub use tools::asr::LarkAsrTool;
49pub use tools::bitable::LarkBitableTool;
50pub use tools::calendar::LarkCalendarTool;
51pub use tools::chat::LarkChatTool;
52pub use tools::contact::LarkContactTool;
53pub use tools::doc_process::LarkDocProcessTool;
54pub use tools::message::LarkMessageTool;
55pub use tools::ocr::LarkOcrTool;
56pub use tools::spreadsheet::LarkSpreadsheetTool;
57pub use tools::task::LarkTaskTool;
58pub use tools::translate::LarkTranslateTool;
59pub use vector_store::LarkVectorStore;
60
61#[cfg(feature = "bot")]
62pub use bot::{LarkBotClient, LarkLongConnListener, LarkMessageEvent};
63
64pub use synaptic_core::{Loader, Tool};
66
67use std::sync::Arc;
68
69#[derive(Debug, Clone)]
73pub struct LarkConfig {
74 pub app_id: String,
76 pub app_secret: String,
78 pub base_url: String,
81}
82
83impl LarkConfig {
84 pub fn new(app_id: impl Into<String>, app_secret: impl Into<String>) -> Self {
86 Self {
87 app_id: app_id.into(),
88 app_secret: app_secret.into(),
89 base_url: "https://open.feishu.cn/open-apis".to_string(),
90 }
91 }
92
93 pub fn with_base_url(mut self, url: impl Into<String>) -> Self {
95 self.base_url = url.into();
96 self
97 }
98
99 pub(crate) fn token_cache(self) -> auth::TokenCache {
101 auth::TokenCache::new(Arc::new(self))
102 }
103}