Harry Bayliss 34b41be1df Cancel pending timers when a child is closed
Stale timer bodies were re-delivered to the orchestrator pane after
the parent had already processed the sub-agent's reply and called
close_process. The timer registry held no link to the child
lifecycle, so timers owned by or watching the closed child lingered
until something triggered a fire — e.g. a trailing classifier tick
for the now-removed child.

Add an OnChildClosed hook to ChildEventListener, emit it from
Session.Close (and the terminal-corpse path in reapChild), and have
the timer manager prune the registry: cancel timers owned by the
closed child; remove the closed child from each timer's watched
list (cancel the timer outright when watched empties).

Natural exit deliberately does not route through this hook — the
classifier already emits an idle transition on exit which delivers
any legitimate "fire when sub-agent finishes" semantics exactly
once; cancelling on exit would swallow that.
2026-05-18 12:37:32 +01:00
2026-05-14 16:37:46 +01:00
2026-05-14 16:03:49 +01:00
wip
2026-05-15 00:28:06 +01:00
wip
2026-05-15 00:28:06 +01:00
2026-05-18 11:28:00 +01:00
2026-05-14 13:37:20 +01:00
2026-05-18 11:28:00 +01:00
Description
Terminal-based agent orchestration shell. Named after my dog.
3.1 MiB
v0.0.7 Latest
2026-05-18 13:02:46 +01:00
Languages
Go 99.6%
Makefile 0.4%