@@ -25,6 +25,24 @@ var requiredFileExtensions = map[string]string{
25
25
"powershell" : "*.ps1" ,
26
26
}
27
27
28
+ type outputWriter struct {
29
+ id string
30
+ progress chan <- types.CompletionStatus
31
+ buf bytes.Buffer
32
+ }
33
+
34
+ func (o * outputWriter ) Write (p []byte ) (n int , err error ) {
35
+ o .buf .Write (p )
36
+ o .progress <- types.CompletionStatus {
37
+ CompletionID : o .id ,
38
+ PartialResponse : & types.CompletionMessage {
39
+ Role : types .CompletionMessageRoleTypeAssistant ,
40
+ Content : types .Text (o .buf .String ()),
41
+ },
42
+ }
43
+ return len (p ), nil
44
+ }
45
+
28
46
func (e * Engine ) runCommand (ctx Context , tool types.Tool , input string , toolCategory ToolCategory ) (cmdOut string , cmdErr error ) {
29
47
id := counter .Next ()
30
48
@@ -74,7 +92,10 @@ func (e *Engine) runCommand(ctx Context, tool types.Tool, input string, toolCate
74
92
output := & bytes.Buffer {}
75
93
all := & bytes.Buffer {}
76
94
cmd .Stderr = io .MultiWriter (all , os .Stderr )
77
- cmd .Stdout = io .MultiWriter (all , output )
95
+ cmd .Stdout = io .MultiWriter (all , output , & outputWriter {
96
+ id : id ,
97
+ progress : e .Progress ,
98
+ })
78
99
79
100
if err := cmd .Run (); err != nil {
80
101
if toolCategory == NoCategory {
@@ -85,7 +106,7 @@ func (e *Engine) runCommand(ctx Context, tool types.Tool, input string, toolCate
85
106
return "" , fmt .Errorf ("ERROR: %s: %w" , all , err )
86
107
}
87
108
88
- return output .String (), nil
109
+ return output .String (), IsChatFinishMessage ( output . String ())
89
110
}
90
111
91
112
func (e * Engine ) getRuntimeEnv (ctx context.Context , tool types.Tool , cmd , env []string ) ([]string , error ) {
@@ -161,7 +182,7 @@ func appendInputAsEnv(env []string, input string) []string {
161
182
}
162
183
}
163
184
164
- env = appendEnv (env , "GPTSCRIPT_INPUT " , input )
185
+ env = appendEnv (env , "GPTSCRIPT_INPUT_CONTENT " , input )
165
186
return env
166
187
}
167
188
0 commit comments