@@ -25,6 +25,24 @@ var requiredFileExtensions = map[string]string{
2525 "powershell" : "*.ps1" ,
2626}
2727
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+
2846func (e * Engine ) runCommand (ctx Context , tool types.Tool , input string , toolCategory ToolCategory ) (cmdOut string , cmdErr error ) {
2947 id := counter .Next ()
3048
@@ -74,7 +92,10 @@ func (e *Engine) runCommand(ctx Context, tool types.Tool, input string, toolCate
7492 output := & bytes.Buffer {}
7593 all := & bytes.Buffer {}
7694 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+ })
7899
79100 if err := cmd .Run (); err != nil {
80101 if toolCategory == NoCategory {
@@ -85,7 +106,7 @@ func (e *Engine) runCommand(ctx Context, tool types.Tool, input string, toolCate
85106 return "" , fmt .Errorf ("ERROR: %s: %w" , all , err )
86107 }
87108
88- return output .String (), nil
109+ return output .String (), IsChatFinishMessage ( output . String ())
89110}
90111
91112func (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 {
161182 }
162183 }
163184
164- env = appendEnv (env , "GPTSCRIPT_INPUT " , input )
185+ env = appendEnv (env , "GPTSCRIPT_INPUT_CONTENT " , input )
165186 return env
166187}
167188
0 commit comments