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
|