Repository navigation
Install:
pi install git:github.com/edxeth/pi-subagents@v2.9.2Or latest:
pi install git:github.com/edxeth/pi-subagents✨ Features
Toggle agent enabled state from the Agents tab
Refs: e49336a7
Press Space on the Agents tab of the /subagents overlay to flip the enabled frontmatter key of the selected agent file. Only the enabled line changes, so comments, key order, and the agent body stay byte-for-byte the same. The key is appended when the file does not set it yet. Write failures show an error toast.
Disabled agents stay listed with a hollow icon, so you can re-enable them from the tab. The footer hint names the state that Space will produce (Space disable or Space enable). The launch policy and the roster keep excluding disabled agents.
🐛 Bug Fixes
The Herdr outstanding-work count returns to zero again
Refs: eafb25ef, 0c07bc0b, 08fc9fa1
A finished child could leave the Herdr work token (pi_subagents_work_v1) above zero forever, so the sidebar count never cleared. Three leaks are fixed:
- A report delivered as
nextTurnis parked in Pi until the operator sends the next prompt. Such a report never reached a context event, so its lease was never released. The lease is now marked consumed when Pi accepts the parked report, and it is released when the parent settles. - A background child whose process died without emitting
exitorerrorstayed in the running set forever. The background watcher now finalizes the child when its process group is gone. - An interactive child whose pane launcher died without publishing a done sentinel or exit sidecar was waited on forever. The launcher now records its process id next to the done sentinel. A surviving record whose process is gone is reported as an abrupt exit instead of being ignored.
On Windows, liveness probes now check the child process id directly, and probing treats only ESRCH as "process gone". Permission errors and unsupported probe calls keep the child supervised instead of dropping a live child from the running set.
Child results survive completion races
Refs: 998c6baa
When the exit handler and the one-second poll finished the same child at the same time, the faster path could consume the child's result while the slower path reported an abrupt exit. The final report could then lose ping, token, and context metadata, and normal launcher cleanup could be classified as a crash. Death polling now defers to the group-exit waiter once that waiter owns the consumed sidecar, and the poll re-reads the launcher marker before it reports an abrupt exit.