Module: ActionMCP::Server::ClientNotifications

Included in:
TransportHandler
Defined in:
lib/action_mcp/server/client_notifications.rb

Overview

Correlates client notifications with server session state. Applications can consume the resulting Rails notifications without ActionMCP keeping callback objects in a persistent session.

Instance Method Summary collapse

Instance Method Details

#receive_cancelled_notification(params) ⇒ Object



9
10
11
12
13
14
15
16
17
18
# File 'lib/action_mcp/server/client_notifications.rb', line 9

def receive_cancelled_notification(params)
  params = normalize_client_notification_params(params)
  request = if session.respond_to?(:cancel_in_flight_request)
              session.cancel_in_flight_request(params[:requestId])
  end
  return log_unmatched_client_notification("cancellation", params[:requestId]) unless request

  instrument_client_notification("request_cancelled", request, params)
  request
end

#receive_progress_notification(params) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/action_mcp/server/client_notifications.rb', line 20

def receive_progress_notification(params)
  params = normalize_client_notification_params(params)
  request = if session.respond_to?(:client_request_for_progress)
              session.client_request_for_progress(params[:progressToken])
  end
  return log_unmatched_client_notification("progress token", params[:progressToken]) unless request

  instrument_client_notification("request_progress", request, params)
  request
end

#receive_task_status_notification(params) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/action_mcp/server/client_notifications.rb', line 31

def receive_task_status_notification(params)
  params = normalize_client_notification_params(params)
  request = if session.respond_to?(:client_request_for_task)
              session.client_request_for_task(params[:taskId])
  end
  return log_unmatched_client_notification("task", params[:taskId]) unless request

  instrument_client_notification("task_status", request, params)
  request
end