Class: Smith::Tool::LegacyCallAllowance
- Inherits:
-
Object
- Object
- Smith::Tool::LegacyCallAllowance
- Defined in:
- lib/smith/tool/legacy_call_allowance.rb
Class Method Summary collapse
Class Method Details
.charge!(allowance) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/smith/tool/legacy_call_allowance.rb', line 10 def self.charge!(allowance) allowance_mutex(allowance).synchronize do Thread.handle_interrupt(Object => :never) do remaining = allowance[:remaining] unless remaining.is_a?(Integer) && remaining.positive? raise BudgetExceeded, "agent tool_calls budget exceeded" end yield if block_given? allowance[:remaining] = remaining - 1 end end end |
.reserve_batch(allowance, size, ledger: nil) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/smith/tool/legacy_call_allowance.rb', line 24 def self.reserve_batch(allowance, size, ledger: nil) allowance_mutex(allowance).synchronize do Thread.handle_interrupt(Object => :never) do reserve_synchronized(allowance, size, ledger) end end rescue BudgetExceeded nil end |