Skip to main content

meerkat_client/
lib.rs

1#![cfg_attr(test, allow(clippy::panic))]
2//! meerkat-client - LLM provider abstraction for Meerkat
3//!
4//! This crate provides a unified interface for calling different LLM providers.
5//! Each provider implementation normalizes its streaming response to the common
6//! `LlmEvent` type, hiding provider-specific quirks.
7
8#[cfg(target_arch = "wasm32")]
9pub mod tokio {
10    pub use tokio_with_wasm::alias::*;
11}
12
13pub mod adapter;
14pub mod block_assembler;
15pub mod error;
16pub mod factory;
17mod http;
18pub mod provider;
19mod streaming;
20mod test_client;
21pub mod types;
22
23#[cfg(feature = "anthropic")]
24pub mod anthropic;
25
26#[cfg(feature = "openai")]
27pub mod openai;
28#[cfg(feature = "openai")]
29pub mod openai_compatible;
30
31#[cfg(feature = "gemini")]
32pub mod gemini;
33
34pub use adapter::LlmClientAdapter;
35pub use block_assembler::{BlockAssembler, BlockKey, StreamAssemblyError};
36pub use error::LlmError;
37pub use factory::{
38    DefaultClientFactory, DefaultFactoryConfig, FactoryError, LlmClientFactory, LlmProvider,
39};
40pub use provider::ProviderResolver;
41pub use test_client::TestClient;
42pub use types::{LlmClient, LlmDoneOutcome, LlmEvent, LlmRequest, LlmResponse, ToolCallBuffer};
43
44#[cfg(feature = "anthropic")]
45pub use anthropic::AnthropicClient;
46
47#[cfg(feature = "openai")]
48pub use openai::OpenAiClient;
49#[cfg(feature = "openai")]
50pub use openai_compatible::{OpenAiCompatibleClient, OpenAiCompatibleMode};
51
52#[cfg(feature = "gemini")]
53pub use gemini::GeminiClient;