Collapse handoff turns in the transcript instead of streaming them

This commit is contained in:
Ian Gulliver
2026-10-15 10:30:24 -07:00
parent c777409dc1
commit e0d292fd75
7 changed files with 85 additions and 31 deletions
+5 -1
View File
@@ -587,6 +587,10 @@ func (m *Manager) message(ctx context.Context, l *live, actor, text string, imag
if len(images) > 0 {
payload["images"] = images
}
compacting := isHandoffPrompt(actor, text)
if compacting {
payload["handoff"] = true
}
err := m.emit(ctx, l, actor, "user.message", payload)
if err != nil {
return err
@@ -597,7 +601,7 @@ func (m *Manager) message(ctx context.Context, l *live, actor, text string, imag
l.asked = false
l.bounced = false
l.wantCompact = false
l.compacting = isHandoffPrompt(actor, text)
l.compacting = compacting
l.rateLimited = nil
m.mu.Unlock()
+3
View File
@@ -587,6 +587,9 @@ func TestCompactCarriesHandoff(t *testing.T) {
t.Fatalf("handoff turn.ended %v: want handoff and no inbox summary", ev.Payload)
}
}
if ev.Kind == "user.message" && ev.Actor == "byre" && *ev.AgentSessionId == old.Id && ev.Payload["handoff"] != true {
t.Fatalf("handoff prompt %v: want handoff flag", ev.Payload)
}
}
sessions, err := e.store.ListSessions(e.ctx, e.task.Id)