Add task summaries, closed-task search and a summary turn before discard
This commit is contained in:
@@ -2,10 +2,12 @@ package agents
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"log/slog"
|
||||
"strings"
|
||||
|
||||
"g.fc.run/misc/byre/internal/api"
|
||||
"g.fc.run/misc/byre/internal/store"
|
||||
)
|
||||
|
||||
const handoffPrompt = `Write a handoff for a fresh agent that will continue this task with none of your context. ` +
|
||||
@@ -59,20 +61,37 @@ func (m *Manager) handoff(ctx context.Context, sessionID, handoff string) error
|
||||
return err
|
||||
}
|
||||
|
||||
err = m.retire(ctx, sess, "byre")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if sess.Owner != "" {
|
||||
err = m.retire(ctx, sess, "byre")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = m.createLead(ctx, creator, leadHandoffPreamble+handoff, sess.Model, "byre", nil)
|
||||
return err
|
||||
}
|
||||
|
||||
discard, err := m.store.GetDiscard(ctx, sess.TaskId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if discard.State != store.DiscardNone {
|
||||
m.startDiscard(sess.TaskId)
|
||||
return nil
|
||||
}
|
||||
err = transition(ctx, m.store, sess.Id, api.AgentSessionStateIdle, api.AgentSessionStateCompleted, "byre")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
m.stopLive(sess.Id)
|
||||
|
||||
task, err := m.store.GetTask(ctx, sess.TaskId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = m.create(ctx, task, creator, handoffPreamble+handoff, sess.Model, "byre", nil)
|
||||
if errors.Is(err, ErrConflict) {
|
||||
m.startDiscard(task.Id)
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user