Class: Tidewave::ToolResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/tidewave/tool_resolver.rb

Constant Summary collapse

ALL_TOOLS =
Tidewave::Tools::Base.descendants
NON_FILE_SYSTEM_TOOLS =
ALL_TOOLS.reject(&:file_system_tool?)
MESSAGES_PATH =
"/tidewave/messages".freeze
TOOLS_LIST_METHOD =
"tools/list".freeze
INCLUDE_FS_TOOLS_PARAM =
"include_fs_tools".freeze

Instance Method Summary collapse

Constructor Details

#initialize(app, server) ⇒ ToolResolver

Returns a new instance of ToolResolver.



18
19
20
21
# File 'lib/tidewave/tool_resolver.rb', line 18

def initialize(app, server)
  @app = app
  @server = server
end

Instance Method Details

#call(env) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/tidewave/tool_resolver.rb', line 23

def call(env)
  request = Rack::Request.new(env)
  request_path = request.path
  request_body = extract_request_body(request)
  request_params = request.params

  # Override tools list response if requested
  return override_tools_list_response(env) if overriding_tools_list_request?(request_path, request_params, request_body)

  # Forward the request to the underlying app (RackTransport)
  @app.call(env)
end