Class: Rubino::Agent::IterationBudget

Inherits:
Object
  • Object
show all
Defined in:
lib/rubino/agent/iteration_budget.rb

Overview

Manages turn and iteration budgets to prevent runaway loops.

Instance Method Summary collapse

Constructor Details

#initialize(config: nil, max_tool_iterations: nil) ⇒ IterationBudget

Returns a new instance of IterationBudget.



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/rubino/agent/iteration_budget.rb', line 7

def initialize(config: nil, max_tool_iterations: nil)
  @config = config || Rubino.configuration
  @max_turns = @config.agent_max_turns
  # An explicit override (the CLI `--max-turns N` flag, threaded through
  # Runner → Lifecycle) wins over the config default so the documented
  # control knob actually caps tool iterations (#141). A nil/blank
  # override falls back to the configured budget, unchanged.
  @max_tool_iterations = positive_int(max_tool_iterations) || @config.agent_max_tool_iterations
  @max_turn_seconds = @config.agent_max_turn_seconds
  @turn_started_at = Time.now
end

Instance Method Details

#can_continue?(iteration) ⇒ Boolean

Returns true if the agent can continue iterating

Returns:

  • (Boolean)


20
21
22
# File 'lib/rubino/agent/iteration_budget.rb', line 20

def can_continue?(iteration)
  within_iteration_limit?(iteration) && within_time_limit?
end