@@ -174,6 +174,36 @@ def route(controller:, action:)
174174 nil
175175 end
176176
177+ # Delegates a notification to a server add-on
178+ sig { params ( server_addon_name : String , request_name : String , params : T . untyped ) . void }
179+ def delegate_notification ( server_addon_name :, request_name :, **params )
180+ send_notification (
181+ "server_addon/delegate" ,
182+ request_name : request_name ,
183+ server_addon_name : server_addon_name ,
184+ **params ,
185+ )
186+ end
187+
188+ # Delegates a request to a server add-on
189+ sig do
190+ params (
191+ server_addon_name : String ,
192+ request_name : String ,
193+ params : T . untyped ,
194+ ) . returns ( T . nilable ( T ::Hash [ Symbol , T . untyped ] ) )
195+ end
196+ def delegate_request ( server_addon_name :, request_name :, **params )
197+ make_request (
198+ "server_addon/delegate" ,
199+ server_addon_name : server_addon_name ,
200+ request_name : request_name ,
201+ **params ,
202+ )
203+ rescue IncompleteMessageError
204+ nil
205+ end
206+
177207 sig { void }
178208 def trigger_reload
179209 log_message ( "Reloading Rails application" )
@@ -205,24 +235,24 @@ def stopped?
205235 sig do
206236 params (
207237 request : String ,
208- params : T . nilable ( T :: Hash [ Symbol , T . untyped ] ) ,
238+ params : T . untyped ,
209239 ) . returns ( T . nilable ( T ::Hash [ Symbol , T . untyped ] ) )
210240 end
211- def make_request ( request , params = nil )
212- send_message ( request , params )
241+ def make_request ( request , ** params )
242+ send_message ( request , ** params )
213243 read_response
214244 end
215245
216246 # Notifications are like messages, but one-way, with no response sent back.
217- sig { params ( request : String , params : T . nilable ( T :: Hash [ Symbol , T . untyped ] ) ) . void }
218- def send_notification ( request , params = nil ) = send_message ( request , params )
247+ sig { params ( request : String , params : T . untyped ) . void }
248+ def send_notification ( request , ** params ) = send_message ( request , ** params )
219249
220250 private
221251
222- sig { overridable . params ( request : String , params : T . nilable ( T :: Hash [ Symbol , T . untyped ] ) ) . void }
223- def send_message ( request , params = nil )
252+ sig { overridable . params ( request : String , params : T . untyped ) . void }
253+ def send_message ( request , ** params )
224254 message = { method : request }
225- message [ :params ] = params if params
255+ message [ :params ] = params
226256 json = message . to_json
227257
228258 @mutex . synchronize do
@@ -303,8 +333,8 @@ def log_message(message, type: RubyLsp::Constant::MessageType::LOG)
303333 # no-op
304334 end
305335
306- sig { override . params ( request : String , params : T . nilable ( T :: Hash [ Symbol , T . untyped ] ) ) . void }
307- def send_message ( request , params = nil )
336+ sig { override . params ( request : String , params : T . untyped ) . void }
337+ def send_message ( request , ** params )
308338 # no-op
309339 end
310340
0 commit comments