diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 778b1e7e..c55f092d 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -17,6 +17,8 @@ import ( var maxConsecutiveToolCalls = 50 +const AbortedSuffix = "\n\nABORTED BY USER" + func init() { if val := os.Getenv("GPTSCRIPT_MAX_CONSECUTIVE_TOOL_CALLS"); val != "" { if i, err := strconv.Atoi(val); err == nil && i > 0 { @@ -335,7 +337,7 @@ func (e *Engine) Start(ctx Context, input string) (ret *Return, err error) { if ret.Result == nil { ret.Result = new(string) } - *ret.Result += "\n\nABORTED BY USER" + *ret.Result += AbortedSuffix default: } }() @@ -501,7 +503,7 @@ func (e *Engine) Continue(ctx Context, state *State, results ...CallResult) (ret if ret.Result == nil { ret.Result = new(string) } - *ret.Result += "\n\nABORTED BY USER" + *ret.Result += AbortedSuffix default: } }() diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index bd05e96a..d61b3a33 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -864,6 +864,10 @@ func (r *Runner) handleCredentials(callCtx engine.Context, monitor Monitor, env continue } + if strings.HasSuffix(*res.Result, engine.AbortedSuffix) { + continue + } + if err := json.Unmarshal([]byte(*res.Result), &resultCredential); err != nil { return nil, fmt.Errorf("failed to unmarshal credential tool %s response: %w", ref.Reference, err) }