Skip to content

Commit 62687fd

Browse files
committed
get config from server, store in state and display in sidebar
1 parent d80301e commit 62687fd

File tree

5 files changed

+388
-113
lines changed

5 files changed

+388
-113
lines changed

lua/eca/init.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,9 @@ function M.setup(opts)
242242
H.signs()
243243

244244
-- Initialize the ECA server with callbacks
245+
M.state = require("eca.state").new()
245246
M.server = Server.new()
246-
M.mediator = require("eca.mediator").new(M.server)
247+
M.mediator = require("eca.mediator").new(M.server, M.state)
247248
-- Start server automatically in background
248249
vim.defer_fn(function()
249250
M.server:start()

lua/eca/mediator.lua

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
---@class eca.Mediator
22
---@field server eca.Server
3+
---@field state eca.State
34
local mediator = {}
45

56
---@param server eca.Server
7+
---@param state eca.State
68
---@return eca.Mediator
7-
function mediator.new(server)
9+
function mediator.new(server, state)
810
return setmetatable({
911
server = server,
12+
state = state,
1013
}, { __index = mediator })
1114
end
1215

@@ -23,4 +26,44 @@ function mediator:send(method, params, callback)
2326
self.server:send_request(method, params, callback)
2427
end
2528

29+
function mediator:selected_behavior()
30+
return self.state.config.behaviors.selected
31+
end
32+
33+
function mediator:selected_model()
34+
return self.state.config.models.selected
35+
end
36+
37+
function mediator:tokens_session()
38+
return self.state.usage.tokens.session
39+
end
40+
41+
function mediator:tokens_limit()
42+
return self.state.usage.tokens.limit
43+
end
44+
45+
function mediator:costs_session()
46+
return self.state.usage.costs.session
47+
end
48+
49+
function mediator:status_state()
50+
return self.state.status.state
51+
end
52+
53+
function mediator:status_text()
54+
return self.state.status.text
55+
end
56+
57+
function mediator:mcps()
58+
local mcps = {}
59+
60+
for _, tool in pairs(self.state.tools) do
61+
if tool.type == "mcp" then
62+
table.insert(mcps, tool)
63+
end
64+
end
65+
66+
return mcps
67+
end
68+
2669
return mediator

lua/eca/observer.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
local observer = {}
22

3-
---@type { [integer]: fun(message: table) }
3+
---@type { [string]: fun(message: table) }
44
local subscriptions = {}
55

6-
---@param id integer
6+
---@param id string
77
---@param on_update fun(message: table)
88
function observer.subscribe(id, on_update)
99
subscriptions[id] = on_update

0 commit comments

Comments
 (0)