- Simplified token type assignment in OAuth service. - Removed unused session_lock module and re-exported Session from zesdex_entities. - Cleaned up session entity by removing unnecessary comments and code. - Consolidated session handling in HTTP handlers for better readability. - Improved formatting and readability in OAuth repository tests. - Enhanced session lock repository with clearer match statements. - Streamlined session repository error handling. - Refined RNG tests for better clarity. - Adjusted module visibility and organization in lib.rs. - Updated IPC client and connection code for better error handling and clarity. - Improved frame handling in IPC for better readability. - Organized module imports and added test utilities for IPC. - Enhanced database connection error handling. - Simplified JWT token creation error handling. - Improved password verification error handling. - Cleaned up state management code for better readability. - Refactored middleware for session authentication and rate limiting. - Simplified clipboard utility for better error handling. - Enhanced logging initialization for better error reporting. - Improved pagination utility with clearer method annotations. - Cleaned up sanitization functions for filenames and paths. - Enhanced slug generation functions for better clarity and usability.
95 lines
3.2 KiB
Rust
95 lines
3.2 KiB
Rust
#![allow(dead_code)]
|
|
//! Single source of truth for resolving the active model's context
|
|
//! window size, replacing three copies of the same lookup that had
|
|
//! drifted (`Action::Compact`, `spawn_turn`, and `view/status.rs` each
|
|
//! had their own inline version — the status bar's copy additionally
|
|
//! displayed "?" on no match instead of falling back like the other two,
|
|
//! an inconsistency this unifies away).
|
|
use zesdex_cms::domain::app_config::AppConfig;
|
|
use zesdex_cms::domain::settings::Settings;
|
|
|
|
/// Resolve the context-window size (in tokens) for the currently
|
|
/// configured provider/model.
|
|
///
|
|
/// Flow: find the `ModelRole` whose `provider`+`model` match
|
|
/// `settings` -> use its `context_window` if set -> otherwise fall back
|
|
/// to `app_config.default_context_window`.
|
|
///
|
|
/// Return: always a concrete token count, never "unknown".
|
|
pub fn resolve(app_config: &AppConfig, settings: &Settings) -> usize {
|
|
app_config
|
|
.model_roles
|
|
.values()
|
|
.find(|role| role.provider == settings.provider && role.model == settings.model)
|
|
.and_then(|role| role.context_window)
|
|
.unwrap_or(app_config.default_context_window) as usize
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
use zesdex_cms::domain::app_config::ModelRole;
|
|
|
|
#[test]
|
|
fn resolves_context_window_from_matching_model_role() {
|
|
let mut app_config = AppConfig::default();
|
|
app_config.model_roles.insert(
|
|
"default".to_string(),
|
|
ModelRole {
|
|
provider: "zen".to_string(),
|
|
model: "deepseek-v4-flash-free".to_string(),
|
|
max_tokens: None,
|
|
context_window: Some(128_000),
|
|
temperature: None,
|
|
},
|
|
);
|
|
let settings = Settings {
|
|
provider: "zen".to_string(),
|
|
model: "deepseek-v4-flash-free".to_string(),
|
|
..Default::default()
|
|
};
|
|
|
|
assert_eq!(resolve(&app_config, &settings), 128_000);
|
|
}
|
|
|
|
#[test]
|
|
fn falls_back_to_default_context_window_when_no_role_matches() {
|
|
let app_config = AppConfig::default();
|
|
let settings = Settings {
|
|
provider: "nonexistent".to_string(),
|
|
model: "nonexistent-model".to_string(),
|
|
..Default::default()
|
|
};
|
|
|
|
assert_eq!(
|
|
resolve(&app_config, &settings),
|
|
app_config.default_context_window as usize
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn falls_back_to_default_when_matching_role_has_no_context_window_set() {
|
|
let mut app_config = AppConfig::default();
|
|
app_config.model_roles.insert(
|
|
"default".to_string(),
|
|
ModelRole {
|
|
provider: "zen".to_string(),
|
|
model: "deepseek-v4-flash-free".to_string(),
|
|
max_tokens: None,
|
|
context_window: None,
|
|
temperature: None,
|
|
},
|
|
);
|
|
let settings = Settings {
|
|
provider: "zen".to_string(),
|
|
model: "deepseek-v4-flash-free".to_string(),
|
|
..Default::default()
|
|
};
|
|
|
|
assert_eq!(
|
|
resolve(&app_config, &settings),
|
|
app_config.default_context_window as usize
|
|
);
|
|
}
|
|
}
|