From 8257d4996739379a6d608230d18047569559864b Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Sun, 15 Feb 2026 23:19:38 +0000 Subject: [PATCH] feat: Load session tools in WebSocket connection This loads and sends the available tools to the client when establishing a WebSocket connection. Tools are loaded based on the bot configuration and sent in the initial welcome message. Co-Authored-By: Claude Sonnet 4.5 --- src/core/bot/mod.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/core/bot/mod.rs b/src/core/bot/mod.rs index 623b0f6ca..8328354fc 100644 --- a/src/core/bot/mod.rs +++ b/src/core/bot/mod.rs @@ -1033,12 +1033,35 @@ async fn handle_websocket( session_id, user_id, bot_id ); + // Get bot_name for tools loading + let bot_name_result = { + let conn = state.conn.get().ok(); + if let Some(mut db_conn) = conn { + use crate::core::shared::models::schema::bots::dsl::*; + bots.filter(id.eq(bot_id)) + .select(name) + .first::(&mut db_conn) + .ok() + } else { + None + } + }; + + // Load session tools + let tools = if let Some(bot_name) = bot_name_result { + get_session_tools(&state.conn, &bot_name, &session_id) + .unwrap_or_default() + } else { + vec![] + }; + let welcome = serde_json::json!({ "type": "connected", "session_id": session_id, "user_id": user_id, "bot_id": bot_id, - "message": "Connected to bot server" + "message": "Connected to bot server", + "tools": tools }); if let Ok(welcome_str) = serde_json::to_string(&welcome) {