Class: Legate::ToolResult
- Inherits:
-
Data
- Object
- Data
- Legate::ToolResult
- Defined in:
- lib/legate/tool_result.rb
Overview
A typed, immutable result a tool’s #perform_execution may return instead of building the canonical ‘{ status:, result:/error_message:/job_id: }` hash by hand (R11, additive). Tool#execute normalizes it to that hash, so everything downstream is unchanged — this is purely an authoring convenience.
def perform_execution(params, _context)
ToolResult.success("Hello, #{params[:name]}!")
end
Pairs with the Event#answer / #success? / #error? accessors.
Instance Attribute Summary collapse
-
#error_message ⇒ Object
readonly
Returns the value of attribute error_message.
-
#job_id ⇒ Object
readonly
Returns the value of attribute job_id.
-
#message ⇒ Object
readonly
Returns the value of attribute message.
-
#result ⇒ Object
readonly
Returns the value of attribute result.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
Class Method Summary collapse
-
.error(message) ⇒ ToolResult
An error result.
-
.pending(job_id:, message: nil) ⇒ ToolResult
A pending (async) result referencing a job.
-
.success(value = nil) ⇒ ToolResult
A successful result carrying an optional value.
Instance Method Summary collapse
- #error? ⇒ Boolean
- #pending? ⇒ Boolean
- #success? ⇒ Boolean
-
#to_h ⇒ Hash
The canonical result hash the rest of Legate speaks.
Instance Attribute Details
#error_message ⇒ Object (readonly)
Returns the value of attribute error_message
15 16 17 |
# File 'lib/legate/tool_result.rb', line 15 def @error_message end |
#job_id ⇒ Object (readonly)
Returns the value of attribute job_id
15 16 17 |
# File 'lib/legate/tool_result.rb', line 15 def job_id @job_id end |
#message ⇒ Object (readonly)
Returns the value of attribute message
15 16 17 |
# File 'lib/legate/tool_result.rb', line 15 def @message end |
#result ⇒ Object (readonly)
Returns the value of attribute result
15 16 17 |
# File 'lib/legate/tool_result.rb', line 15 def result @result end |
#status ⇒ Object (readonly)
Returns the value of attribute status
15 16 17 |
# File 'lib/legate/tool_result.rb', line 15 def status @status end |
Class Method Details
.error(message) ⇒ ToolResult
Returns an error result.
22 23 24 |
# File 'lib/legate/tool_result.rb', line 22 def self.error() new(status: :error, result: nil, error_message: .to_s, job_id: nil, message: nil) end |
.pending(job_id:, message: nil) ⇒ ToolResult
Returns a pending (async) result referencing a job.
27 28 29 |
# File 'lib/legate/tool_result.rb', line 27 def self.pending(job_id:, message: nil) new(status: :pending, result: nil, error_message: nil, job_id: job_id, message: ) end |
.success(value = nil) ⇒ ToolResult
Returns a successful result carrying an optional value.
17 18 19 |
# File 'lib/legate/tool_result.rb', line 17 def self.success(value = nil) new(status: :success, result: value, error_message: nil, job_id: nil, message: nil) end |
Instance Method Details
#error? ⇒ Boolean
35 36 37 |
# File 'lib/legate/tool_result.rb', line 35 def error? status == :error end |
#pending? ⇒ Boolean
39 40 41 |
# File 'lib/legate/tool_result.rb', line 39 def pending? status == :pending end |
#success? ⇒ Boolean
31 32 33 |
# File 'lib/legate/tool_result.rb', line 31 def success? status == :success end |
#to_h ⇒ Hash
The canonical result hash the rest of Legate speaks. Only the keys relevant to the status are included, matching what hand-built tool hashes produce.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/legate/tool_result.rb', line 46 def to_h case status when :success { status: :success, result: result } when :error { status: :error, error_message: } when :pending out = { status: :pending, job_id: job_id } out[:message] = unless .nil? out else { status: status } end end |