fix(tools): truncate long running background commands to 30k chars

Kieran Klukas created

Change summary

internal/agent/tools/bash.go       | 6 +++++-
internal/agent/tools/job_output.go | 1 +
2 files changed, 6 insertions(+), 1 deletion(-)

Detailed changes

internal/agent/tools/bash.go 🔗

@@ -414,7 +414,7 @@ func formatOutput(stdout, stderr string, execErr error) string {
 	return stdout
 }
 
-func truncateOutput(content string) string {
+func TruncateOutput(content string) string {
 	if len(content) <= MaxOutputLength {
 		return content
 	}
@@ -427,6 +427,10 @@ func truncateOutput(content string) string {
 	return fmt.Sprintf("%s\n\n... [%d lines truncated] ...\n\n%s", start, truncatedLinesCount, end)
 }
 
+func truncateOutput(content string) string {
+	return TruncateOutput(content)
+}
+
 func countLines(s string) int {
 	if s == "" {
 		return 0

internal/agent/tools/job_output.go 🔗

@@ -71,6 +71,7 @@ func NewJobOutputTool() fantasy.AgentTool {
 			}
 
 			output := strings.Join(outputParts, "\n")
+			output = TruncateOutput(output)
 
 			metadata := JobOutputResponseMetadata{
 				ShellID:          params.ShellID,