Class: SwarmSDK::V3::Hooks::Result
- Inherits:
-
Object
- Object
- SwarmSDK::V3::Hooks::Result
- Defined in:
- lib/swarm_sdk/v3/hooks/result.rb
Overview
Immutable value object representing the outcome of a hook execution
A Result controls flow after a hook runs. Three actions are possible:
-
continue — proceed normally (default when hook returns nil or non-Result)
-
halt — stop processing; meaning varies by event:
-
‘before_ask`: returns nil from ask (same as interrupt)
-
‘before_tool`: returns error string to LLM without executing tool
-
-
replace — substitute a value:
-
‘before_ask`: replaces the prompt
-
‘after_tool`: replaces the tool result
-
Results are created via factory methods, never directly instantiated by hook authors. Hook blocks return a Result to signal flow control.
Constant Summary collapse
- ACTIONS =
Valid result actions
[:continue, :halt, :replace].freeze
Instance Attribute Summary collapse
-
#action ⇒ Symbol
readonly
The action (:continue, :halt, or :replace).
-
#value ⇒ Object?
readonly
Associated value (halt message or replacement value).
Class Method Summary collapse
-
.continue ⇒ Result
Create a continue result (proceed normally).
-
.halt(message = nil) ⇒ Result
Create a halt result (stop processing).
-
.replace(value) ⇒ Result
Create a replace result (substitute a value).
Instance Method Summary collapse
-
#continue? ⇒ Boolean
Whether this result signals to continue normally.
-
#halt? ⇒ Boolean
Whether this result signals to halt processing.
-
#replace? ⇒ Boolean
Whether this result signals to replace a value.
Instance Attribute Details
#action ⇒ Symbol (readonly)
Returns The action (:continue, :halt, or :replace).
34 35 36 |
# File 'lib/swarm_sdk/v3/hooks/result.rb', line 34 def action @action end |
#value ⇒ Object? (readonly)
Returns Associated value (halt message or replacement value).
37 38 39 |
# File 'lib/swarm_sdk/v3/hooks/result.rb', line 37 def value @value end |
Class Method Details
.continue ⇒ Result
Create a continue result (proceed normally)
46 47 48 |
# File 'lib/swarm_sdk/v3/hooks/result.rb', line 46 def continue new(action: :continue) end |
.halt(message = nil) ⇒ Result
Create a halt result (stop processing)
60 61 62 |
# File 'lib/swarm_sdk/v3/hooks/result.rb', line 60 def halt( = nil) new(action: :halt, value: ) end |
.replace(value) ⇒ Result
Create a replace result (substitute a value)
74 75 76 |
# File 'lib/swarm_sdk/v3/hooks/result.rb', line 74 def replace(value) new(action: :replace, value: value) end |
Instance Method Details
#continue? ⇒ Boolean
Whether this result signals to continue normally
82 83 84 |
# File 'lib/swarm_sdk/v3/hooks/result.rb', line 82 def continue? @action == :continue end |
#halt? ⇒ Boolean
Whether this result signals to halt processing
89 90 91 |
# File 'lib/swarm_sdk/v3/hooks/result.rb', line 89 def halt? @action == :halt end |
#replace? ⇒ Boolean
Whether this result signals to replace a value
96 97 98 |
# File 'lib/swarm_sdk/v3/hooks/result.rb', line 96 def replace? @action == :replace end |