Class: Kward::Compaction::FileOperationTracker

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

Instance Method Summary collapse

Instance Method Details

#call(messages, previous_details: {}) ⇒ Object



354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
# File 'lib/kward/compactor.rb', line 354

def call(messages, previous_details: {})
  read_files = Array(path_values(previous_details, "read_files", :read_files))
  modified_files = Array(path_values(previous_details, "modified_files", :modified_files))

  Array(messages).each do |message|
    next unless message_role(message) == "assistant"

    message_tool_calls(message).each do |tool_call|
      name = tool_call_name(tool_call)
      args = tool_call_args(tool_call)
      path = args["path"] || args[:path]
      case name
      when "read_file"
        read_files << path if path
      when "write_file", "edit_file"
        modified_files << path if path
      end
    end
  end

  {
    read_files: sorted_paths(read_files),
    modified_files: sorted_paths(modified_files)
  }
end