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, CancellationMode, Context, ContinuationMode, PersistentSessionMode, Provider,
28    RequestOptions, ResumabilityMode, ThinkingLevel, ToolDefinition, TransportCapabilities,
29};
30pub use stream::{ProviderError, StreamEvent};
31pub use text::{prefix_chars, truncate_chars, truncate_chars_with_suffix};
32pub use usage::{Cost, Usage};
33
34/// Current unix timestamp in seconds.
35pub fn now() -> u64 {
36    std::time::SystemTime::now()
37        .duration_since(std::time::UNIX_EPOCH)
38        .unwrap_or_default()
39        .as_secs()
40}