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::{
63 LarkBotClient, LarkLongConnListener, LarkMessageEvent, StreamingCardOptions,
64 StreamingCardWriter,
65};
66
67pub use synaptic_core::{Loader, Tool};
69
70use std::sync::Arc;
71
72#[derive(Debug, Clone)]
76pub struct LarkConfig {
77 pub app_id: String,
79 pub app_secret: String,
81 pub base_url: String,
84}
85
86impl LarkConfig {
87 pub fn new(app_id: impl Into<String>, app_secret: impl Into<String>) -> Self {
89 Self {
90 app_id: app_id.into(),
91 app_secret: app_secret.into(),
92 base_url: "https://open.feishu.cn/open-apis".to_string(),
93 }
94 }
95
96 pub fn with_base_url(mut self, url: impl Into<String>) -> Self {
98 self.base_url = url.into();
99 self
100 }
101
102 pub(crate) fn token_cache(self) -> auth::TokenCache {
104 auth::TokenCache::new(Arc::new(self))
105 }
106}