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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//! Harness module - provides pre-configured model providers for easy router creation.
//!
//! This module provides zero-sized unit structs for various models, each with
//! methods to create providers with different quantizations. Use these with
//! [`crate::types::ProviderRouter`] to create pre-configured routers.
//!
//! # Examples
//!
//! The easiest path — a fully-wired agent builder for a model combination,
//! given a session id:
//!
//! ```ignore
//! use foundation_ai::harness;
//!
//! // GLM 5.2 for chat + a small Gemma 4 for memory, ready to customise.
//! let agent = harness::glm52_gemma_session::<MyDocStore, MyMemStore>(
//! session_id, None, None,
//! )?
//! .with_system_prompt("You are a helpful assistant.")
//! .build()?;
//! ```
//!
//! Or take the router preset and mix/inspect it yourself:
//!
//! ```ignore
//! use foundation_ai::harness::{self, RouterMix, providers::Glm52, providers::Gemma4E2b};
//! use foundation_ai::types::ModelId;
//!
//! // A ready-made mix...
//! let preset = harness::claude_router(api_key)?;
//! let builder = preset.into_agent_builder::<MyDocStore, MyMemStore>(session_id);
//!
//! // ...or a fully custom mix:
//! let preset = RouterMix::new()
//! .primary(Glm52::q4_k_m(None)?, ModelId::Name(Glm52::MODEL_ID.into(), None))
//! .memory(Gemma4E2b::q4_k_m(None)?, ModelId::Name(Gemma4E2b::MODEL_ID.into(), None))
//! .build();
//! ```
//!
//! Low-level: build a single-provider router by hand:
//!
//! ```ignore
//! use foundation_ai::harness::CloudPresets;
//! use foundation_ai::types::{ProviderRouter, RoutableProviderBox};
//!
//! let provider = CloudPresets::claude_sonnet(api_key)?;
//! let routable = RoutableProviderBox::new(provider);
//! let router = ProviderRouter::single(Box::new(routable));
//! ```
pub use ;
pub use ;
pub use ToolPreset;
pub use ;
pub use ;