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.



356
357
358
# File 'lib/kward/compactor.rb', line 356

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

Instance Method Details

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



360
361
362
363
364
365
366
367
368
369
370
371
372
# File 'lib/kward/compactor.rb', line 360

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