class Riffer::Tools::Response
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
Constants
- VALID_FORMATS
Attributes
Public Class Methods
Source
# File lib/riffer/tools/response.rb, line 58 def self.error(message, type: :execution_error) new(content: message, success: false, error_message: message, error_type: type) end
Creates an error response.
: (String, ?type: Symbol) -> Riffer::Tools::Response
Source
# File lib/riffer/tools/response.rb, line 51 def self.json(result) success(result, format: :json) end
Creates a success response with JSON format.
: (untyped) -> Riffer::Tools::Response
Source
# File lib/riffer/tools/response.rb, line 78 def initialize(content:, success:, error_message: nil, error_type: nil) @content = content @success = success @error_message = error_message @error_type = error_type end
: (content: String, success: bool, ?error_message: String?, ?error_type: Symbol?) -> void
Source
# 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
Creates a success response.
Raises Riffer::ArgumentError if format is invalid.
: (untyped, ?format: Symbol) -> Riffer::Tools::Response
Source
# File lib/riffer/tools/response.rb, line 44 def self.text(result) success(result, format: :text) end
Creates a success response with text format.
: (untyped) -> Riffer::Tools::Response
Public Instance Methods
Source
# File lib/riffer/tools/response.rb, line 66 def error? = !@success # Returns a hash representation of the response. # #: () -> Hash[Symbol, untyped] def to_h {content: @content, error: @error_message, error_type: @error_type} end private #: (content: String, success: bool, ?error_message: String?, ?error_type: Symbol?) -> void def initialize(content:, success:, error_message: nil, error_type: nil) @content = content @success = success @error_message = error_message @error_type = error_type end end
: () -> bool
Source
# File lib/riffer/tools/response.rb, line 63 def success? = @success #: () -> bool def error? = !@success # Returns a hash representation of the response. # #: () -> Hash[Symbol, untyped] def to_h {content: @content, error: @error_message, error_type: @error_type} end private #: (content: String, success: bool, ?error_message: String?, ?error_type: Symbol?) -> void def initialize(content:, success:, error_message: nil, error_type: nil) @content = content @success = success @error_message = error_message @error_type = error_type end
: () -> bool
Source
# File lib/riffer/tools/response.rb, line 71 def to_h {content: @content, error: @error_message, error_type: @error_type} end
Returns a hash representation of the response.
: () -> Hash[Symbol, untyped]