@@ -134,24 +134,27 @@ func (e *Engine) runCommand(ctx Context, tool types.Tool, input string, toolCate
134
134
},
135
135
}
136
136
137
- output := & bytes.Buffer {}
138
- all := & bytes.Buffer {}
139
- cmd .Stderr = io .MultiWriter (all , os .Stderr )
140
- cmd .Stdout = io .MultiWriter (all , output , & outputWriter {
137
+ result := & bytes.Buffer {}
138
+ all := io .MultiWriter (result , & outputWriter {
141
139
id : id ,
142
140
progress : e .Progress ,
143
141
})
144
142
143
+ cmd .Stdout = all
144
+ cmd .Stderr = all
145
+ if log .IsDebug () {
146
+ cmd .Stderr = io .MultiWriter (all , os .Stderr )
147
+ }
148
+
145
149
if err := cmd .Run (); err != nil {
146
150
if toolCategory == NoCategory {
147
- return fmt .Sprintf ("ERROR: got (%v) while running tool, OUTPUT: %s" , err , all ), nil
151
+ return fmt .Sprintf ("ERROR: got (%v) while running tool, OUTPUT: %s" , err , result ), nil
148
152
}
149
- _ , _ = os .Stderr .Write (output .Bytes ())
150
153
log .Errorf ("failed to run tool [%s] cmd %v: %v" , tool .Parameters .Name , cmd .Args , err )
151
- return "" , fmt .Errorf ("ERROR: %s: %w" , all , err )
154
+ return "" , fmt .Errorf ("ERROR: %s: %w" , result , err )
152
155
}
153
156
154
- return output .String (), IsChatFinishMessage (output .String ())
157
+ return result .String (), IsChatFinishMessage (result .String ())
155
158
}
156
159
157
160
func (e * Engine ) getRuntimeEnv (ctx context.Context , tool types.Tool , cmd , env []string ) ([]string , error ) {
0 commit comments