nxtgauge-ai-assistant/src/state.rs
Tracewebstudio Dev 7d31d1a2bd feat: add LiteLLM provider and cover letter generation
- Add LiteLLM provider implementing AiProvider trait
- Support both Ollama and LiteLLM via LLM_PROVIDER env var
- Add cover letter generation endpoint
- Improve chat orchestrator with better intent detection
- Add search_kb, explain_plan_limits, check_ai_pack_balance intents
- Add LiteLLM config env vars
2026-06-14 18:00:33 +02:00

60 lines
1.7 KiB
Rust

use std::sync::Arc;
use crate::{
chat::orchestrator::ChatOrchestrator,
config::AppConfig,
cover_letter::service::CoverLetterService,
db::Database,
forms::service::FormService,
jobs::service::JobsService,
providers::{
help_center::help_center_provider::HelpCenterProvider, llm::ai_provider::AiProvider,
tickets::ticket_provider::TicketProvider,
},
tickets::service::TicketService,
};
#[derive(Clone)]
pub struct AppState {
pub config: AppConfig,
pub db: Database,
pub chat_orchestrator: ChatOrchestrator,
pub jobs_service: JobsService,
pub form_service: FormService,
pub cover_letter_service: CoverLetterService,
pub ticket_service: TicketService,
pub help_center: Arc<dyn HelpCenterProvider>,
}
impl AppState {
pub fn new(
config: AppConfig,
db: Database,
ai_provider: Arc<dyn AiProvider>,
help_center: Arc<dyn HelpCenterProvider>,
ticket_provider: Arc<dyn TicketProvider>,
) -> Self {
let jobs_service = JobsService::new(ai_provider.clone());
let form_service = FormService::new(ai_provider.clone());
let cover_letter_service = CoverLetterService::new(ai_provider.clone());
let ticket_service = TicketService::new(ticket_provider, db.clone());
let chat_orchestrator = ChatOrchestrator::new(
jobs_service.clone(),
form_service.clone(),
help_center.clone(),
ticket_service.clone(),
ai_provider.clone(),
);
Self {
config,
db,
chat_orchestrator,
jobs_service,
form_service,
cover_letter_service,
ticket_service,
help_center,
}
}
}