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
//! Middleware system for composable language model behavior customization.
//!
//! This module provides a flexible middleware architecture that allows you to
//! customize and extend language model behavior without modifying the underlying
//! model implementation. Middlewares are composable and can be layered to add
//! multiple behaviors.
//!
//! ## Middleware Capabilities
//!
//! Middlewares can:
//! - Transform or validate parameters before model calls
//! - Wrap and intercept generate and stream operations
//! - Override or extend model metadata
//! - Implement cross-cutting concerns (logging, metrics, caching, etc.)
//!
//! ## Composition Pattern
//!
//! Middlewares compose in an "onion" pattern where:
//! - Input transformations are applied from first to last middleware
//! - Output wrapping is applied from last to first middleware
//! - This ensures proper ordering of effects for both transformation and decoration
//!
//! ## Example
//!
//! ```no_run
//! use ai_sdk_core::middleware::{wrap_language_model, DefaultSettingsMiddleware};
//! use ai_sdk_provider::language_model::CallOptions;
//!
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! # let model = todo!();
//! let wrapped = wrap_language_model(
//! model,
//! vec![
//! Box::new(DefaultSettingsMiddleware::new(CallOptions {
//! temperature: Some(0.7),
//! ..Default::default()
//! })),
//! ],
//! );
//! # Ok(())
//! # }
//! ```
pub use DefaultSettingsMiddleware;
pub use ;
pub use SimulateStreamingMiddleware;
pub use wrap_language_model;