use serde::Deserialize;
use crate::config::ConfigSection;
pub struct LlmAssistantConfigTag;
impl ConfigSection for LlmAssistantConfigTag {
const KEY: Option<&'static str> = Some("llm_assistant");
}
pub const DEFAULT_CHAT_MODEL: &str = "gemini-2.5-flash";
pub const CHAT_MAX_OUTPUT_TOKENS: i32 = 4096;
pub const ASSISTANT_TOOL_ROUNDS: i32 = 128;
pub const GOOGLE_SEARCH_RESULT_LIMIT_CAP: i32 = 20;
pub const WEBPAGE_TEXT_CHAR_LIMIT: usize = 50_000;
pub const EMAIL_MAX_ATTACHMENTS: usize = 10;
pub const EMAIL_MAX_ATTACHMENT_BYTES: usize = 10 * 1024 * 1024;
pub const EMAIL_MAX_TOTAL_ATTACHMENT_BYTES: usize = 25 * 1024 * 1024;
#[derive(Debug, Clone, Deserialize)]
pub struct LlmAssistantConfig {
#[serde(default = "default_chat_model", rename = "chatModel")]
pub chat_model: String,
}
fn default_chat_model() -> String {
DEFAULT_CHAT_MODEL.into()
}
impl Default for LlmAssistantConfig {
fn default() -> Self {
Self {
chat_model: default_chat_model(),
}
}
}