Class: Kward::Compaction::FileOperationTracker

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

Instance Method Summary collapse

Instance Method Details

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



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/kward/compaction/file_operation_tracker.rb', line 7

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 MessageAccess.role(message) == "assistant"

    MessageAccess.tool_calls(message).each do |tool_call|
      name = ToolCall.name(tool_call)
      args = ToolCall.arguments(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