Class: ActiveHarness::ModelList
- Inherits:
-
Object
- Object
- ActiveHarness::ModelList
- Defined in:
- lib/active_harness/agent/models.rb
Overview
ModelList — mutable proxy returned by agent.models
Instance Method Summary collapse
-
#initialize(base_models) ⇒ ModelList
constructor
A new instance of ModelList.
-
#insert(position, model) ⇒ Object
Insert a single model entry at an arbitrary position in the final chain.
- #inspect ⇒ Object
-
#prepend(models) ⇒ Object
Add models BEFORE the existing chain.
-
#push(models) ⇒ Object
Add models AFTER the existing chain.
-
#replace(models) ⇒ Object
Replace the entire chain, discarding prepended/appended too.
-
#to_a ⇒ Object
Return the fully assembled list: prepended + base + appended.
Constructor Details
#initialize(base_models) ⇒ ModelList
Returns a new instance of ModelList.
75 76 77 78 79 |
# File 'lib/active_harness/agent/models.rb', line 75 def initialize(base_models) @base = Array(base_models) @prepended = [] @appended = [] end |
Instance Method Details
#insert(position, model) ⇒ Object
Insert a single model entry at an arbitrary position in the final chain. Position 0 is the same as prepend; -1 appends after the last element.
agent.models.insert(0, { provider: :openrouter, model: "fast-model" })
agent.models.insert(2, { provider: :openrouter, model: "mid-model" })
agent.models.insert(-1, { provider: :openrouter, model: "last-resort" })
110 111 112 113 114 115 116 117 |
# File 'lib/active_harness/agent/models.rb', line 110 def insert(position, model) to_a.tap { |list| list.insert(position, model) }.then do |new_list| @prepended = [] @base = new_list @appended = [] end self end |
#inspect ⇒ Object
124 125 126 |
# File 'lib/active_harness/agent/models.rb', line 124 def inspect "#<ModelList prepended=#{@prepended.size} base=#{@base.size} appended=#{@appended.size}>" end |
#prepend(models) ⇒ Object
Add models BEFORE the existing chain. Calling multiple times keeps order (last prepend ends up first).
83 84 85 86 |
# File 'lib/active_harness/agent/models.rb', line 83 def prepend(models) @prepended = Array(models) + @prepended self end |
#push(models) ⇒ Object
Add models AFTER the existing chain.
89 90 91 92 |
# File 'lib/active_harness/agent/models.rb', line 89 def push(models) @appended += Array(models) self end |
#replace(models) ⇒ Object
Replace the entire chain, discarding prepended/appended too.
agent.models.replace([{ provider: :openrouter, model: "..." }])
97 98 99 100 101 102 |
# File 'lib/active_harness/agent/models.rb', line 97 def replace(models) @base = Array(models) @prepended = [] @appended = [] self end |
#to_a ⇒ Object
Return the fully assembled list: prepended + base + appended.
120 121 122 |
# File 'lib/active_harness/agent/models.rb', line 120 def to_a @prepended + @base + @appended end |