-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathmediator.lua
More file actions
89 lines (71 loc) · 1.96 KB
/
Copy pathmediator.lua
File metadata and controls
89 lines (71 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
---@class eca.Mediator
---@field server eca.Server
---@field state eca.State
local mediator = {}
---@param server eca.Server
---@param state eca.State
---@return eca.Mediator
function mediator.new(server, state)
return setmetatable({
server = server,
state = state,
}, { __index = mediator })
end
---@param method string
---@param params eca.MessageParams
---@param callback? fun(err?: string, result?: table)
function mediator:send(method, params, callback)
if not self.server:is_running() then
if callback then
callback("Server is not running, please start the server", nil)
end
require("eca.logger").notify("Server is not rnning, please start the server", vim.log.levels.WARN)
end
self.server:send_request(method, params, callback)
end
function mediator:behaviors()
return self.state.config.behaviors.list
end
function mediator:selected_behavior()
return self.state.config.behaviors.selected
end
function mediator:update_selected_behavior(behavior)
self.state:update_selected_behavior(behavior)
end
function mediator:models()
return self.state.config.models.list
end
function mediator:selected_model()
return self.state.config.models.selected
end
function mediator:update_selected_model(model)
self.state:update_selected_model(model)
end
function mediator:tokens_session()
return self.state.usage.tokens.session
end
function mediator:tokens_limit()
return self.state.usage.tokens.limit
end
function mediator:costs_session()
return self.state.usage.costs.session
end
function mediator:status_state()
return self.state.status.state
end
function mediator:status_text()
return self.state.status.text
end
function mediator:welcome_message()
return (self.state and self.state.config and self.state.config.welcome_message) or nil
end
function mediator:mcps()
local mcps = {}
for _, tool in pairs(self.state.tools) do
if tool.type == "mcp" then
table.insert(mcps, tool)
end
end
return mcps
end
return mediator