Skip to content

Commit 096af4e

Browse files
Merge pull request #696 from ibuildthecloud/main
chore: capture stderr by default and return to LLM, even on success
2 parents 2e69f70 + 6e554b9 commit 096af4e

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

pkg/engine/cmd.go

+11-8
Original file line numberDiff line numberDiff line change
@@ -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

157160
func (e *Engine) getRuntimeEnv(ctx context.Context, tool types.Tool, cmd, env []string) ([]string, error) {

pkg/tests/testdata/TestCwd/subtool/test.gpt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#
22
#!/usr/bin/env X=${GPTSCRIPT_TOOL_DIR} /bin/bash
3-
set -e -x
3+
set -e
44

55
[ ${X} = ${GPTSCRIPT_TOOL_DIR} ]
66
cd $X

pkg/tests/testdata/TestCwd/test.gpt

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ noop
66
name: local
77

88
#!/bin/bash
9-
set -e -x
9+
set -e
1010

1111
[ "" = "${TOOL_DIR}" ]
1212
P=$(pwd)

0 commit comments

Comments
 (0)