@@ -49,43 +49,7 @@ function M.get_all_servers()
4949 return {}
5050 end
5151
52- local servers = hub :get_servers ()
53-
54- local formatted_servers = {}
55- for _ , server in ipairs (servers ) do
56- table.insert (formatted_servers , {
57- name = server .name ,
58- displayName = server .displayName ,
59- description = server .description ,
60- status = server .status ,
61- capabilities = {
62- tools = vim .tbl_map (function (t )
63- return {
64- name = t .name ,
65- description = t .description ,
66- inputSchema = t .inputSchema ,
67- }
68- end , server .capabilities .tools or {}),
69- resources = vim .tbl_map (function (r )
70- return {
71- uri = r .uri ,
72- name = r .name ,
73- description = r .description ,
74- mimeType = r .mimeType ,
75- }
76- end , server .capabilities .resources or {}),
77- prompts = vim .tbl_map (function (p )
78- return {
79- name = p .name ,
80- description = p .description ,
81- arguments = p .arguments ,
82- }
83- end , server .capabilities .prompts or {}),
84- },
85- })
86- end
87-
88- return formatted_servers
52+ return hub :get_servers ()
8953end
9054
9155--- Send result back to proxy.js via notification
@@ -134,20 +98,23 @@ function M.call_tool(request_id, server_name, tool_name, params)
13498 return
13599 end
136100
137- local result , err = hub :call_tool (server_name , tool_name , arguments , {
101+ -- Use callback to avoid blocking vim.wait() in NativeServer:call_tool
102+ -- This allows interactive tools like edit_file to work properly
103+ hub :call_tool (server_name , tool_name , arguments , {
138104 parse_response = false ,
139105 caller = vim .tbl_extend (" force" , caller , { auto_approve = approval .approve }),
106+ callback = function (result , err )
107+ if err then
108+ send_result (request_id , { error = err })
109+ elseif result and result .result then
110+ send_result (request_id , result .result )
111+ elseif result then
112+ send_result (request_id , result )
113+ else
114+ send_result (request_id , { error = " No result returned from hub" })
115+ end
116+ end ,
140117 })
141-
142- if err then
143- send_result (request_id , { error = err })
144- elseif result and result .result then
145- send_result (request_id , result .result )
146- elseif result then
147- send_result (request_id , result )
148- else
149- send_result (request_id , { error = " No result returned from hub" })
150- end
151118 end )
152119end
153120
@@ -189,20 +156,22 @@ function M.access_resource(request_id, server_name, uri, params)
189156 return
190157 end
191158
192- local result , err = hub :access_resource (server_name , uri , {
159+ -- Use callback to avoid blocking vim.wait() in NativeServer:access_resource
160+ hub :access_resource (server_name , uri , {
193161 parse_response = false ,
194162 caller = vim .tbl_extend (" force" , caller , { auto_approve = approval .approve }),
163+ callback = function (result , err )
164+ if err then
165+ send_result (request_id , { error = err })
166+ elseif result and result .result then
167+ send_result (request_id , result .result )
168+ elseif result then
169+ send_result (request_id , result )
170+ else
171+ send_result (request_id , { error = " No result returned from hub" })
172+ end
173+ end ,
195174 })
196-
197- if err then
198- send_result (request_id , { error = err })
199- elseif result and result .result then
200- send_result (request_id , result .result )
201- elseif result then
202- send_result (request_id , result )
203- else
204- send_result (request_id , { error = " No result returned from hub" })
205- end
206175 end )
207176end
208177
0 commit comments