Queue mid-turn messages for the next tool call; remove all tests
This commit is contained in:
@@ -305,6 +305,17 @@ func (m *Manager) Deliver(ctx context.Context, sessionID string) error {
|
||||
m.deliverMu.Lock()
|
||||
defer m.deliverMu.Unlock()
|
||||
|
||||
sess, err := m.store.GetSession(ctx, sessionID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if sess.State == api.AgentSessionStateIdle {
|
||||
sent, err := m.deliverQueued(ctx, sess)
|
||||
if err != nil || sent {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
pending, err := m.store.Undelivered(ctx, sessionID)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -314,10 +325,6 @@ func (m *Manager) Deliver(ctx context.Context, sessionID string) error {
|
||||
}
|
||||
ids := responseIDs(pending)
|
||||
|
||||
sess, err := m.store.GetSession(ctx, sessionID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if sess.State != api.AgentSessionStateIdle {
|
||||
slog.Info("deliver held: session not idle", "session", sessionID, "state", sess.State, "responses", ids)
|
||||
return nil
|
||||
@@ -362,9 +369,30 @@ func (m *Manager) Deliver(ctx context.Context, sessionID string) error {
|
||||
}
|
||||
|
||||
func (m *Manager) deliverMidTurn(ctx context.Context, l *live) string {
|
||||
if l.owner != "" {
|
||||
msgs := m.takeLeadQueuedMidTurn(ctx, l)
|
||||
if len(msgs) == 0 {
|
||||
return ""
|
||||
}
|
||||
return m.recordQueued(ctx, l, msgs)
|
||||
}
|
||||
|
||||
m.deliverMu.Lock()
|
||||
defer m.deliverMu.Unlock()
|
||||
|
||||
parts := []string{}
|
||||
msgs := m.takeQueuedMidTurn(ctx, l)
|
||||
if len(msgs) > 0 {
|
||||
parts = append(parts, m.recordQueued(ctx, l, msgs))
|
||||
}
|
||||
responses := m.responsesMidTurn(ctx, l)
|
||||
if responses != "" {
|
||||
parts = append(parts, responses)
|
||||
}
|
||||
return strings.Join(parts, "\n\n")
|
||||
}
|
||||
|
||||
func (m *Manager) responsesMidTurn(ctx context.Context, l *live) string {
|
||||
pending, err := m.store.Undelivered(ctx, l.id)
|
||||
if err != nil {
|
||||
slog.Error("list undelivered responses", "session", l.id, "err", err)
|
||||
|
||||
Reference in New Issue
Block a user