Skip to main content

imp_llm/
lib.rs

1//! Standalone multi-provider LLM streaming client.
2//!
3//! Core data types for messages, models, usage tracking, and provider traits.
4//! No I/O happens in this module — it defines the shared vocabulary used by
5//! provider implementations and the agent runtime.
6
7pub mod auth;
8pub mod error;
9pub mod message;
10pub mod model;
11pub mod oauth;
12pub mod provider;
13pub mod providers;
14pub mod stream;
15pub mod text;
16pub mod usage;
17
18pub use error::{Error, Result};
19pub use message::{
20    AssistantMessage, ContentBlock, Message, StopReason, ToolResultMessage, UserMessage,
21};
22pub use model::{
23    ApiStyle, Capabilities, Model, ModelMeta, ModelPricing, ModelRegistry, ProviderMeta,
24    ProviderRegistry,
25};
26pub use provider::{
27    CacheOptions, Context, Provider, RequestOptions, ThinkingLevel, ToolDefinition,
28};
29pub use stream::{ProviderError, StreamEvent};
30pub use text::{prefix_chars, truncate_chars, truncate_chars_with_suffix};
31pub use usage::{Cost, Usage};
32
33/// Current unix timestamp in seconds.
34pub fn now() -> u64 {
35    std::time::SystemTime::now()
36        .duration_since(std::time::UNIX_EPOCH)
37        .unwrap_or_default()
38        .as_secs()
39}