Lyra Agent hinzugefügt, Multi-Agent Routing, BaseAgent refactoring
This commit is contained in:
@@ -16,6 +16,7 @@ use tokio::spawn;
|
||||
use tracing::{error, info, warn};
|
||||
|
||||
use sebas_tian::Sebas;
|
||||
use lyra::Lyra;
|
||||
use crate::chat::types::{AgentChatConfig, AuthResult};
|
||||
|
||||
// ─── Synology Form-Payload ────────────────────────────────────────────────────
|
||||
@@ -65,6 +66,8 @@ pub struct AppState {
|
||||
pub http: Client,
|
||||
/// Sebas Tian — Mutex weil chat() &mut self braucht
|
||||
pub sebas: Mutex<Sebas>,
|
||||
/// Lyra — Companion Agent, eigenes Modell
|
||||
pub lyra: Mutex<Lyra>,
|
||||
}
|
||||
|
||||
// ─── Handler ──────────────────────────────────────────────────────────────────
|
||||
@@ -151,7 +154,6 @@ async fn process(state: Arc<AppState>, payload: SynologyIncoming, agent: AgentCh
|
||||
// 2. Richtigen Agent aufrufen anhand agent_id
|
||||
let response = match agent.agent_id.as_str() {
|
||||
"sebas_tian" => {
|
||||
// Mutex lock — exklusiver Zugriff auf Sebas
|
||||
let mut sebas = state.sebas.lock().await;
|
||||
match sebas.chat(&payload.text).await {
|
||||
Ok(text) => text,
|
||||
@@ -161,8 +163,17 @@ async fn process(state: Arc<AppState>, payload: SynologyIncoming, agent: AgentCh
|
||||
}
|
||||
}
|
||||
}
|
||||
"lyra" => {
|
||||
let mut lyra = state.lyra.lock().await;
|
||||
match lyra.chat(&payload.text).await {
|
||||
Ok(text) => text,
|
||||
Err(e) => {
|
||||
error!(error = %e, "Lyra Fehler");
|
||||
"Entschuldigung, es ist ein interner Fehler aufgetreten.".to_string()
|
||||
}
|
||||
}
|
||||
}
|
||||
unknown => {
|
||||
// Später: weitere Agenten hier einhängen
|
||||
warn!(agent_id = %unknown, "Unbekannter Agent");
|
||||
"Dieser Agent ist noch nicht verfügbar.".to_string()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user