@@ -134,24 +134,27 @@ func (e *Engine) runCommand(ctx Context, tool types.Tool, input string, toolCate
134134 },
135135 }
136136
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 {
141139 id : id ,
142140 progress : e .Progress ,
143141 })
144142
143+ cmd .Stdout = all
144+ cmd .Stderr = all
145+ if log .IsDebug () {
146+ cmd .Stderr = io .MultiWriter (all , os .Stderr )
147+ }
148+
145149 if err := cmd .Run (); err != nil {
146150 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
148152 }
149- _ , _ = os .Stderr .Write (output .Bytes ())
150153 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 )
152155 }
153156
154- return output .String (), IsChatFinishMessage (output .String ())
157+ return result .String (), IsChatFinishMessage (result .String ())
155158}
156159
157160func (e * Engine ) getRuntimeEnv (ctx context.Context , tool types.Tool , cmd , env []string ) ([]string , error ) {
0 commit comments