Add team tasks: several agents in one worktree sharing a board

This commit is contained in:
Ian Gulliver
2026-10-18 08:48:57 -07:00
parent 7f62df19d2
commit 6bcde13b2f
31 changed files with 1392 additions and 439 deletions
+7 -3
View File
@@ -17,6 +17,7 @@ import (
)
type snapRequest struct {
target snapTarget
trigger api.SnapshotTrigger
seq int64
review bool
@@ -61,7 +62,7 @@ func (m *Manager) snapshotSoon(t snapTarget, trigger api.SnapshotTrigger, seq in
m.dropRequest(t.taskID, &snapRequest{review: review})
return
}
req := &snapRequest{trigger: trigger, seq: seq, review: review, force: force}
req := &snapRequest{target: t, trigger: trigger, seq: seq, review: review, force: force}
if st.running {
if p := st.pending; p != nil && p.force {
req.force = true
@@ -72,11 +73,13 @@ func (m *Manager) snapshotSoon(t snapTarget, trigger api.SnapshotTrigger, seq in
return
}
st.running = true
go m.runSnapshots(t, st, req)
go m.runSnapshots(st, req)
}
func (m *Manager) runSnapshots(t snapTarget, st *snapState, req *snapRequest) {
func (m *Manager) runSnapshots(st *snapState, req *snapRequest) {
for {
t := req.target
unlock := m.lockTask(t.taskID)
st.mu.Lock()
m.snapMu.Lock()
closed := st.closed
@@ -96,6 +99,7 @@ func (m *Manager) runSnapshots(t snapTarget, st *snapState, req *snapRequest) {
m.dropRequest(t.taskID, req)
}
st.mu.Unlock()
unlock()
m.snapMu.Lock()
req = st.pending