5.0 KiB
Changelog
Unreleased
-
New
/agent [filter]OpenCode-style chat inspector: a full TUI panel shows the agent tree on the left and the selected agent's live chat transcript on the right (↑↓select,enter/tabopen chat,ttoggle thinking,oopen the full session,escclose). Transcripts are parsed from the agent session JSONL (user/assistant/tool-call/tool-result/thinking blocks) and refresh every 1.5s while an agent is streaming; the tree shows status glyphs, elapsed time, and per-agent tasks. Selectoto open the full session, with/backreturning to the main session. -
New
/agent [filter]command opens a subagent's full chat session in the TUI (OpenCode-styleSubagent Actions → Open): a selector lists the run's agents with status glyphs, elapsed time, and task; picking one switches the session to the agent's own conversation so it can be read (and continued once idle) in the normal pi view./backreturns to the main session. The run is re-linked automatically: an agent chat session carries no RUN_ENTRY, so the run id is derived from the session file path (<stateDir>/runs/<runId>/sessions/…) and the run is restored instead of a new one being created; the main session file is recorded in the run manifest so/backworks even after a reload while viewing an agent chat. -
The live widget is re-attached safely on every session switch (timer guard).
-
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. -
The live 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).
-
Subagents no longer stall the main chat on serial model backends: new
agent_concurrency(default 3) caps how many subagent sessions stream at once, and optionalsubagent_modelroutes subagents to a different model/backend (e.g. a local Ollama model) so they never contend with the main session.
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.