Class: Riffer::Tools::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/riffer/tools/response.rb

Overview

Riffer::Tools::Response represents the result of a tool execution.

All tools must return a Response object from their call method. Use Response.success for successful results and Response.error for failures.

class MyTool < Riffer::Tool
  def call(context:, **kwargs)
    result = perform_operation
    Riffer::Tools::Response.success(result)
  rescue MyError => e
    Riffer::Tools::Response.error(e.message)
  end
end

Constant Summary collapse

VALID_FORMATS =
%i[text json].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#contentObject (readonly)

Returns the value of attribute content.



22
23
24
# File 'lib/riffer/tools/response.rb', line 22

def content
  @content
end

#error_messageObject (readonly)

Returns the value of attribute error_message.



22
23
24
# File 'lib/riffer/tools/response.rb', line 22

def error_message
  @error_message
end

#error_typeObject (readonly)

Returns the value of attribute error_type.



22
23
24
# File 'lib/riffer/tools/response.rb', line 22

def error_type
  @error_type
end

Class Method Details

.error(message, type: :execution_error) ⇒ Object

Creates an error response.

message

String - the error message

type

Symbol - the error type (default: :execution_error)

Returns Riffer::Tools::Response.



65
66
67
# File 'lib/riffer/tools/response.rb', line 65

def self.error(message, type: :execution_error)
  new(content: message, success: false, error_message: message, error_type: type)
end

.json(result) ⇒ Object

Creates a success response with JSON format.

result

Object - the tool result (converted via to_json)

Returns Riffer::Tools::Response.



55
56
57
# File 'lib/riffer/tools/response.rb', line 55

def self.json(result)
  success(result, format: :json)
end

.success(result, format: :text) ⇒ Object

Creates a success response.

result

Object - the tool result

format

Symbol - the format (:text or :json; default: :text)

Returns Riffer::Tools::Response.

Raises Riffer::ArgumentError if format is invalid.



32
33
34
35
36
37
38
39
# File 'lib/riffer/tools/response.rb', line 32

def self.success(result, format: :text)
  unless VALID_FORMATS.include?(format)
    raise Riffer::ArgumentError, "Invalid format: #{format}. Must be one of: #{VALID_FORMATS.join(", ")}"
  end

  content = (format == :json) ? result.to_json : result.to_s
  new(content: content, success: true)
end

.text(result) ⇒ Object

Creates a success response with text format.

result

Object - the tool result (converted via to_s)

Returns Riffer::Tools::Response.



46
47
48
# File 'lib/riffer/tools/response.rb', line 46

def self.text(result)
  success(result, format: :text)
end

Instance Method Details

#error?Boolean

Returns true if the response is an error.

Returns:

  • (Boolean)


73
# File 'lib/riffer/tools/response.rb', line 73

def error? = !@success

#success?Boolean

Returns true if the response is successful.

Returns:

  • (Boolean)


70
# File 'lib/riffer/tools/response.rb', line 70

def success? = @success

#to_hObject

Returns a hash representation of the response.

Returns Hash with :content, :error, and :error_type keys.



78
79
80
# File 'lib/riffer/tools/response.rb', line 78

def to_h
  {content: @content, error: @error_message, error_type: @error_type}
end