github nicobailon/pi-subagents v0.76.1

10 hours ago

pi-subagents 0.76.1 is a reliability release. When a subagent result wakes an idle parent, that parent now keeps its full prompt (subagent list, MCP servers, other extensions), so it stops forgetting tools mid-session and stops churning your provider's prompt cache. Updating pi-subagents while Pi is running now gives a clear "restart Pi" message instead of strange errors after /reload. Herdr users get a pane that only turns red when a person is actually needed, and paused runs that looked stuck can now be stopped.

Highlights

  • A parent woken by a subagent result keeps the subagent list, MCP servers, and other extensions' prompt sections for the whole run.
  • Updating pi-subagents while Pi is running now stops /reload with a clear "restart Pi" error instead of running a mix of old and new code.
  • In Herdr, a child asking its parent agent for help no longer turns the pane red.
  • stop works on a paused run whose result was already delivered, and subagent doctor shows the same async capacity that launches use.
  • Reloading extensions while a child's result is waiting no longer lets a host such as pi-web lose that result.

Changelog

Highlights

  • When a subagent result wakes an idle parent, that run keeps the subagent list, MCP servers, and other extensions' prompt sections, and no longer churns the provider's prompt cache.
  • Updating pi-subagents while Pi is running now stops /reload with a clear "restart Pi" error instead of running a mix of old and new code.
  • In Herdr, a child asking its parent agent for help no longer turns the pane red.
  • stop works on a paused run whose result was already delivered, and subagent doctor now shows the same async capacity that launches use.
  • Reloading extensions while a child's result is waiting no longer lets a host such as pi-web lose that result.

Changed

  • The npm package now has the extension keyword, so Pi's extension catalog lists pi-subagents under Extensions instead of Unlabelled.

Fixed

  • When a subagent result, supervisor question, or other notice woke an idle parent, the run it started skipped Pi's normal prompt setup. From its second request on, it lost the subagent list, the MCP server list, and other extensions' prompt sections, and the changing prompt could invalidate the provider's prompt cache. The parent now gets the notice followed by a short Subagent updates above. message, which starts the run the normal way. Thanks to @ashlineldridge for #2688.
  • Reloading extensions while a child's result was waiting in Pi's queue made the session look idle, so a host such as pi-web could replace the session and lose the result. The session now stays busy until Pi picks up the result. Thanks to @brettinternet for #2687.
  • After pi-subagents was updated while Pi was running, /reload ran a mix of old and new code and failed with errors such as completionNotifier.messageStarted is not a function. Node cannot reload a module it has already imported, so loading now stops with an error that names both versions and asks you to restart Pi. Thanks to @TheAsda for #2695.
  • Child system prompts started with pi-subagents' own instructions instead of Pi's base prompt. Providers and extensions that recognize Pi's default prompt by its first sentence then sent systemPromptMode: append children Pi's whole prompt unchanged. Pi's prompt now comes first. (#2692)
  • When a per-tool timeout stopped a foreground child, its output said Subagent timed out after <run timeout>ms. (or 0ms when no run timeout was set), naming a deadline that never fired. It now names the tool timeout, for example Tool 'find' exceeded its timeout of 300000ms. Thanks to @mannainsect for #2691.
  • stop failed with paused result is missing on a paused run whose result had already been delivered or was never written, and a finished parent workflow kept that run's async capacity slot. When the run's process has exited, stop now marks it stopped and the slot is freed. Thanks to @builtroller for reporting #2699.
  • subagent doctor could report usage: 0/3 used while launches were rejected with 3/3 used, for example in a session resumed with pi --session <id>, because doctor counted a different capacity pool than launches do. It now reads the same pool for both active async capacity and the spawn budget. Thanks to @builtroller for reporting #2698.
  • In Herdr, the pane turned red, which means a person needs to act, whenever an async child needed attention, including a child waiting for its parent agent's answer. Those requests go to the parent agent, so pi-subagents no longer marks the pane blocked; the ⚠ in the pane's subagent label still shows it. Thanks to @nateberkopec for reporting #2702.

Don't miss a new pi-subagents release

NewReleases is sending notifications on new releases.