diff --git a/core/agent/actions.go b/core/agent/actions.go index 9b7279c..fe02fbe 100644 --- a/core/agent/actions.go +++ b/core/agent/actions.go @@ -174,17 +174,17 @@ func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act ) } -func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction types.Action, actionParams types.ActionParams, reasoning string, pickTemplate string, conv Messages) error { +func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction types.Action, actionParams types.ActionParams, reasoning string, pickTemplate string, conv Messages) (Messages, error) { // Planning: run all the actions in sequence if !chosenAction.Definition().Name.Is(action.PlanActionName) { xlog.Debug("no plan action") - return nil + return conv, nil } xlog.Debug("[planning]...") planResult := action.PlanResult{} if err := actionParams.Unmarshal(&planResult); err != nil { - return fmt.Errorf("error unmarshalling plan result: %w", err) + return conv, fmt.Errorf("error unmarshalling plan result: %w", err) } stateResult := types.ActionState{ @@ -207,7 +207,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction } if len(planResult.Subtasks) == 0 { - return fmt.Errorf("no subtasks") + return conv, fmt.Errorf("no subtasks") } // Execute all subtasks in sequence @@ -223,7 +223,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction params, err := a.generateParameters(ctx, pickTemplate, subTaskAction, conv, subTaskReasoning) if err != nil { - return fmt.Errorf("error generating action's parameters: %w", err) + return conv, fmt.Errorf("error generating action's parameters: %w", err) } actionParams = params.actionParams @@ -252,7 +252,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction result, err := a.runAction(subTaskAction, actionParams) if err != nil { - return fmt.Errorf("error running action: %w", err) + return conv, fmt.Errorf("error running action: %w", err) } stateResult := types.ActionState{ @@ -270,7 +270,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction conv = a.addFunctionResultToConversation(subTaskAction, actionParams, result, conv) } - return nil + return conv, nil } func (a *Agent) availableActions() types.Actions { diff --git a/core/agent/agent.go b/core/agent/agent.go index 5780bf9..57d9adb 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -528,7 +528,9 @@ func (a *Agent) consumeJob(job *types.Job, role string) { return } - if err := a.handlePlanning(ctx, job, chosenAction, actionParams, reasoning, pickTemplate, conv); err != nil { + var err error + conv, err = a.handlePlanning(ctx, job, chosenAction, actionParams, reasoning, pickTemplate, conv) + if err != nil { job.Result.Finish(fmt.Errorf("error running action: %w", err)) return }