pi-subagents 0.79.1 makes everyday sessions lighter and a few rough spots less fragile. Until you turn on subagent, a session no longer sends two background-work tools with every request, which saves about 1,500 characters per request. Apps that embed Pi, such as pi-web, now launch children with their own Pi instead of a copy bundled with the extension. When a workflow's main process dies, children that already finished keep their real results.
Highlights
- Leaner requests until you delegate. A session that hasn't turned on
subagentno longer sends thebg_waitandsubagent_supervisortool definitions. Sessions that already had them keep them, so upgrading doesn't break their prompt cache. - Embedded hosts use their own Pi. Children launched from apps like pi-web use the app's Pi install first. A broken install fails the launch with the reason, and
doctorandstatuskeep working. - Finished workflow children keep their results. If a workflow's main process dies, children that already completed, failed, stopped or partially finished keep that result instead of all being marked failed.
- Every workflow lane shows its model. The async widget, FleetView and
statusnow show each background workflow child's model and thinking level. - Quiet start on read-only installs. No more "permission denied" upgrade-notice error on every Pi start.
Full changelog
Highlights
- Leaner requests until you delegate. A session that hasn't turned on
subagentno longer sends thebg_waitandsubagent_supervisortool definitions, about 1,500 characters on every request. - Apps that embed Pi, such as pi-web, now launch children with their own Pi install instead of the copy that came with pi-subagents.
- A workflow whose main process died keeps the results of children that had already finished, instead of marking them all failed.
- Workflow child lanes in the widget, FleetView and
statusnow show each child's model. - Read-only installs start without a "permission denied" error.
Changed
- A session that hasn't delegated anything no longer sends
subagent_supervisorwith every request, saving about 420 characters each time. It turns on withsubagent, or when a child's question reaches a session that doesn't have it yet, for example from a scheduled run. Thanks to @armchairfuturist-code for reporting #2936. - A session that hasn't delegated anything no longer sends
bg_waitwith every request, saving about 1,100 characters each time. It turns on withsubagent(aftersubagents_enable), or once another extension registers background work for it to wait on. Sessions that already hadbg_waitorsubagent_supervisorkeep them, so upgrading doesn't change their tools or break their prompt cache. Thanks to @armchairfuturist-code for reporting #2935.
Fixed
- When pi-subagents ran inside an app that embeds Pi, children could start with the Pi copy installed next to pi-subagents instead of the app's own. Children now use the app's Pi first.
PI_SUBAGENTS_PI_CODING_AGENT_PACKAGE_ROOTstill takes priority, including when Pi is started throughnode_modules/.bin/pi. If the chosen Pi install is broken, launching a child fails and says why, whiledoctorandstatuskeep working. Thanks to @CompN3rd for #2947. - When a workflow's main process died, every child still listed as running was marked failed, even one that had already finished on its own. A background child that already recorded its result (
complete,failed,stopped,partialorrejected) now keeps it. Children that hadn't finished, or whose status can't be read, are still marked failed. Thanks to @isjiajia01 for #2940 (#2938). - A background workflow child showed no model on its lane in the async widget, FleetView or
status. Lanes now show the model and thinking level the child reports. Thanks to @bottfish for #2941. - Attention notices for a child's
bashcall could name&1;as the file being written, because2>&1was read as a file. The notice now names the first real file the command writes, and names none when the command only redirects to another output or/dev/null. (#2943) - In a read-only install, every Pi start logged "Failed to show the pi-subagents upgrade notice: ... permission denied", because the upgrade notice couldn't save which version it last showed. It now skips the notice quietly in that case. Thanks to @jakubsuchy for reporting #2949.