Skip to content

Commit b655693

Browse files
committed
add taskcreate tool result formatter
1 parent 748553b commit b655693

2 files changed

Lines changed: 66 additions & 0 deletions

File tree

lib/roast/cogs/agent/providers/claude/tool_result.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,24 @@ def format_taskupdate
230230
ok_line(preview)
231231
end
232232

233+
# Formats a TaskCreate tool-result line.
234+
#
235+
# Content: the text the tool returned.
236+
#
237+
# Output: "TASKCREATE OK <preview>" – the first line of content,
238+
# stripped and truncated to TRUNCATE_LIMIT chars. The preview is
239+
# omitted when there is no content.
240+
#
241+
# Examples:
242+
# TASKCREATE OK Task created successfully
243+
# TASKCREATE OK
244+
#
245+
#: () -> String
246+
def format_taskcreate
247+
preview = truncate(content.to_s.lines.first.to_s.strip)
248+
ok_line(preview)
249+
end
250+
233251
#: () -> String
234252
def format_unknown
235253
"UNKNOWN [#{tool_name}] OK #{tool_use_description}\n#{content}"

test/roast/cogs/agent/providers/claude/tool_result_test.rb

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -736,6 +736,54 @@ class Claude::ToolResultTest < ActiveSupport::TestCase
736736
assert_equal "TASKUPDATE OK #{"x" * (Claude::ToolResult::TRUNCATE_LIMIT - 3)}...", output
737737
end
738738

739+
test "format_taskcreate previews the first line of the result content" do
740+
tool_use_message = Claude::Messages::ToolUseMessage.new(
741+
type: :tool_use,
742+
hash: { name: "taskcreate", input: {} },
743+
)
744+
tool_result = Claude::ToolResult.new(
745+
tool_use: tool_use_message,
746+
content: " Task created successfully \nadditional detail",
747+
is_error: false,
748+
)
749+
750+
output = tool_result.format
751+
752+
assert_equal "TASKCREATE OK Task created successfully", output
753+
end
754+
755+
test "format_taskcreate reports a bare OK when there is no content" do
756+
tool_use_message = Claude::Messages::ToolUseMessage.new(
757+
type: :tool_use,
758+
hash: { name: "taskcreate", input: {} },
759+
)
760+
tool_result = Claude::ToolResult.new(
761+
tool_use: tool_use_message,
762+
content: "",
763+
is_error: false,
764+
)
765+
766+
output = tool_result.format
767+
768+
assert_equal "TASKCREATE OK", output
769+
end
770+
771+
test "format_taskcreate truncates a long preview" do
772+
tool_use_message = Claude::Messages::ToolUseMessage.new(
773+
type: :tool_use,
774+
hash: { name: "taskcreate", input: {} },
775+
)
776+
tool_result = Claude::ToolResult.new(
777+
tool_use: tool_use_message,
778+
content: "x" * 60,
779+
is_error: false,
780+
)
781+
782+
output = tool_result.format
783+
784+
assert_equal "TASKCREATE OK #{"x" * (Claude::ToolResult::TRUNCATE_LIMIT - 3)}...", output
785+
end
786+
739787
test "ok_line renders a bare OK line when given no parts" do
740788
tool_use_message = Claude::Messages::ToolUseMessage.new(
741789
type: :tool_use,

0 commit comments

Comments
 (0)