Class: Legion::LLM::Router::OutcomeClassifier::Action
- Inherits:
-
Object
- Object
- Legion::LLM::Router::OutcomeClassifier::Action
- Defined in:
- lib/legion/llm/router/outcome_classifier.rb
Overview
Immutable classified action. outcome preserves the originating
ProviderOutcome for emission/diagnostics (never re-classified downstream).
Instance Attribute Summary collapse
-
#disposition ⇒ Object
readonly
Returns the value of attribute disposition.
-
#exclusions ⇒ Object
readonly
Returns the value of attribute exclusions.
-
#global_transition ⇒ Object
readonly
Returns the value of attribute global_transition.
-
#outcome ⇒ Object
readonly
Returns the value of attribute outcome.
-
#rejection ⇒ Object
readonly
Returns the value of attribute rejection.
Class Method Summary collapse
- .retry(exclusions:, outcome:, global_transition: nil) ⇒ Object
- .success(outcome:) ⇒ Object
- .terminal(rejection:, outcome:) ⇒ Object
Instance Method Summary collapse
-
#initialize(disposition:, outcome:, exclusions: [], global_transition: nil, rejection: nil) ⇒ Action
constructor
A new instance of Action.
- #retry? ⇒ Boolean
- #success? ⇒ Boolean
- #terminal? ⇒ Boolean
Constructor Details
#initialize(disposition:, outcome:, exclusions: [], global_transition: nil, rejection: nil) ⇒ Action
Returns a new instance of Action.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 46 def initialize(disposition:, outcome:, exclusions: [], global_transition: nil, rejection: nil) case disposition when :success raise ArgumentError, 'success carries no rejection/transition' if rejection || global_transition when :retry raise ArgumentError, 'retry carries no rejection' if rejection when :terminal raise ArgumentError, 'terminal requires a rejection' if rejection.nil? raise ArgumentError, 'terminal carries no global transition' if global_transition else raise ArgumentError, "unknown disposition: #{disposition.inspect}" end @disposition = disposition @outcome = outcome @exclusions = exclusions.freeze @global_transition = global_transition @rejection = rejection freeze end |
Instance Attribute Details
#disposition ⇒ Object (readonly)
Returns the value of attribute disposition.
32 33 34 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 32 def disposition @disposition end |
#exclusions ⇒ Object (readonly)
Returns the value of attribute exclusions.
32 33 34 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 32 def exclusions @exclusions end |
#global_transition ⇒ Object (readonly)
Returns the value of attribute global_transition.
32 33 34 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 32 def global_transition @global_transition end |
#outcome ⇒ Object (readonly)
Returns the value of attribute outcome.
32 33 34 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 32 def outcome @outcome end |
#rejection ⇒ Object (readonly)
Returns the value of attribute rejection.
32 33 34 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 32 def rejection @rejection end |
Class Method Details
.retry(exclusions:, outcome:, global_transition: nil) ⇒ Object
38 39 40 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 38 def self.retry(exclusions:, outcome:, global_transition: nil) new(disposition: :retry, exclusions: exclusions, global_transition: global_transition, outcome: outcome) end |
.success(outcome:) ⇒ Object
34 35 36 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 34 def self.success(outcome:) new(disposition: :success, outcome: outcome) end |
.terminal(rejection:, outcome:) ⇒ Object
42 43 44 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 42 def self.terminal(rejection:, outcome:) new(disposition: :terminal, rejection: rejection, outcome: outcome) end |
Instance Method Details
#retry? ⇒ Boolean
68 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 68 def retry? = @disposition == :retry |
#success? ⇒ Boolean
67 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 67 def success? = @disposition == :success |
#terminal? ⇒ Boolean
69 |
# File 'lib/legion/llm/router/outcome_classifier.rb', line 69 def terminal? = @disposition == :terminal |