Class: Kward::Compaction::CutPointFinder

Inherits:
Object
  • Object
show all
Defined in:
lib/kward/compactor.rb

Constant Summary collapse

VALID_CUT_ROLES =
["user", "assistant", "bash", "custom", "branchSummary"].freeze

Instance Method Summary collapse

Constructor Details

#initialize(estimator: TokenEstimator.new) ⇒ CutPointFinder

Returns a new instance of CutPointFinder.



421
422
423
# File 'lib/kward/compactor.rb', line 421

def initialize(estimator: TokenEstimator.new)
  @estimator = estimator
end

Instance Method Details

#find(entries:, start_index:, keep_recent_tokens:) ⇒ Object



425
426
427
428
429
430
431
432
433
434
435
436
437
# File 'lib/kward/compactor.rb', line 425

def find(entries:, start_index:, keep_recent_tokens:)
  entries = Array(entries)
  return nil if start_index >= entries.length
  return nil if @estimator.messages_tokens(entries[start_index..]) <= keep_recent_tokens

  turn_boundary = turn_boundary_cut(entries, start_index, keep_recent_tokens)
  return turn_boundary if turn_boundary

  split = split_turn_cut(entries, start_index, keep_recent_tokens)
  return split if split

  fallback_cut(entries, start_index, keep_recent_tokens)
end