Skip to main content

aimux_core/
lib.rs

1//! # aimux-core
2//!
3//! Core abstractions for the aimux toolkit.
4//!
5//! Architecture (aligned with Vercel AI SDK V4):
6//!
7//! ```text
8//!   User-facing API          Provider-facing trait
9//!   ──────────────           ─────────────────────
10//!   generate_text()  ──►     LanguageModel::do_generate()
11//!   stream_text()    ──►     LanguageModel::do_stream()
12//! ```
13//!
14//! The user calls `generate_text` / `stream_text` (free functions).
15//! These convert user messages into `LanguageModelPrompt`, build `CallOptions`,
16//! and call `LanguageModel::do_generate` / `do_stream` on the provider implementation.
17
18pub mod composite;
19pub mod content;
20pub mod embedding_model;
21pub mod error;
22pub mod files_model;
23pub mod generate;
24pub mod image_model;
25pub mod json_repair;
26pub mod language_model;
27pub mod language_model_message;
28pub mod math;
29pub mod message;
30pub mod moa;
31pub mod model_catalogue;
32pub mod model_id;
33pub mod openai_output;
34pub mod options;
35pub mod provider;
36pub mod recording;
37pub mod replay;
38pub mod reranking_model;
39pub mod result;
40pub mod router;
41pub mod search_model;
42pub mod session;
43pub mod shared;
44pub mod speech_model;
45pub mod stream_part;
46pub mod tool;
47pub mod trace;
48pub mod transcription_model;
49pub mod types;
50pub mod util;
51pub mod video_model;
52
53/// Convenience re-exports.
54pub mod prelude {
55    pub use crate::composite::ChildModel;
56    pub use crate::content::ContentPart;
57    pub use crate::embedding_model::{EmbeddingCallOptions, EmbeddingModel, EmbeddingResult};
58    pub use crate::error::{AiMuxError, ApiCallError};
59    pub use crate::files_model::{Files, UploadFileCallOptions, UploadFileResult};
60    pub use crate::generate::{
61        GenerateObjectResult, GenerateTextOptions, GenerateTextResult, StreamTextResult,
62        generate_object, generate_text, generate_text_as_openai, stream_text,
63        stream_text_as_openai,
64    };
65    pub use crate::image_model::{ImageCallOptions, ImageModel, ImageResult};
66    pub use crate::language_model::LanguageModel;
67    pub use crate::language_model_message::LanguageModelPrompt;
68    pub use crate::message::{MessageContent, ModelMessage, ModelPrompt, Role};
69    pub use crate::moa::{MoaConfig, MoaFailMode, MoaModel};
70    pub use crate::model_catalogue::{
71        CatalogueSource, Modality, ModelCapabilities, ModelCost, ModelLimits, ModelModalities,
72        ModelSpec, ModelType, ReasoningMode, ReasoningSpec, ReasoningVisibility, RuntimeModel,
73    };
74    pub use crate::model_id::ModelId;
75    pub use crate::openai_output::{
76        ChatCompletion, ChatCompletionChunk, ChatCompletionStream, DONE_FRAME, OpenAiStreamOptions,
77        encode_chunk_sse, to_chat_completion, to_chat_completion_stream,
78    };
79    pub use crate::options::{CallOptions, ResponseFormat, ToolChoice};
80    pub use crate::provider::Provider;
81    pub use crate::reranking_model::{RerankingCallOptions, RerankingModel, RerankingResult};
82    pub use crate::result::{GenerateResult, StreamResult};
83    pub use crate::router::{
84        FallbackPolicy, Router, RouterConfig, RouterModel, RuleRouter, WeightedRouter,
85    };
86    pub use crate::search_model::{
87        SearchCallOptions, SearchModel, SearchResponse, SearchResult, SearchResultItem,
88    };
89    pub use crate::session::{
90        SessionCall, SessionInferer, SessionSource, SessionStore, SessionView, init_session_infer,
91        init_session_store, list_sessions, session_calls,
92    };
93    pub use crate::shared::{
94        AbortSignal, AspectRatio, FileBytes, FileData, SharedHeaders, SharedProviderMetadata,
95        SharedProviderOptions, SharedProviderReference, Size,
96    };
97    pub use crate::speech_model::{SpeechCallOptions, SpeechModel, SpeechResult};
98    pub use crate::stream_part::StreamPart;
99    pub use crate::tool::{FunctionTool, ProviderTool, Tool, ToolCall, ToolResult};
100    pub use crate::transcription_model::{
101        TranscriptionCallOptions, TranscriptionModel, TranscriptionResult,
102    };
103    pub use crate::types::{FinishReason, FinishReasonUnified, ReasoningEffort, Usage, Warning};
104    pub use crate::video_model::{VideoCallOptions, VideoModel, VideoResult};
105}
106
107// Root-level re-exports for convenience.
108pub use embedding_model::EmbeddingModel;
109pub use error::{AiMuxError, ApiCallError};
110pub use files_model::Files;
111pub use image_model::ImageModel;
112pub use language_model::LanguageModel;
113pub use provider::Provider;
114pub use reranking_model::RerankingModel;
115pub use search_model::SearchModel;
116pub use speech_model::SpeechModel;
117pub use transcription_model::TranscriptionModel;
118pub use video_model::VideoModel;