Class: RubyLLM::MCP::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_llm/mcp/result.rb

Constant Summary collapse

REQUEST_METHODS =
{
  ping: "ping",
  roots: "roots/list",
  sampling: "sampling/createMessage",
  elicitation: "elicitation/create"
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response, session_id: nil) ⇒ Result

Returns a new instance of Result.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ruby_llm/mcp/result.rb', line 24

def initialize(response, session_id: nil)
  @response = response
  @session_id = session_id
  @id = response["id"]
  @method = response["method"]
  @result = response["result"] || {}
  @params = response["params"] || {}
  @error = response["error"] || {}

  @result_is_error = response.dig("result", "isError") || false
  @next_cursor = response.dig("result", "nextCursor")

  # Track whether result/error keys exist (for JSON-RPC detection)
  @has_result = response.key?("result")
  @has_error = response.key?("error")
end

Instance Attribute Details

#errorObject (readonly)

Returns the value of attribute error.



15
16
17
# File 'lib/ruby_llm/mcp/result.rb', line 15

def error
  @error
end

#idObject (readonly)

Returns the value of attribute id.



15
16
17
# File 'lib/ruby_llm/mcp/result.rb', line 15

def id
  @id
end

#methodObject (readonly)

Returns the value of attribute method.



15
16
17
# File 'lib/ruby_llm/mcp/result.rb', line 15

def method
  @method
end

#next_cursorObject (readonly)

Returns the value of attribute next_cursor.



15
16
17
# File 'lib/ruby_llm/mcp/result.rb', line 15

def next_cursor
  @next_cursor
end

#paramsObject (readonly)

Returns the value of attribute params.



15
16
17
# File 'lib/ruby_llm/mcp/result.rb', line 15

def params
  @params
end

#responseObject (readonly)

Returns the value of attribute response.



15
16
17
# File 'lib/ruby_llm/mcp/result.rb', line 15

def response
  @response
end

#resultObject (readonly) Also known as: value

Returns the value of attribute result.



15
16
17
# File 'lib/ruby_llm/mcp/result.rb', line 15

def result
  @result
end

#session_idObject (readonly)

Returns the value of attribute session_id.



15
16
17
# File 'lib/ruby_llm/mcp/result.rb', line 15

def session_id
  @session_id
end

Instance Method Details

#error?Boolean

Returns:

  • (Boolean)


95
96
97
# File 'lib/ruby_llm/mcp/result.rb', line 95

def error?
  !@error.empty?
end

#execution_error?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/ruby_llm/mcp/result.rb', line 57

def execution_error?
  @result_is_error
end

#inspectObject



103
104
105
# File 'lib/ruby_llm/mcp/result.rb', line 103

def inspect
  "#<#{self.class.name}:0x#{object_id.to_s(16)} id: #{@id}, result: #{@result}, error: #{@error}, method: #{@method}, params: #{@params}>" # rubocop:disable Layout/LineLength
end

#matching_id?(request_id) ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/ruby_llm/mcp/result.rb', line 67

def matching_id?(request_id)
  @id&.to_s == request_id.to_s
end

#next_cursor?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/ruby_llm/mcp/result.rb', line 75

def next_cursor?
  !@next_cursor.nil?
end

#notificationObject



49
50
51
# File 'lib/ruby_llm/mcp/result.rb', line 49

def notification
  Notification.new(@response)
end

#notification?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/ruby_llm/mcp/result.rb', line 71

def notification?
  @id.nil? && !@method.nil?
end

#raise_error!Object



61
62
63
64
65
# File 'lib/ruby_llm/mcp/result.rb', line 61

def raise_error!
  error = to_error
  message = "Response error: #{error}"
  raise Errors::ResponseError.new(message: message, error: error)
end

#request?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/ruby_llm/mcp/result.rb', line 79

def request?
  !@id.nil? && !@method.nil?
end

#response?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/ruby_llm/mcp/result.rb', line 83

def response?
  !@id.nil? && @method.nil? && (@has_result || @has_error)
end

#success?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/ruby_llm/mcp/result.rb', line 87

def success?
  @has_result
end

#to_errorObject



53
54
55
# File 'lib/ruby_llm/mcp/result.rb', line 53

def to_error
  Error.new(@error)
end

#to_sObject



99
100
101
# File 'lib/ruby_llm/mcp/result.rb', line 99

def to_s
  inspect
end

#tool_success?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/ruby_llm/mcp/result.rb', line 91

def tool_success?
  success? && !@result_is_error
end