pub mod apollo_client; pub mod daily_summary_job; pub mod face_client; pub mod handlers; pub mod insight_chat; pub mod insight_generator; pub mod llm_client; pub mod ollama; pub mod openrouter; pub mod sms_client; // strip_summary_boilerplate is used by binaries (test_daily_summary), not the library #[allow(unused_imports)] pub use daily_summary_job::{ DAILY_SUMMARY_MESSAGE_LIMIT, DAILY_SUMMARY_SYSTEM_PROMPT, build_daily_summary_prompt, generate_daily_summaries, strip_summary_boilerplate, }; pub use handlers::{ chat_history_handler, chat_rewind_handler, chat_stream_handler, chat_turn_handler, delete_insight_handler, export_training_data_handler, generate_agentic_insight_handler, generate_insight_handler, get_all_insights_handler, get_available_models_handler, get_insight_handler, get_openrouter_models_handler, rate_insight_handler, }; pub use insight_generator::InsightGenerator; #[allow(unused_imports)] pub use llm_client::{ ChatMessage, LlmClient, ModelCapabilities, Tool, ToolCall, ToolCallFunction, ToolFunction, }; pub use ollama::{EMBEDDING_MODEL, OllamaClient}; pub use sms_client::{SmsApiClient, SmsMessage}; /// Display name used for the user in message transcripts and first-person /// prompt text. Reads the `USER_NAME` env var; defaults to `"Me"`. Models /// often confuse `"Me:"` in a transcript with their own role — setting /// `USER_NAME=Cameron` (or similar) in the environment eliminates that /// ambiguity across daily summaries, insight generation, and chat. pub fn user_display_name() -> String { std::env::var("USER_NAME").unwrap_or_else(|_| "Me".to_string()) }