@@ -8,6 +8,7 @@ local Split = require("nui.split")
88--- @class eca.Sidebar
99--- @field public id integer The tab ID
1010--- @field public containers table<string , NuiSplit> The nui containers
11+ --- @field mediator eca.Mediator mediator to send server requests to
1112--- @field private _initialized boolean Whether the sidebar has been initialized
1213--- @field private _current_response_buffer string Buffer for accumulating streaming response
1314--- @field private _is_streaming boolean Whether we ' re currently receiving a streaming response
@@ -34,10 +35,12 @@ local UI_ELEMENTS_HEIGHT = 2 -- Reserve space for statusline and tabline
3435local SAFETY_MARGIN = 2 -- Extra margin to prevent "Not enough room" errors
3536
3637--- @param id integer Tab ID
38+ --- @param mediator eca.Mediator
3739--- @return eca.Sidebar
38- function M .new (id )
40+ function M .new (id , mediator )
3941 local instance = setmetatable ({}, M )
4042 instance .id = id
43+ instance .mediator = mediator
4144 instance .containers = {}
4245 instance ._initialized = false
4346 instance ._current_response_buffer = " "
@@ -1158,30 +1161,24 @@ function M:_send_message(message)
11581161 -- Store the last user message to avoid duplication
11591162 self ._last_user_message = message
11601163
1161- -- Send message to ECA server
1162- local eca = require (" eca" )
1163- if eca .server and eca .server :is_running () then
1164- -- Include active contexts in the message
1165- local contexts = self :get_contexts ()
1166- eca .server :send_request (" chat/prompt" , {
1167- chatId = self .id ,
1168- requestId = tostring (os.time ()),
1169- message = message ,
1170- contexts = contexts or {},
1171- }, function (err , result )
1172- if err then
1173- Logger .error (" Failed to send message to ECA server: " .. tostring (err ))
1174- self :_add_message (" assistant" , " ❌ **Error**: Failed to send message to ECA server" )
1175- end
1176- -- Response will come through server notification handler
1177- self :_add_input_line ()
1178-
1179- self :handle_chat_content_received (result .params )
1180- end )
1181- else
1182- self :_add_message (" assistant" , " ❌ **Error**: ECA server is not running. Please check server status." )
1164+ local contexts = self :get_contexts ()
1165+ self .mediator :send (" chat/prompt" , {
1166+ chatId = self .id ,
1167+ requestId = tostring (os.time ()),
1168+ message = message ,
1169+ contexts = contexts or {},
1170+ }, function (err , result )
1171+ if err then
1172+ print (" err is " .. err )
1173+ Logger .error (" Failed to send message to ECA server: " .. err )
1174+ self :_add_message (" assistant" , " ❌ **Error**: Failed to send message to ECA server: " .. err )
1175+ return
1176+ end
1177+ -- Response will come through server notification handler
11831178 self :_add_input_line ()
1184- end
1179+
1180+ self :handle_chat_content_received (result .params )
1181+ end )
11851182end
11861183
11871184function M :handle_chat_content (message )
0 commit comments