Adds a widget above the editor (ctx.ui.setWidget) showing the research run id, loop status, iteration, active agents with elapsed time, and recently finished agents. Refreshed every 1.5s while work is running, hidden when idle; timer is cleaned up on shutdown so reloads do not leak intervals.
3.3 KiB
3.3 KiB
Changelog
Unreleased
- Fixed the research loop and agent tree getting permanently stuck after
research_control stop:startnow restarts a stopped/completed run in the same session (AgentTree.restartrevives the run, archives old branches, and resets the root),ResearchLoop.startresets iteration counters, and goal changes are allowed after stop/completion. - Cancelled/failed/archived children no longer count toward the per-agent child limit, and archived agents are ignored by the duplicate-task guard.
cancel()no longer overwrites an already recorded agent result.- Added a per-agent execution timeout (
agent_timeout_seconds, default 1800) so a hung agent session fails instead of blockingwaitforever. - Full-text search now prefix-matches tokens (tolerates Russian/English inflections without stemming) and safely handles punctuation and FTS5 metacharacters instead of throwing or returning false negatives.
- Hardened the web gateway against SSRF TOCTOU: outbound downloads now resolve DNS once, validate the address, and connect to the validated IP directly (pinned resolution), so DNS rebinding cannot redirect the connection to a private target; malformed search results no longer break the whole query; the web cache is bounded (oldest entries evicted past 500 files).
- Experiment review is now truly independent: the reviewer must not be a descendant of the experiment author (in addition to not being the author).
- Experiment stdout/stderr are capped at 512 KB so runaway container output cannot exhaust memory or disk.
- Verified that Pi's extension tool registry is per-extension-instance, so reload re-registration is safe (no fix required).
research_control pause/resumeno longer desync the agent tree from the loop: pausing a non-running loop now errors instead of silently marking the tree as paused, and resume requires the loop to actually be paused.read_artifactnow resolves symlinks before the confinement check, so a symlink inside the project cannot leak files from outside it.- Added a live subagent dashboard: a TUI widget above the editor shows the research run id, loop status, iteration, active agents with elapsed time, and recently finished agents (updated every 1.5 s, hidden when idle).
0.1.1 — 2026-07-31
- Added GitHub CI, CodeQL, Dependabot, contribution/security templates, and the local release checklist.
- Updated the development toolchain to ESLint 10 and aligned the minimum Node.js
version with Pi 0.83 (
22.19+). - Added the official
ModelRegistrycompatibility path for Pi 0.78 while retaining sharedModelRuntimebehavior on Pi 0.83+. - Added
agent_endcontinuation fallback for Pi versions predatingagent_settled. - Improved startup diagnostics and verified
/teamthrough Pi 0.78 RPC mode. - Fixed Redis container capabilities and verified a live Firecrawl v2 scrape.
0.1.0 — 2026-07-31
- Initial Pi extension package.
- Recursive persistent AgentSessions and dynamic Markdown agent factory.
- Tree limits, replication, messaging, cancellation, recovery, and
/team. - Markdown/SQLite research memory and source provenance.
- Local SearXNG/Firecrawl gateway with SSRF controls and cache.
- Explicit bounded research loop.
- Docker-only reproducible experiment runner.
- Unit, integration, and extension smoke tests.