1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//! # openheim
//!
//! A fast, multi-provider LLM agent runtime written in Rust.
//!
//! ## Quick start
//!
//! ```no_run
//! use openheim::{OpenheimClient, Result};
//!
//! #[tokio::main]
//! async fn main() -> Result<()> {
//! let client = OpenheimClient::builder()
//! .provider("openai")
//! .api_key("sk-...")
//! .model("gpt-4o")
//! .build()
//! .await?;
//!
//! let session = client.new_session().start().await?;
//! session.prompt("List the files in the current directory.", |_update| {}).await?;
//!
//! Ok(())
//! }
//! ```
//!
//! ## Providers
//!
//! | Provider | Value | Default model |
//! |------------|---------------|----------------------|
//! | OpenAI | `"openai"` | `gpt-4o` |
//! | Anthropic | `"anthropic"` | `claude-sonnet-4-6` |
//! | Google | `"gemini"` | `gemini-2.0-flash` |
//! | Compatible | any string | set via `.model()` |
//!
//! ## Configuration file
//!
//! By default openheim loads `~/.openheim/config.toml`. Use
//! [`OpenheimClient::from_config`] to load from a custom path, or set
//! individual fields via the builder for fully programmatic configuration.
//!
//! ## MCP servers
//!
//! External tools are registered as MCP servers and namespaced as
//! `{server_name}__{tool_name}`. They are automatically available in every
//! agent session.
//!
//! ## Key types
//!
//! - [`OpenheimClient`] / [`OpenheimBuilder`] — main entry point
//! - [`SessionHandle`] — send prompts and receive streaming [`SessionUpdate`] events
//! - [`LlmClient`] — implement to add a custom provider
//! - [`RagContext`] — conversation history and skill injection
//! - [`Error`] / [`Result`] — unified error type
// Core types
pub use ;
pub use ;
pub use ;
pub use ;
pub use *;
pub use ;
// Library facade
pub use ;
// ACP types re-exported so library users don't need a direct agent-client-protocol dependency
pub use ;