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//!   embed()          ──►     EmbeddingModel::do_embed()
13//!   generate_image() ──►     ImageModel::do_generate()
14//!   ...              ──►     ...
15//! ```
16//!
17//! Users call the free operation functions; providers implement the `do_*`
18//! methods that perform one provider attempt.
19
20mod abort_signal;
21pub mod composite;
22pub mod content;
23pub mod embedding_model;
24pub mod error;
25pub mod files_model;
26pub mod generate;
27pub mod image_model;
28pub mod json_repair;
29pub mod language_model;
30pub mod language_model_message;
31pub mod math;
32pub mod message;
33pub mod moa;
34pub mod model_catalogue;
35pub mod model_id;
36pub mod openai_output;
37pub mod options;
38pub mod parse_tool_call;
39pub mod provider;
40pub mod recording;
41pub mod replay;
42pub mod reranking_model;
43pub(crate) mod response_messages;
44pub mod result;
45pub mod retry;
46pub mod router;
47pub mod search_model;
48pub mod session;
49pub mod shared;
50pub mod speech_model;
51pub mod stream_part;
52mod timeout;
53pub mod tool;
54pub mod trace;
55pub mod transcription_model;
56pub mod types;
57pub mod util;
58pub mod video_model;
59
60/// Convenience re-exports.
61pub mod prelude {
62    pub use crate::abort_signal::AbortSignal;
63    pub use crate::composite::ChildModel;
64    pub use crate::content::ContentPart;
65    pub use crate::embedding_model::{
66        EmbeddingCallOptions, EmbeddingModel, EmbeddingResult, embed,
67    };
68    pub use crate::error::{AiMuxError, ApiCallError};
69    pub use crate::files_model::{Files, UploadFileCallOptions, UploadFileResult};
70    pub use crate::generate::{
71        GenerateObjectResult, GenerateTextOptions, GenerateTextResult, StreamTextResult,
72        generate_object, generate_text, generate_text_as_openai,
73        generate_text_result_to_chat_completion, stream_text, stream_text_as_openai,
74    };
75    pub use crate::image_model::{ImageCallOptions, ImageModel, ImageResult, generate_image};
76    pub use crate::language_model::LanguageModel;
77    pub use crate::language_model_message::LanguageModelPrompt;
78    pub use crate::message::{MessageContent, ModelMessage, ModelPrompt, Role};
79    pub use crate::moa::{MoaConfig, MoaFailMode, MoaModel};
80    pub use crate::model_catalogue::{
81        CatalogueSource, Modality, ModelCapabilities, ModelCost, ModelLimits, ModelModalities,
82        ModelSpec, ModelType, ReasoningMode, ReasoningSpec, ReasoningVisibility, RuntimeModel,
83    };
84    pub use crate::model_id::ModelId;
85    pub use crate::openai_output::{
86        ChatCompletion, ChatCompletionChunk, ChatCompletionStream, DONE_FRAME, OpenAiStreamOptions,
87        encode_chunk_sse, to_chat_completion, to_chat_completion_stream,
88    };
89    pub use crate::options::{CallOptions, ResponseFormat, ToolChoice};
90    pub use crate::parse_tool_call::{
91        RawToolCall, ToolCallRepair, ToolCallRepairContext, ToolCallRepairReply,
92        apply_tool_call_repair, apply_tool_call_repair_to_result, tool_call_repair_context,
93        tool_call_repair_inputs,
94    };
95    pub use crate::provider::Provider;
96    pub use crate::reranking_model::{
97        RerankingCallOptions, RerankingModel, RerankingResult, rerank,
98    };
99    pub use crate::result::{GenerateResult, StreamResult};
100    pub use crate::router::{
101        FallbackPolicy, Router, RouterConfig, RouterModel, RuleRouter, WeightedRouter,
102    };
103    pub use crate::search_model::{
104        SearchCallOptions, SearchModel, SearchResponse, SearchResult, SearchResultItem, search,
105    };
106    pub use crate::session::{
107        SessionCall, SessionInferer, SessionSource, SessionStore, SessionView, init_session_infer,
108        init_session_store, list_sessions, session_calls,
109    };
110    pub use crate::shared::{
111        AspectRatio, FileBytes, FileData, SharedHeaders, SharedProviderMetadata,
112        SharedProviderOptions, SharedProviderReference, Size,
113    };
114    pub use crate::speech_model::{SpeechCallOptions, SpeechModel, SpeechResult, generate_speech};
115    pub use crate::stream_part::StreamPart;
116    pub use crate::tool::{FunctionTool, ProviderTool, Tool, ToolCall, ToolResult};
117    pub use crate::transcription_model::{
118        AudioChunk, InputAudioFormat, TranscriptionCallOptions, TranscriptionModel,
119        TranscriptionResult, TranscriptionStreamOptions, TranscriptionStreamPart,
120        TranscriptionStreamResult, stream_transcribe, transcribe,
121    };
122    pub use crate::types::{FinishReason, FinishReasonUnified, ReasoningEffort, Usage, Warning};
123    pub use crate::video_model::{
124        VideoCallOptions, VideoModel, VideoOperationStart, VideoOperationStatus, VideoPollConfig,
125        VideoPollOptions, VideoResult, generate_video,
126    };
127}
128
129// Root-level re-exports for convenience.
130pub use abort_signal::AbortSignal;
131pub use embedding_model::EmbeddingModel;
132pub use error::{AiMuxError, ApiCallError, RetryError, RetryErrorReason};
133pub use files_model::Files;
134pub use image_model::ImageModel;
135pub use language_model::LanguageModel;
136pub use provider::Provider;
137pub use reranking_model::RerankingModel;
138pub use search_model::SearchModel;
139pub use speech_model::SpeechModel;
140pub use transcription_model::TranscriptionModel;
141pub use video_model::VideoModel;