Fix diagram layout and clicks; tell agents to yield to image messages
This commit is contained in:
@@ -387,19 +387,27 @@ type midTurn struct {
|
||||
taskInputs []store.TaskInput
|
||||
leadInputs []store.LeadInput
|
||||
responses []string
|
||||
hinted int64
|
||||
}
|
||||
|
||||
func (m *Manager) deliverMidTurn(ctx context.Context, l *live) midTurn {
|
||||
if l.owner != "" {
|
||||
inputs := m.takeLeadQueuedMidTurn(ctx, l)
|
||||
if len(inputs) == 0 {
|
||||
return midTurn{}
|
||||
inputs, held := m.takeLeadQueuedMidTurn(ctx, l)
|
||||
parts := []string{}
|
||||
if len(inputs) > 0 {
|
||||
msgs := []queued{}
|
||||
for _, in := range inputs {
|
||||
msgs = append(msgs, queued{actor: in.Actor, text: in.Text, sendID: in.SendID, client: in.Client})
|
||||
}
|
||||
parts = append(parts, m.recordQueued(ctx, l, msgs))
|
||||
}
|
||||
msgs := []queued{}
|
||||
for _, in := range inputs {
|
||||
msgs = append(msgs, queued{actor: in.Actor, text: in.Text, sendID: in.SendID, client: in.Client})
|
||||
mt := midTurn{leadInputs: inputs}
|
||||
if hint := m.imagesHint(l, held); hint != "" {
|
||||
parts = append(parts, hint)
|
||||
mt.hinted = held.id
|
||||
}
|
||||
return midTurn{text: m.recordQueued(ctx, l, msgs), leadInputs: inputs}
|
||||
mt.text = strings.Join(parts, "\n\n")
|
||||
return mt
|
||||
}
|
||||
|
||||
unlock := m.lockDelivery(l.id)
|
||||
@@ -419,7 +427,8 @@ func (m *Manager) deliverMidTurn(ctx context.Context, l *live) midTurn {
|
||||
|
||||
mt := midTurn{}
|
||||
parts := []string{}
|
||||
mt.taskInputs = m.takeQueuedMidTurn(ctx, l)
|
||||
inputs, held := m.takeQueuedMidTurn(ctx, l)
|
||||
mt.taskInputs = inputs
|
||||
if len(mt.taskInputs) > 0 {
|
||||
msgs := []queued{}
|
||||
for _, in := range mt.taskInputs {
|
||||
@@ -427,6 +436,10 @@ func (m *Manager) deliverMidTurn(ctx context.Context, l *live) midTurn {
|
||||
}
|
||||
parts = append(parts, m.recordQueued(ctx, l, msgs))
|
||||
}
|
||||
if hint := m.imagesHint(l, held); hint != "" {
|
||||
parts = append(parts, hint)
|
||||
mt.hinted = held.id
|
||||
}
|
||||
responses, ids := m.responsesMidTurn(ctx, l)
|
||||
if responses != "" {
|
||||
parts = append(parts, responses)
|
||||
@@ -472,6 +485,13 @@ func (m *Manager) restoreMidTurn(ctx context.Context, l *live, mt midTurn) {
|
||||
slog.Error("mark responses undelivered", "session", l.id, "err", err, "responses", mt.responses)
|
||||
}
|
||||
}
|
||||
if mt.hinted != 0 {
|
||||
m.mu.Lock()
|
||||
if l.hintedImages == mt.hinted {
|
||||
l.hintedImages = 0
|
||||
}
|
||||
m.mu.Unlock()
|
||||
}
|
||||
slog.Info("mid-turn delivery restored", "session", l.id, "inputs", len(mt.taskInputs)+len(mt.leadInputs), "responses", mt.responses)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user