@fitchmultz/pi-subagents 0.0.0-stage → 0.44.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1654 -0
- package/LICENSE +21 -0
- package/README.md +1533 -2
- package/agents/context-builder.md +97 -0
- package/agents/debugger.md +51 -0
- package/agents/delegate.md +13 -0
- package/agents/fixer.md +37 -0
- package/agents/oracle.md +71 -0
- package/agents/planner.md +72 -0
- package/agents/researcher.md +51 -0
- package/agents/reviewer-claude.md +69 -0
- package/agents/reviewer-gpt.md +68 -0
- package/agents/reviewer-ponytail.md +82 -0
- package/agents/reviewer-security.md +81 -0
- package/agents/reviewer.md +69 -0
- package/agents/scout.md +66 -0
- package/agents/ui-designer.md +51 -0
- package/agents/watcher.md +26 -0
- package/agents/worker.md +46 -0
- package/agents/writer.md +36 -0
- package/dist/agents/agent-management.js +923 -0
- package/dist/agents/agent-scope.js +7 -0
- package/dist/agents/agent-selection.js +20 -0
- package/dist/agents/agent-serializer.js +100 -0
- package/dist/agents/agents.js +752 -0
- package/dist/agents/chain-serializer.js +367 -0
- package/dist/agents/frontmatter.js +21 -0
- package/dist/agents/identity.js +29 -0
- package/dist/agents/skills.js +570 -0
- package/dist/extension/build-info.js +1 -0
- package/dist/extension/compact-tools.js +112 -0
- package/dist/extension/config.js +22 -0
- package/dist/extension/control-notices.js +29 -0
- package/dist/extension/doctor.js +143 -0
- package/dist/extension/fanout-child.js +326 -0
- package/dist/extension/index.js +577 -0
- package/dist/extension/schemas.js +416 -0
- package/dist/extension/tool-input.js +20 -0
- package/dist/extension/tool-result.js +14 -0
- package/dist/history/canonical-result.js +81 -0
- package/dist/history/database.js +72 -0
- package/dist/history/index.js +199 -0
- package/dist/history/ingest.js +468 -0
- package/dist/history/queries.js +350 -0
- package/dist/history/store.js +216 -0
- package/dist/history/types.js +4 -0
- package/dist/history/worker.js +466 -0
- package/dist/intercom/intercom-bridge.js +112 -0
- package/dist/intercom/live-intercom.js +94 -0
- package/dist/intercom/result-intercom.js +373 -0
- package/dist/pi-intercom/agent-dir.js +10 -0
- package/dist/pi-intercom/bridge.js +750 -0
- package/dist/pi-intercom/broker/broker.js +426 -0
- package/dist/pi-intercom/broker/client.js +492 -0
- package/dist/pi-intercom/broker/framing.js +65 -0
- package/dist/pi-intercom/broker/paths.js +42 -0
- package/dist/pi-intercom/broker/pid.js +66 -0
- package/dist/pi-intercom/broker/spawn.js +221 -0
- package/dist/pi-intercom/config.js +102 -0
- package/dist/pi-intercom/index.js +2942 -0
- package/dist/pi-intercom/reply-tracker.js +182 -0
- package/dist/pi-intercom/session-targets.js +128 -0
- package/dist/pi-intercom/subagent-live-events.js +132 -0
- package/dist/pi-intercom/topics.js +157 -0
- package/dist/pi-intercom/types.js +163 -0
- package/dist/pi-intercom/ui/compose.js +269 -0
- package/dist/pi-intercom/ui/inline-message.js +80 -0
- package/dist/pi-intercom/ui/session-list.js +124 -0
- package/dist/runs/background/async-control.js +95 -0
- package/dist/runs/background/async-execution.js +676 -0
- package/dist/runs/background/async-job-tracker.js +383 -0
- package/dist/runs/background/async-result-file.js +58 -0
- package/dist/runs/background/async-resume.js +305 -0
- package/dist/runs/background/async-status.js +442 -0
- package/dist/runs/background/completion-dedupe.js +69 -0
- package/dist/runs/background/completion-delivery.js +245 -0
- package/dist/runs/background/notify.js +71 -0
- package/dist/runs/background/parallel-groups.js +55 -0
- package/dist/runs/background/result-watcher.js +426 -0
- package/dist/runs/background/run-id-resolver.js +64 -0
- package/dist/runs/background/run-status.js +382 -0
- package/dist/runs/background/stale-run-reconciler.js +335 -0
- package/dist/runs/background/subagent-runner-launcher.js +55 -0
- package/dist/runs/background/subagent-runner.js +1872 -0
- package/dist/runs/background/top-level-async.js +5 -0
- package/dist/runs/foreground/chain-clarify.js +1152 -0
- package/dist/runs/foreground/clarify-invocation.js +72 -0
- package/dist/runs/foreground/execution-input.js +423 -0
- package/dist/runs/foreground/foreground-control.js +817 -0
- package/dist/runs/foreground/question-control.js +88 -0
- package/dist/runs/foreground/run-async-path.js +205 -0
- package/dist/runs/foreground/subagent-executor.js +442 -0
- package/dist/runs/foreground/subagent-params.js +165 -0
- package/dist/runs/foreground/wait-run.js +141 -0
- package/dist/runs/shared/acceptance-contract.js +253 -0
- package/dist/runs/shared/acceptance-evaluation.js +256 -0
- package/dist/runs/shared/acceptance-finalization.js +280 -0
- package/dist/runs/shared/acceptance-reports.js +147 -0
- package/dist/runs/shared/acceptance.js +4 -0
- package/dist/runs/shared/chain-outputs.js +110 -0
- package/dist/runs/shared/child-attempt.js +693 -0
- package/dist/runs/shared/child-execution-cwd.js +96 -0
- package/dist/runs/shared/child-observations.js +114 -0
- package/dist/runs/shared/claude-code.js +199 -0
- package/dist/runs/shared/completion-guard.js +31 -0
- package/dist/runs/shared/dynamic-fanout.js +274 -0
- package/dist/runs/shared/history-index.js +72 -0
- package/dist/runs/shared/mcp-direct-tool-allowlist.js +334 -0
- package/dist/runs/shared/model-fallback.js +185 -0
- package/dist/runs/shared/mutating-tool-guard.js +170 -0
- package/dist/runs/shared/native-finalization.js +101 -0
- package/dist/runs/shared/native-usage.js +153 -0
- package/dist/runs/shared/nested-events.js +700 -0
- package/dist/runs/shared/nested-path.js +48 -0
- package/dist/runs/shared/nested-render.js +108 -0
- package/dist/runs/shared/parallel-utils.js +61 -0
- package/dist/runs/shared/parent-receipts.js +68 -0
- package/dist/runs/shared/parent-usage.js +121 -0
- package/dist/runs/shared/pi-args.js +310 -0
- package/dist/runs/shared/pi-spawn.js +52 -0
- package/dist/runs/shared/run-history-queries.js +45 -0
- package/dist/runs/shared/run-history.js +110 -0
- package/dist/runs/shared/run-id-ambiguity.js +4 -0
- package/dist/runs/shared/run-records.js +679 -0
- package/dist/runs/shared/session-cwd-preload.js +33 -0
- package/dist/runs/shared/single-output.js +222 -0
- package/dist/runs/shared/streaming-text.js +15 -0
- package/dist/runs/shared/structured-output.js +55 -0
- package/dist/runs/shared/subagent-control.js +179 -0
- package/dist/runs/shared/subagent-prompt-runtime.js +197 -0
- package/dist/runs/shared/subagent-tool-loop-guard.js +66 -0
- package/dist/runs/shared/supervisor-questions.js +350 -0
- package/dist/runs/shared/workflow-graph.js +214 -0
- package/dist/runs/shared/workflow-policy.js +84 -0
- package/dist/runs/shared/worktree.js +525 -0
- package/dist/shared/agent-context-policy.js +126 -0
- package/dist/shared/artifacts.js +96 -0
- package/dist/shared/atomic-json.js +13 -0
- package/dist/shared/cooperative.js +20 -0
- package/dist/shared/execution-cwd.js +14 -0
- package/dist/shared/file-coalescer.js +21 -0
- package/dist/shared/fork-context.js +49 -0
- package/dist/shared/formatters.js +85 -0
- package/dist/shared/journal-reader.js +407 -0
- package/dist/shared/lazy-tools.js +32 -0
- package/dist/shared/model-info.js +68 -0
- package/dist/shared/native-session.js +15 -0
- package/dist/shared/native-tui.js +18 -0
- package/dist/shared/native-typebox.js +20 -0
- package/dist/shared/post-exit-stdio-guard.js +197 -0
- package/dist/shared/prompt-sections.js +8 -0
- package/dist/shared/session-entries.js +52 -0
- package/dist/shared/session-identity.js +14 -0
- package/dist/shared/settings.js +254 -0
- package/dist/shared/status-format.js +111 -0
- package/dist/shared/temp-root.js +114 -0
- package/dist/shared/types.js +207 -0
- package/dist/shared/ui-mode.js +3 -0
- package/dist/shared/utils.js +334 -0
- package/dist/slash/prompt-template-bridge.js +298 -0
- package/dist/slash/slash-bridge.js +116 -0
- package/dist/slash/slash-commands.js +607 -0
- package/dist/slash/slash-live-state.js +246 -0
- package/dist/tui/action-hints.js +75 -0
- package/dist/tui/agent-history.js +197 -0
- package/dist/tui/agent-view.js +1656 -0
- package/dist/tui/render.js +1515 -0
- package/docs/intercom-bridge.md +212 -0
- package/docs/intercom.md +581 -0
- package/docs/performance.md +121 -0
- package/package.json +102 -4
- package/prompts/gather-context-and-clarify.md +14 -0
- package/prompts/parallel-cleanup.md +62 -0
- package/prompts/parallel-context-build.md +56 -0
- package/prompts/parallel-handoff-plan.md +62 -0
- package/prompts/parallel-research.md +51 -0
- package/prompts/parallel-review.md +59 -0
- package/prompts/review-loop.md +42 -0
- package/scripts/build.mjs +134 -0
- package/scripts/check-compat.mjs +48 -0
- package/scripts/compat-host.mjs +19 -0
- package/scripts/intercom-bridge-credentials.mjs +143 -0
- package/scripts/intercom-remote.mjs +103 -0
- package/scripts/linux-smoke.sh +51 -0
- package/scripts/local-install-smoke.mjs +66 -0
- package/scripts/native-package-smoke.mjs +82 -0
- package/scripts/package-smoke.mjs +209 -0
- package/scripts/prepare.mjs +67 -0
- package/scripts/real-pi-smoke.mjs +415 -0
- package/scripts/run-tests.mjs +149 -0
- package/skills/pi-intercom/SKILL.md +113 -0
- package/skills/pi-intercom/evals/evals.json +29 -0
- package/skills/pi-intercom/evals/trigger-evals.json +47 -0
- package/skills/pi-intercom/references/peer-sessions.md +69 -0
- package/skills/pi-subagents/SKILL.md +76 -0
- package/skills/pi-subagents/evals/evals.json +29 -0
- package/skills/pi-subagents/evals/trigger-evals.json +42 -0
- package/skills/pi-subagents/references/full-orchestration-guide.md +863 -0
- package/src/agents/agent-management.ts +813 -0
- package/src/agents/agent-scope.ts +7 -0
- package/src/agents/agent-selection.ts +23 -0
- package/src/agents/agent-serializer.ts +99 -0
- package/src/agents/agents.ts +916 -0
- package/src/agents/chain-serializer.ts +329 -0
- package/src/agents/frontmatter.ts +21 -0
- package/src/agents/identity.ts +30 -0
- package/src/agents/skills.ts +637 -0
- package/src/extension/build-info.ts +2 -0
- package/src/extension/compact-tools.ts +114 -0
- package/src/extension/config.ts +23 -0
- package/src/extension/control-notices.ts +47 -0
- package/src/extension/doctor.ts +171 -0
- package/src/extension/fanout-child.ts +312 -0
- package/src/extension/index.ts +649 -0
- package/src/extension/schemas.ts +444 -0
- package/src/extension/tool-input.ts +19 -0
- package/src/extension/tool-result.ts +16 -0
- package/src/history/canonical-result.ts +62 -0
- package/src/history/database.ts +59 -0
- package/src/history/index.ts +156 -0
- package/src/history/ingest.ts +349 -0
- package/src/history/queries.ts +241 -0
- package/src/history/store.ts +203 -0
- package/src/history/types.ts +166 -0
- package/src/history/worker.ts +321 -0
- package/src/intercom/intercom-bridge.ts +123 -0
- package/src/intercom/live-intercom.ts +104 -0
- package/src/intercom/result-intercom.ts +429 -0
- package/src/pi-intercom/agent-dir.ts +9 -0
- package/src/pi-intercom/bridge.ts +668 -0
- package/src/pi-intercom/broker/broker.ts +463 -0
- package/src/pi-intercom/broker/client.ts +558 -0
- package/src/pi-intercom/broker/framing.ts +77 -0
- package/src/pi-intercom/broker/paths.ts +47 -0
- package/src/pi-intercom/broker/pid.ts +59 -0
- package/src/pi-intercom/broker/spawn.ts +248 -0
- package/src/pi-intercom/config.ts +142 -0
- package/src/pi-intercom/index.ts +2929 -0
- package/src/pi-intercom/reply-tracker.ts +211 -0
- package/src/pi-intercom/session-targets.ts +172 -0
- package/src/pi-intercom/subagent-live-events.ts +133 -0
- package/src/pi-intercom/topics.ts +125 -0
- package/src/pi-intercom/types.ts +271 -0
- package/src/pi-intercom/ui/compose.ts +289 -0
- package/src/pi-intercom/ui/inline-message.ts +92 -0
- package/src/pi-intercom/ui/session-list.ts +139 -0
- package/src/runs/background/async-control.ts +89 -0
- package/src/runs/background/async-execution.ts +850 -0
- package/src/runs/background/async-job-tracker.ts +385 -0
- package/src/runs/background/async-result-file.ts +62 -0
- package/src/runs/background/async-resume.ts +333 -0
- package/src/runs/background/async-status.ts +481 -0
- package/src/runs/background/completion-dedupe.ts +79 -0
- package/src/runs/background/completion-delivery.ts +195 -0
- package/src/runs/background/notify.ts +123 -0
- package/src/runs/background/parallel-groups.ts +53 -0
- package/src/runs/background/result-watcher.ts +423 -0
- package/src/runs/background/run-id-resolver.ts +69 -0
- package/src/runs/background/run-status.ts +384 -0
- package/src/runs/background/stale-run-reconciler.ts +369 -0
- package/src/runs/background/subagent-runner-launcher.ts +56 -0
- package/src/runs/background/subagent-runner.ts +2053 -0
- package/src/runs/background/top-level-async.ts +13 -0
- package/src/runs/foreground/chain-clarify.ts +1340 -0
- package/src/runs/foreground/clarify-invocation.ts +77 -0
- package/src/runs/foreground/execution-input.ts +467 -0
- package/src/runs/foreground/foreground-control.ts +821 -0
- package/src/runs/foreground/question-control.ts +82 -0
- package/src/runs/foreground/run-async-path.ts +243 -0
- package/src/runs/foreground/subagent-executor.ts +501 -0
- package/src/runs/foreground/subagent-params.ts +320 -0
- package/src/runs/foreground/wait-run.ts +124 -0
- package/src/runs/shared/acceptance-contract.ts +257 -0
- package/src/runs/shared/acceptance-evaluation.ts +275 -0
- package/src/runs/shared/acceptance-finalization.ts +353 -0
- package/src/runs/shared/acceptance-reports.ts +152 -0
- package/src/runs/shared/acceptance.ts +33 -0
- package/src/runs/shared/chain-outputs.ts +114 -0
- package/src/runs/shared/child-attempt.ts +623 -0
- package/src/runs/shared/child-execution-cwd.ts +91 -0
- package/src/runs/shared/child-observations.ts +99 -0
- package/src/runs/shared/claude-code.ts +243 -0
- package/src/runs/shared/completion-guard.ts +35 -0
- package/src/runs/shared/dynamic-fanout.ts +295 -0
- package/src/runs/shared/history-index.ts +69 -0
- package/src/runs/shared/mcp-direct-tool-allowlist.ts +376 -0
- package/src/runs/shared/model-fallback.ts +219 -0
- package/src/runs/shared/mutating-tool-guard.ts +194 -0
- package/src/runs/shared/native-finalization.ts +128 -0
- package/src/runs/shared/native-usage.ts +113 -0
- package/src/runs/shared/nested-events.ts +752 -0
- package/src/runs/shared/nested-path.ts +52 -0
- package/src/runs/shared/nested-render.ts +119 -0
- package/src/runs/shared/parallel-utils.ts +153 -0
- package/src/runs/shared/parent-receipts.ts +59 -0
- package/src/runs/shared/parent-usage.ts +121 -0
- package/src/runs/shared/pi-args.ts +350 -0
- package/src/runs/shared/pi-spawn.ts +52 -0
- package/src/runs/shared/run-history-queries.ts +44 -0
- package/src/runs/shared/run-history.ts +100 -0
- package/src/runs/shared/run-id-ambiguity.ts +4 -0
- package/src/runs/shared/run-records.ts +607 -0
- package/src/runs/shared/session-cwd-preload.ts +27 -0
- package/src/runs/shared/single-output.ts +267 -0
- package/src/runs/shared/streaming-text.ts +18 -0
- package/src/runs/shared/structured-output.ts +68 -0
- package/src/runs/shared/subagent-control.ts +219 -0
- package/src/runs/shared/subagent-prompt-runtime.ts +201 -0
- package/src/runs/shared/subagent-tool-loop-guard.ts +89 -0
- package/src/runs/shared/supervisor-questions.ts +415 -0
- package/src/runs/shared/workflow-graph.ts +220 -0
- package/src/runs/shared/workflow-policy.ts +125 -0
- package/src/runs/shared/worktree.ts +635 -0
- package/src/shared/agent-context-policy.ts +184 -0
- package/src/shared/artifacts.ts +95 -0
- package/src/shared/atomic-json.ts +16 -0
- package/src/shared/cooperative.ts +21 -0
- package/src/shared/execution-cwd.ts +14 -0
- package/src/shared/file-coalescer.ts +29 -0
- package/src/shared/fork-context.ts +68 -0
- package/src/shared/formatters.ts +84 -0
- package/src/shared/journal-reader.ts +333 -0
- package/src/shared/lazy-tools.ts +36 -0
- package/src/shared/model-info.ts +81 -0
- package/src/shared/native-session.ts +8 -0
- package/src/shared/native-tui.ts +10 -0
- package/src/shared/native-typebox.ts +14 -0
- package/src/shared/post-exit-stdio-guard.ts +204 -0
- package/src/shared/prompt-sections.ts +10 -0
- package/src/shared/session-entries.ts +49 -0
- package/src/shared/session-identity.ts +18 -0
- package/src/shared/settings.ts +384 -0
- package/src/shared/status-format.ts +123 -0
- package/src/shared/temp-root.ts +107 -0
- package/src/shared/types.ts +1260 -0
- package/src/shared/ui-mode.ts +5 -0
- package/src/shared/utils.ts +342 -0
- package/src/slash/prompt-template-bridge.ts +408 -0
- package/src/slash/slash-bridge.ts +178 -0
- package/src/slash/slash-commands.ts +617 -0
- package/src/slash/slash-live-state.ts +292 -0
- package/src/tui/action-hints.ts +69 -0
- package/src/tui/agent-history.ts +210 -0
- package/src/tui/agent-view.ts +1323 -0
- package/src/tui/render.ts +1550 -0
- package/tsconfig.build.json +12 -0
- package/tsconfig.json +19 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,1654 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.44.5] - 2026-10-08
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Optional loopback-only mTLS Intercom HTTPS bridge over SSH reverse forwarding, with certificate-bound remote peer identity, bounded messaging/inbox API, metadata audit logs, remote CLI, and credential issue/rotation/revocation tooling. The same-machine broker and extension startup remain unchanged.
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
- Keep supervisor-question tool results bounded: page compact question/answer previews without repeating frozen launch metadata or native attempt baselines. Full question, interview and immutable answer files remain available; answering, cancellation and revival retain their original durable contracts.
|
|
10
|
+
- Keep the history worker's cost per child append proportional to the new bytes. It used to re-hash every indexed byte of a linked session on each change, so a live child writing to a source of several hundred megabytes held the worker at full CPU for hours. Each check now re-hashes the last indexed line. Replacement, truncation and in-place rewrites of that line still start a new generation, and detail reads still verify their record digests. Indexes from earlier releases are verified in full once and then switch to the bounded check without re-indexing.
|
|
11
|
+
|
|
12
|
+
## [0.44.4] - 2026-10-04
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- Publish the maintained project as `@fitchmultz/pi-subagents` with public npm delivery from its repository pipeline. The unscoped npm package is unrelated; existing Git installs and release refs remain supported.
|
|
16
|
+
- Discover specialist profiles declared by configured packages through `subagents.agents`. Package profiles are read-only fallbacks between builtins and user/trusted-project overrides, including installed `@fitchmultz/pi-workflows` recipes. User-installed package skills remain available even in untrusted projects; project skill sources stay trust-gated.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Resolve latest stable official Pi and maintained fork main once per qualification run, retaining native, Git production-build, packed-install and full CI contracts without below-floor skip routes.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- Admit cold WAL conversion through SQLite's native writer lock so a briefly overlapping writer no longer causes a lost timing sample; preserve the existing bounded timeout, private storage and per-agent retention bounds.
|
|
23
|
+
- Ignore delayed native filesystem hints for an already indexed physical source and replace stale directory watches before publishing catch-up readiness, preserving real pending work, forced refreshes and changed/deleted source recovery.
|
|
24
|
+
- Preserve timing samples and history writes when SQLite removes another connection's WAL sidecars during a cold open, without relaxing file permissions or storage-error handling.
|
|
25
|
+
- Keep the selected Agents report visible when a background metadata refresh completes while its saved history is loading, preserving full reports, reading positions and stale-request guards.
|
|
26
|
+
- Join in-flight Intercom startup and reconnect attempts before session shutdown completes, without stopping a broker shared by other sessions.
|
|
27
|
+
- Keep Agents history responsive on Linux when many unrelated run directories exist: recursively watch only admitted run directories and recover live updates after an owned run directory is deleted or recreated.
|
|
28
|
+
|
|
29
|
+
## [0.44.3] - 2026-10-02
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
- Remove the resource-ownership footer for held, released and disconnected topics. Current ownership remains available through `/intercom topics` and the Intercom tool; publication, subscriptions, saved state and release notifications are unchanged.
|
|
33
|
+
|
|
34
|
+
## [0.44.2] - 2026-10-02
|
|
35
|
+
|
|
36
|
+
### Changed
|
|
37
|
+
- Simplify internal runtime boundaries by removing obsolete test-only exports and dependency-injection paths. Supported delegation, controls, receipts, continuation, shutdown and broker behavior are unchanged.
|
|
38
|
+
- Audit the full test surface: retain meaningful native and security contracts, consolidate duplicate mock/helper layers, and check actual publication, readiness and rendered output. Isolate each native test process's storage so parallel fixtures cannot remove another runner's results.
|
|
39
|
+
|
|
40
|
+
## [0.44.1] - 2026-10-02
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
- Keep saved-run browsing and Agents history available for deeply branched native sessions. Traverse each child’s indexed ancestry before joining its messages, avoiding repeated whole-index scans without changing branch selection, history boundaries, privacy or billing.
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
- Clarify the performance guide’s full-step and per-step `maxItems` alternatives.
|
|
47
|
+
- Update development tooling to Node 24.21.0 typings and TypeBox 1.3.34 with a regenerated lockfile; runtime Pi and TypeBox remain optional host-provided peers.
|
|
48
|
+
|
|
49
|
+
## [0.44.0] - 2026-10-01
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- Browse owned saved runs through an off-thread private SQLite index: global task/agent/state filters, attention/newest/oldest ordering, bounded cursors, native history pages and lexical visible-text search. Index observations report catch-up/degraded freshness and never replace canonical ownership, controls, receipts or billing evidence.
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
- Load the Agents picker in 50-run pages and selected conversations in 100-physical-record pages. Retain full-assignment filtering, full validated reports/details/Reply, drafts, saved/unread anchors, exact-child controls and same-parent reload. Explicit history navigation supersedes stale loads; unavailable detail notices cannot become quoted evidence.
|
|
56
|
+
- Require Pi 1.0.0 and Node 24.21.0. Pin the coherent official development cohort while keeping Pi packages optional runtime peers; runtime-only SDK and bundled CLI installations need no private Pi copy.
|
|
57
|
+
- Remove retired fork checkpoint, immediate-usage, metadata/revision, sibling-branch and native pending-call branches. Keep durable detached owners, saved questions/results/delivery and legacy usage deduplication. Attribute new child usage only through finalized native tool results.
|
|
58
|
+
- Use native default-active declarations and a narrow initial-SDK-resume restoration fallback without overriding native reload/tree selection or explicit exclusions. Fork CI reports below-floor hosts as unattempted, not supported qualifications.
|
|
59
|
+
- Share verified parent receipt snapshots within synchronous recovery batches only, refreshing after appends and never across awaits. Poll visited terminal Agents metadata only when relevant or changed, retaining drafts, unread/results and full selected history.
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
- Preserve every admitted completion notification while any native pending batch remains, including multiple completions retained across abort and reload. A next-batch preview cannot cause a watcher resend; matching published receipts retire consumed identities, and genuinely empty queues allow recovery. Individual removal while other queue items remain is unobservable, so ambiguous admissions stay pending.
|
|
63
|
+
- Retain legacy-only completion files until matching verified parent publication, not native queue admission. Recover an accepted but unpersisted completion after a process crash without replaying a published receipt or fabricating run ownership.
|
|
64
|
+
- Keep session startup responsive while recovering saved runs, unanswered questions and Intercom receipts. Replay recovery and queued message delivery in small batches and use asynchronous retention cleanup without changing ownership, verified delivery or the host's performance-warning budget. Preserve directory snapshots, session-name registration and in-flight completions across asynchronous startup and shutdown.
|
|
65
|
+
- Keep production-only history workers free of parent-only fork imports and resolve terminal stripping through the selected host, without loading another Pi runtime into the parent. Keep unavailable history quiet during background refreshes, with explicit F5 or run-list/history/search retries.
|
|
66
|
+
- Serialize shared history staging across processes, verify publication before advancing cursors, and rebuild older derived indexes that may have omitted records. Recover interrupted writers without lock-file expiry or changing native journals.
|
|
67
|
+
- Tokenize search after streaming terminal-sequence removal. Match unquoted words across a whole native record, retain contiguous quoted phrases, and page one excerpt per matching record/child attempt.
|
|
68
|
+
- Restore the picker’s visible filter on reopen and keep the settled idle dock hidden during background refresh.
|
|
69
|
+
- Keep the canonical saved report visible after Latest navigation and reopen when its matching native answer is outside the loaded history page, without duplicating page-visible answers.
|
|
70
|
+
- Keep growing historical source scans and searches off the interactive event loop. Bound preview structure and selected full-record/output reads, reject changed references, preserve LF publication and atomic index progress, and recover corrupt browse generations without rewriting journals or adopting unrelated archives.
|
|
71
|
+
- Keep completed-attempt search inside its saved terminal/time boundary when a continuation shares the native file. Distinguish human delivery from a nonempty assistant reply and preserve sparse-child canonical result selection.
|
|
72
|
+
- Stop timing-history readers from erasing concurrent writes or another agent's samples. Serialize writer-side import/insertion/per-agent latest-1,000 retention in SQLite, bound legacy reads to 1 MiB and leave the old JSONL untouched. Retry concurrent first-open WAL conversion within a bounded budget.
|
|
73
|
+
- Restore actionable run controls before the first native request, without exposing them for a rejected delegation or reviewed inert history. Dispose the owned history process across reload/session replacement and wait for exit before respawning.
|
|
74
|
+
|
|
75
|
+
## [0.43.1] - 2026-09-30
|
|
76
|
+
|
|
77
|
+
### Changed
|
|
78
|
+
- Pin the development Pi cohort to 0.99.1 and selected-host TypeBox 1.3.27; preserve optional runtime peers, Node 24 and durable formats. Document current public checkpoints/usage separately from legacy retired pending-call execution.
|
|
79
|
+
- Keep native journal/model/streaming checks independent of mutable catalog entries and account for early host metadata persistence and fork discovery tools.
|
|
80
|
+
- Make profile model/thinking defaults visible in ordinary discovery and document warranted per-run overrides as `model: "provider/model:high"`. Explicit overrides pin the route and effort without profile fallbacks; ordinary launches retain configured backups. Saved continuations preserve that policy, while explicitly selecting a current profile adopts its current model, thinking and fallbacks.
|
|
81
|
+
- Align packaged role profiles with the maintainer's personal defaults, using GPT-6.1 Sol at high effort for scout/writer/delegate and xhigh for context-builder/fixer/Ponytail review, Luna for watching, Astra for security review, and Opus for independent Claude review. Editable user/project overrides still take precedence. Consolidate runtime coordination mechanics in the extension and require exact relevant owner instructions, settled decisions or readable source references in fresh-child handoffs.
|
|
82
|
+
|
|
83
|
+
### Fixed
|
|
84
|
+
- Stop rebuilding completed Agents histories and formatting collapsed tool details on every background refresh. Skip superseded continuations, cache terminal boundaries and unchanged corrupt sources, and bound conversation components to the displayed page while preserving full history, replies, drafts, pinning, transient-I/O recovery, and explicit details.
|
|
85
|
+
- Consume new native observations and index message identities instead of repeatedly scanning growing child transcripts. Preserve inherited billing boundaries and exclude baseline messages from the current attempt's observation matching.
|
|
86
|
+
- Check acceptance-boundary readiness before filtering accumulated messages. Keep durable nested-event deduplication for every retained event, and project nested state only once per job poll.
|
|
87
|
+
- Skip repeated decoding of unchanged foreign results and filesystem probes for already delivered and billed runs. Share verified completion/accounting receipts and incrementally index parent call and billing metadata without treating queue acceptance as persistence.
|
|
88
|
+
- Keep session resume responsive when reconciling many completed subagents: reuse compact published completion and billing receipts, inspect only appended records after validating the existing journal, let the terminal handle input between recovery scans, and refresh only changed Agents views.
|
|
89
|
+
- Keep subagent controls and historical previews independent of large transcript bodies. Token-frame native journals and child stdout, reference committed native messages, retain once-stored uncommitted audit data, and page history/output previews. Preserve execution and acceptance when accounting fails; reconcile billing and persisted completion identities without repeating work or treating queue acceptance as delivery.
|
|
90
|
+
- Accept npm 12's keyed `npm pack --json` records as well as npm 11 arrays in the package smoke, without weakening packed-resource or native runtime checks.
|
|
91
|
+
- Declare TypeBox as a host-provided peer instead of installing a private runtime copy. Compiled extensions and detached subagent runners use the selected Pi installation's TypeBox, avoiding startup dependency warnings without breaking background launches.
|
|
92
|
+
- Keep provider prompt caches intact during background delegation on native-async models. Background launches and background `continue`/`answer` controls return an immediate receipt instead of holding the native async tool call open, and completion arrives as one appended wake-up notification for both top-level sessions and nested children, including after the owner reopens. A late native result is admitted at its original call position, so the provider stopped reading the cache at that call. Foreground waits, other run controls, and recovery of native calls already in flight are unchanged.
|
|
93
|
+
|
|
94
|
+
## [0.43.0] - 2026-09-27
|
|
95
|
+
|
|
96
|
+
### Changed
|
|
97
|
+
- Keep fresh coordination schemas lean: delegation exposes run controls automatically; `load_subagent({ advanced: false })` discovers profiles/history without the advanced schema, and `load_intercom({})` enables peer coordination explicitly. Restore controls for actionable owned work and peer reply needs while preserving broker presence, full schemas, native selection, tool policies, and managed-child supervisor contact.
|
|
98
|
+
|
|
99
|
+
## [0.42.1] - 2026-09-26
|
|
100
|
+
|
|
101
|
+
### Changed
|
|
102
|
+
- Avoid unnecessary peer-listing model rounds for routine standalone read-only tasks. Keep coordination guidance before shared-state changes or known overlapping work, with unchanged count-free prompt caching, broker presence, message delivery, approvals, and child recovery on official Pi 0.87.1 and the fork.
|
|
103
|
+
|
|
104
|
+
## [0.42.0] - 2026-09-26
|
|
105
|
+
|
|
106
|
+
### Breaking Changes
|
|
107
|
+
- Require Node 24 or later. CI and the shared compatibility fleet qualify only Node 24.
|
|
108
|
+
|
|
109
|
+
### Changed
|
|
110
|
+
- Install and update from Git without downloading Pi's development graph: the `prepare` lifecycle now installs only the pinned TypeScript compiler into a temporary directory and emits without typechecking, instead of installing and pruning the full Pi development graph. Emitted `dist/` is byte-identical. Typechecking moved to `npm run typecheck`, `check:compat`, and CI.
|
|
111
|
+
- Build and typecheck with TypeScript 7.0.2 targeting ES2025. `verbatimModuleSyntax` and `erasableSyntaxOnly` now enforce the syntax Node's type stripping runs.
|
|
112
|
+
- Develop and qualify against official Pi 0.87.1 and the `fitchmultz/pi` fork at `06a19597`, with `typebox` 1.3.34 and `@types/node` 24.19.0. Renovate keeps `@types/node` on 24.x.
|
|
113
|
+
- Regenerate the lockfile from scratch with only public npm registry URLs, and drop the obsolete `brace-expansion` and `ws` overrides and the unused `packageManager` pin.
|
|
114
|
+
|
|
115
|
+
## [0.41.0] - 2026-09-25
|
|
116
|
+
|
|
117
|
+
### Changed
|
|
118
|
+
- Sync bundled role routing with the maintainer's active profiles. Every role except `reviewer-claude` and `delegate` now prefers GPT-6 Astra through a ChatGPT/Codex subscription (`openai-codex`) at medium thinking, falling back to the OpenAI API route, so either account works. `reviewer-claude` uses Claude Opus 5.5 at high thinking, falling back to Fable 5.1 and then Cloudflare AI Gateway Opus 5, the newest Claude that official Pi's gateway catalog names with a working id. Unknown gateway ids are not skipped on official Pi, so the chain avoids them.
|
|
119
|
+
- Start delegation-enabled children with compact `delegate`, `agent_runs`, and `load_subagent` tools. Full advanced workflows load on demand, explicit `tools: subagent` profiles stay eager, and `compactChildTools: false` restores the prior child surface. Nested execution defaults, permissions, durable ownership, and native result accounting are preserved.
|
|
120
|
+
- Stop writing streaming `message_update` deltas and cumulative `tool_execution_update` progress to durable `events.jsonl` run records. They were most of the record volume, and final `message_end` and `tool_execution_end` events still record the same content. In-process event consumers still receive every event.
|
|
121
|
+
|
|
122
|
+
### Fixed
|
|
123
|
+
- Stop treating `~/.pi` agents, chains and settings as project resources for directories below home. Like Pi, they apply only when the cwd is home itself; stray files there previously replaced built-in agents such as `delegate` in every project without its own `.pi`.
|
|
124
|
+
- Reserve Intercom's reply waiter before sending concurrent asks, so a rejected contender neither sends its question nor cancels the active wait.
|
|
125
|
+
- Include the current run ID and predecessor in final continuation and answer results, including recovered native waits.
|
|
126
|
+
- Recheck idle attention at delivery boundaries and omit notices for finished children from model context, preserving raw history, unresolved questions, and completion-guard findings.
|
|
127
|
+
- Keep the advanced delegation tool active while a native call awaits recovery, so lazy activation does not strand its original result after restart or context navigation.
|
|
128
|
+
- Bound ambiguous run-ID errors to five candidate previews and the total match count, preserving full-ID lookup and saved history.
|
|
129
|
+
- Preserve requested reports before worktree cleanup and return their durable paths, including file-only runs with debug artifacts disabled.
|
|
130
|
+
- Keep nested helpers from inheriting their parent's structured-output capture.
|
|
131
|
+
- Deliver whole-run completion after child-specific native calls finish, while retaining pending whole-run result ownership.
|
|
132
|
+
- Let Stop terminate recorded live children after their background runner exits, while preserving selected-child control and checking process identity.
|
|
133
|
+
- Keep workspace tests on the child's code by leaving dependency installation to its package manager or setup hook instead of sharing the original checkout's `node_modules`.
|
|
134
|
+
- Preserve binary edits in worktree patches even when Git text conversions are configured.
|
|
135
|
+
- Preserve absolute default report files when continuations explicitly select the profile's output.
|
|
136
|
+
- Stop setup-hook descendants after a timeout or process failure before removing their worktree.
|
|
137
|
+
- Let Claude models use `delegate` and `agent_runs` by sending their bounded integer parameters without provider-side strict sampling.
|
|
138
|
+
- Preserve acceptance checks, working directories, and inherited tasks on sequential steps launched from saved chains with `/run-chain`.
|
|
139
|
+
- Preserve absolute agent-default output files after inline chain and parallel runs instead of cleaning them up as temporary files.
|
|
140
|
+
- Prevent worktree diff capture from deleting files outside the worktree through symlinked synthetic paths.
|
|
141
|
+
- Preserve isolated worktrees when the runner throws before saving their patches, preventing loss of uncommitted edits.
|
|
142
|
+
- Preserve Markdown headings inside saved chain tasks when creating or updating workflows, instead of interpreting them as additional agent steps.
|
|
143
|
+
- Stop an Intercom broker that no session ever registers with, such as one whose spawning session exited during startup, instead of leaving it running indefinitely.
|
|
144
|
+
|
|
145
|
+
## [0.40.1] - 2026-09-22
|
|
146
|
+
|
|
147
|
+
### Fixed
|
|
148
|
+
- Restore owned runs from lightweight ownership metadata and shared decoded records, avoiding full reads of unrelated history while retaining legacy recovery and late-published runs.
|
|
149
|
+
- Keep restored ownership and controls ready for immediate native tool resume, including nested children.
|
|
150
|
+
- Reuse native transcript snapshots for Agents status, model selection, unread markers, and conversation history. Format full conversations when opened, retaining all saved messages, tool details, and reading positions.
|
|
151
|
+
- Use already-read per-run question state in Agents instead of repeatedly searching every saved run.
|
|
152
|
+
- Keep foreground and native asynchronous waits responsive without repeatedly parsing child conversations or formatting unchanged inspection results on every poll.
|
|
153
|
+
|
|
154
|
+
## [0.40.0] - 2026-09-22
|
|
155
|
+
|
|
156
|
+
### Changed
|
|
157
|
+
- Use one durable detached owner for single, parallel, chain, and continued runs, with a shared Pi JSON CLI/Claude Code child-attempt lifecycle. Foreground calls now wait on the same saved work instead of using separate execution engines.
|
|
158
|
+
- Keep Pi acceptance self-review in the same child process and submit a typed answer/report. Retain current-attempt evidence, bounded repair, human-only blockers, and cancellable owner-run verification when configured.
|
|
159
|
+
- Give everyday delegation/control tools strict-compatible acceptance criteria and environment fields while retaining arbitrary schemas and detailed overrides in the lazy advanced tool.
|
|
160
|
+
- Store new runs in canonical persistent version-2 records. Preserve native history, saved launch choices, per-child evidence, durable questions, and read access to legacy runs while old owners finish.
|
|
161
|
+
- Use native prompt sections and allow delegation-enabled children to use useful helpers within their assigned scope and depth limit. Retain their tool history; bundled profiles remain leaf-only.
|
|
162
|
+
|
|
163
|
+
### Added
|
|
164
|
+
- Optional native asynchronous results bound to the original pending call across parent restart, compaction, and branch navigation, gated by actual host/model capability. Portable receipts and abort-aware waiting remain available; native delivery suppresses duplicate completion notices.
|
|
165
|
+
- Idempotent parent usage contributions on hosts with `recordUsage`, with once-only finalized tool-result accounting on portable hosts. Inspection stays read-only; inherited history and nested usage are not counted twice.
|
|
166
|
+
|
|
167
|
+
## [0.39.1] - 2026-09-22
|
|
168
|
+
|
|
169
|
+
### Fixed
|
|
170
|
+
- Recognize verified file changes from `apply_patch`, `replace_text`, and `write_files` in the completion guard, including partial publication followed by an error. Previews, unchanged files, and missing receipts do not count as completed mutations; legacy editing tools remain supported.
|
|
171
|
+
|
|
172
|
+
## [0.39.0] - 2026-09-21
|
|
173
|
+
|
|
174
|
+
### Added
|
|
175
|
+
- Use the directory selected by `pi-change-working-dir` for tool and slash-command delegation, agent discovery, command completion, and relative cwd overrides. Capture the directory once before asynchronous preparation.
|
|
176
|
+
|
|
177
|
+
### Fixed
|
|
178
|
+
- Initialize new forks and explicit saved-child cwd overrides through the directory owner before the first model request, without rewriting parent or child history. Ordinary continuation preserves the child's later directory selections.
|
|
179
|
+
- Reject delegation when a loaded directory owner is incompatible or cannot resolve the selected directory. Fresh, forked, and resumed children validate their owner before provider or tool dispatch; run inspection and control remain available without resolving the parent's directory.
|
|
180
|
+
- Undo explicit cwd requests rejected before launch so they cannot affect a later ordinary continuation.
|
|
181
|
+
|
|
182
|
+
## [0.38.2] - 2026-09-19
|
|
183
|
+
|
|
184
|
+
### Fixed
|
|
185
|
+
- Resume saved children in a different directory on released Pi through its native SDK cwd override, preserving session identity and history. Normal launches and same-directory resumes remain unchanged.
|
|
186
|
+
- Resolve explicitly selected direct MCP tools from the independent Fitch adapter's configuration and metadata namespace while retaining pre-v5 Fitch state support. Default configured tool and extension inheritance remains unchanged.
|
|
187
|
+
|
|
188
|
+
## [0.38.1] - 2026-09-18
|
|
189
|
+
|
|
190
|
+
### Fixed
|
|
191
|
+
- Activate the structured-output capture tool after a saved session resumes, preserving the host's active tool selection.
|
|
192
|
+
- Omit redundant `--session-cwd` overrides for preassigned new child sessions (including acceptance contracts) and saved children in the same physical directory, including symlink/trailing-slash spellings, allowing ordinary official-Pi launches and resumes. Real directory changes and uncertain existing headers still use the native override without rewriting history. Read only the session header rather than the full transcript when checking its directory.
|
|
193
|
+
|
|
194
|
+
## [0.38.0] - 2026-09-15
|
|
195
|
+
|
|
196
|
+
### Added
|
|
197
|
+
- Carry the authoritative root Pi session ID through existing foreground/background launch and nested delegation without changing the parent's process environment. Saved children inherit the reviving parent's root.
|
|
198
|
+
- A task-labelled Agents area, configurable Option+Shift+M (Alt+Shift+M) and `/agents`, with native-editor conversations, full saved history, contextual replies, tool details/diffs, unread navigation, preserved drafts and one optional pin. Fullscreen task clicks open the selected child; viewing finished work never starts it.
|
|
199
|
+
- Verified human-origin direct messages to owned children, distinct broker and native-conversation receipts, and small parent information breadcrumbs. Waiting questions use the existing durable answer path.
|
|
200
|
+
- Interruptible `async: false` continuation/answer execution that follows the actual run identity and preserves saved launch choices. Important steers release foreground execution while children keep working and deliver completion automatically.
|
|
201
|
+
- Explicit human-only `blocked` acceptance with concrete evidence and `humanAction`. It retains incomplete acceptance and completed evidence, stops repeated finalization/verification, blocks dependents and leaves independent siblings running.
|
|
202
|
+
- Opt-in Intercom topics with quiet current-state records, self-contained coalesced updates and advisory resource-owner display. Only blockers, decisions, awaited explicit releases and direct messages interrupt; disconnect never implies release.
|
|
203
|
+
|
|
204
|
+
### Changed
|
|
205
|
+
- **Breaking:** Preserve the backend base prompt, project instructions, and discovered skills for agents by default while keeping fresh conversation context and nested delegation disabled. Custom profiles can explicitly restore the previous isolated prompt policy.
|
|
206
|
+
|
|
207
|
+
### Fixed
|
|
208
|
+
- Make `skill: false` disable inherited skills across foreground, async, parallel, chain, and resumed runs.
|
|
209
|
+
- Keep Claude Code children leaf-only and map supported project-context and skill isolation settings to Claude Code CLI flags.
|
|
210
|
+
- Remove the public `wait` action from `agent_runs` and `subagent`. Parents continue useful work or end the turn for automatic completion delivery, including when child evidence gates an incomplete goal; explicitly chosen foreground execution remains available.
|
|
211
|
+
- Give Agents strip models more room by omitting redundant `session:` and `working` labels. Pulse only the visible running dot slowly on the existing refresh loop; keep attention indicators steady, theme colors, other states and unread/replied badges intact. Keep offscreen regular-mode dots steady without hiding expanded details.
|
|
212
|
+
- Restore per-child provider/model visibility in Agents, retain provider and model namespaces, and keep full identities available in assignment and message details at narrow sizes. Distinguish selected attempts from native saved choices, including fallbacks and completed conversations later continued on the same session.
|
|
213
|
+
- Make Agents and bundled Intercom action hints clickable in native fullscreen, including Back, Send, Continue, focus, replies, quoted context, topic navigation and parent result-card expansion. Keep drafts, reading positions, native selection and explicit-send boundaries intact; show the action that matches the current focus and use native Option labels on macOS.
|
|
214
|
+
- Restore colored per-agent rows and an exact running count, distinguishing queued and needs-action work. Budget task names, complete states and unread/replied badges before verbose activity in the widget and picker. Hide the entire Agents area when no work is active, while retaining saved drafts, unread results and pins.
|
|
215
|
+
- Let repeated fullscreen clicks on the Agents entrance or selected task close its picker or conversation without changing drafts or stopping work. Clicking a collapsed Intercom message expands that row; a second click collapses it, while native global expansion and text selection remain available.
|
|
216
|
+
- Open completed agent conversations on the readable saved report instead of serialized submission data, without repeating an existing native answer. Group tools with Pi's native renderers while retaining full recorded details, contextual replies, and saved reading positions. Show recorded custom-tool diffs readably in explicit Details before raw metadata.
|
|
217
|
+
- Frame and pad the Agents picker and conversation in both terminal modes. Give task labels the available width, filter across full assignments, and keep the original assignment directly inspectable.
|
|
218
|
+
- Stop only the selected child across supported foreground/background/nested control paths; older multi-child runners without indexed control refuse instead of stopping siblings. Publish terminal pause only after child settlement, and preserve observed agent-process exit evidence separately from normalized workflow and command outcomes.
|
|
219
|
+
- Consume native JSON streaming deltas in both foreground and background live views, preserving multiple text blocks before message completion.
|
|
220
|
+
- Steer material supervisor progress at the next tool boundary and suppress obsolete undelivered legacy progress from proven terminal children without removing raw history or genuine results.
|
|
221
|
+
- Preserve native editing shortcuts, prevent repeated submission of an accepted pending message, clear its warning after native delivery, preserve the reading message across terminal reflow, keep unread history boundaries monotonic, and clean up UI state and pending operations at session replacement.
|
|
222
|
+
- Keep queued children visibly waiting to start, retain parallel siblings' unfinished output, scope answer waits to the answered child, and cancel an exited child's durable question without stopping its siblings.
|
|
223
|
+
- Report topic support truthfully when an older live broker is still connected. Ordinary messaging continues; topics become available after the older broker's sessions close normally and it exits.
|
|
224
|
+
- Correct local runtime install/rebuild guidance to use the existing `npm install --omit=dev` lifecycle, avoiding development Pi copies without claiming a loader fix.
|
|
225
|
+
|
|
226
|
+
## [0.37.2] - 2026-09-09
|
|
227
|
+
|
|
228
|
+
### Fixed
|
|
229
|
+
- Let bundled `delegate` use Pi’s configured tools and extensions, like the other bundled profiles. Preserve configured and inherited direct MCP tools in all Pi children unless the profile explicitly selects them; explicit allowlists and nested-delegation limits remain unchanged.
|
|
230
|
+
|
|
231
|
+
## [0.37.1] - 2026-09-07
|
|
232
|
+
|
|
233
|
+
### Fixed
|
|
234
|
+
- Skip unrelated sessions before nested-run discovery during startup and the first restore poll, preserving matching jobs and their reconciliation.
|
|
235
|
+
|
|
236
|
+
## [0.37.0] - 2026-09-07
|
|
237
|
+
|
|
238
|
+
### Added
|
|
239
|
+
- Honor native Pi compact view for ordinary Intercom messages, subagent notifications, and slash-command results: one content row plus Pi's existing spacer. The optional mode defaults off; native expansion reveals full details, while questions, reply guidance, and needs-attention notices stay prominent. Normal presentation, message content, history, and delivery behavior are unchanged.
|
|
240
|
+
|
|
241
|
+
## [0.36.1] - 2026-09-07
|
|
242
|
+
|
|
243
|
+
### Fixed
|
|
244
|
+
- Accept current validated finalization reports after successful native retries or settled-process cleanup, while preserving actual process and final assistant failures.
|
|
245
|
+
- Require native Pi `952c27cd6` for correct prompt admission and settlement; verify rejected input and queued startup without receiver replay.
|
|
246
|
+
- Deliver idle intercom batches in one wake while preserving the selected ask as the default reply target.
|
|
247
|
+
- Keep default run inspection concise, with `full: true` for the complete task and saved configuration. Review returns a short parent-only receipt; review notes are not relayed to children. Completion notices and receipts expose existing result/acceptance metadata paths.
|
|
248
|
+
- Put live runs ahead of completed unreviewed results, preserving all pages, exact lookup, and separate continuation results/reviews. Parent control hints use `agent_runs`; child-safe hints keep `subagent`, and timeout extension names the required loader.
|
|
249
|
+
- Label exactly matched terminal-child progress as historical/deferred, with original send and delivery times, while retaining the full body and unchanged delivery/wake behavior across reload. Live, detached, successor, generic peer, question, and answer messages stay unchanged.
|
|
250
|
+
- Make foreground and background attention notices identify durable supervisor waits or observed long-running tools, including question/answer guidance, tool elapsed time, and no-output age. Clarify launch/native-session cwd labels, live acceptance override limits, and the whole-index meaning of `no-staged-files`.
|
|
251
|
+
- Pass the effective cwd through native `--session-cwd` on every saved-session launch, including acceptance finalization, so a replacement worktree is used before extensions start without rewriting saved history. Requires the corrected native fork build documented in the README.
|
|
252
|
+
- Require a current explicit full-report submission for native acceptance finalization, so queued coordination cannot replace the task handoff or reuse stale success. Missing submissions retry within the configured limit; failed delivery retains an explicitly unconfirmed report for audit. Initial public structured outputs and Claude Code behavior remain unchanged.
|
|
253
|
+
- Preserve generated relative-default output origin across single, parallel, chain, fanout, and background clarification launches. Continuations and exited-question revivals use a successor-owned path with the saved filename even when explicitly selecting a current profile, without overwriting the predecessor file; explicit paths and legacy snapshots without origin proof retain their saved behavior.
|
|
254
|
+
- Combine owned-run inspection and live diagnostics into one report without duplicate run headers or lost evidence and controls.
|
|
255
|
+
- Reuse unchanged finished-run ordering facts, load full details for the selected page, and share question discovery across each list. Process new native intercom receipts without rescanning old history during steady delivery; retain full-history recovery at session and tree boundaries, with no history caps.
|
|
256
|
+
- Make Doctor report live bridge and broker-registration health plus the running Node process, loaded Pi version, and build-stamped extension identity instead of static wiring status or current on-disk versions.
|
|
257
|
+
|
|
258
|
+
## [0.36.0] - 2026-09-06
|
|
259
|
+
|
|
260
|
+
### Added
|
|
261
|
+
- Attention-first, paged owned-run lists and explicit parent review (`accepted` or `needs_changes`), separate from execution, acceptance checks, and notification.
|
|
262
|
+
- Persistent root/predecessor/continuation history and inspectable effective launch configuration with profile provenance.
|
|
263
|
+
|
|
264
|
+
### Fixed
|
|
265
|
+
- Deliver intercom messages once by reconciling native queues and full-session receipts. Recover pending steers, follow-ups, and latest milestones after a cold restart without replaying consumed messages or waking passive-only restores.
|
|
266
|
+
- Remove artificial message-count caps from broker replace queues, accepted-message recovery, and pending asks; retain milestone coalescing and ordinary peer ask timeouts.
|
|
267
|
+
- Share same-model retry/fallback, acceptance finalization, and execution outcome rules across foreground and detached hosts, preserving cancellation, timeout, resource-limit, fail-fast, and user-pause outcomes.
|
|
268
|
+
- Require standalone finalization answers that retain every requested handoff detail and cumulative whole-task evidence instead of replacing useful results with a recheck receipt.
|
|
269
|
+
- Share bounded parallel execution and workflow advancement across foreground and detached hosts. Preserve completed sibling outputs when a group fails or stops, stop queued work after interruption or detachment, and distinguish fail-fast from user pause before publishing child outcomes.
|
|
270
|
+
- Require the requested workflow to finish before reporting completion, and retain workflow-level failures in saved results and completion notices even when every launched child succeeds. Detached chains remain paused after their children finish when downstream steps or collection publication remain unfinished. Publish dynamic collections only after every child and the collection schema succeed.
|
|
271
|
+
- Align omitted task defaults, literal template substitution, previous-output handoffs, and dynamic child resource limits across both modes. Empty fanouts retain correct child counts and logical progress across restart; preallocated fork sessions retain their associations across later expansions.
|
|
272
|
+
- Keep foreground group interruption available as queued children start after earlier siblings finish, and keep out-of-order live child updates on their own graph nodes.
|
|
273
|
+
- Preserve original foreground and background handles, results, questions, and launch contracts across native reload/restart and temporary-log cleanup; list bounds no longer discard exact-ID history.
|
|
274
|
+
- Continue with the actual saved provider/model, thinking, profile and output/acceptance choices instead of rediscovering changed defaults. Snapshot each finished child's choices before a continuation changes the shared session. Recover older native receipts where possible and require an explicit profile choice when the original profile was not saved.
|
|
275
|
+
- Emit durable question-resolution events after answers and cancellation so the intercom presence consumer can clear pending asks without another model turn.
|
|
276
|
+
- Report out-of-range owned-run pages as showing none instead of an inverted range.
|
|
277
|
+
- Retain recorded usage and available artifact paths when inspecting saved background results.
|
|
278
|
+
- Route async completions to the resumed parent's current intercom address. Keep fallback delivery quiet in the TUI while retaining the saved failure diagnosis.
|
|
279
|
+
- Stop smoke-test parents, detached workers, and their private broker before removing copied credentials or artifacts, including timeout and handled cancellation.
|
|
280
|
+
|
|
281
|
+
### Changed
|
|
282
|
+
- Keep delegation receipts, subagent responses, and completion messages compact by default. Native expansion reveals full responses and receipt details without changing model-visible content.
|
|
283
|
+
- Require a corrected native `fitchmultz/pi` build containing `acf4c2d98ec44de2108f16a47bf59de5193341a7` for full durable-runtime support. Stock Pi 0.84.x and 0.85.1 do not satisfy the custom-queue contract; the 0.85.1 development pins are not proof of the fix.
|
|
284
|
+
- Require a full Pi process restart after code updates, then resume the same saved parent to retain ownership and pending coordination; do not rely on `/reload` to activate changed code.
|
|
285
|
+
- Run the full Linux gate against a supplied credential-free, prebuilt native Pi archive, with no dependency patches or skipped native cases.
|
|
286
|
+
|
|
287
|
+
## [0.35.0] - 2026-09-06
|
|
288
|
+
|
|
289
|
+
### Added
|
|
290
|
+
- Compact `delegate` and `agent_runs` tools for ordinary delegation, owned-run discovery, inspection, nudges, continuation, and stopping without loading the advanced workflow schema.
|
|
291
|
+
- Durable supervisor questions and immutable answers, recoverable by the owning saved session after reload or child exit, with launch-time acceptance, output paths, and structured schemas preserved on revival.
|
|
292
|
+
- Credential-free Linux validation on the supported Node floor and current Node, plus stronger real-Pi tool, settlement, and model-identity checks.
|
|
293
|
+
|
|
294
|
+
### Fixed
|
|
295
|
+
- Use one run identity across foreground, background, and clarify-to-background paths; retain completed owned work across cwd changes and keep late nudges from restarting it.
|
|
296
|
+
- Share child-process lifecycle handling, wait for native Pi settlement, stop descendant processes on cancellation, and distinguish explicit supervisor-question detachment from interruption.
|
|
297
|
+
- Keep the full foreground operation alive through supervisor questions during initial execution or finalization; release only the parent wait and retain real completion/control state.
|
|
298
|
+
- Make the final substantive acceptance output authoritative across results, artifacts, usage, and chain handoffs; preserve unchanged report files and retain the initial answer for audit. Include criterion-local and cumulative whole-task evidence in finalization prompts.
|
|
299
|
+
- Preserve acceptance through background clarification, pass native context-file suppression, inherit the parent model for fresh delegate runs, and align static/dynamic chain cwd and output behavior.
|
|
300
|
+
- Capture binary worktree patches outside the source checkout, recognize `apply_edits` mutation evidence, and avoid treating shell descriptor redirection as a file path.
|
|
301
|
+
- Keep deferred material updates until delivered or superseded, distinguish busy-peer refusal from successful delivery, and expose unconsumed intercom messages.
|
|
302
|
+
|
|
303
|
+
### Changed
|
|
304
|
+
- Completion mutation checks are explicitly opt-in with `completionGuard: true`; task prose no longer determines whether a valid answer must edit files.
|
|
305
|
+
- Support macOS and Linux only; remove Windows-specific runtime branches and old package promotional branding while retaining required license notices.
|
|
306
|
+
|
|
307
|
+
## [0.34.18] - 2026-09-05
|
|
308
|
+
|
|
309
|
+
### Fixed
|
|
310
|
+
- Pass Pi task arguments larger than 900 UTF-8 bytes through native `@file` input, counting the complete `Task: ` prefix, and keep system instructions in a separate `system.md` within each unique temporary directory, avoiding task collisions and filename limits for long agent names. Thanks to @tribble for [#54](https://github.com/fitchmultz/pi-subagents/pull/54).
|
|
311
|
+
|
|
312
|
+
## [0.34.17] - 2026-09-04
|
|
313
|
+
|
|
314
|
+
### Fixed
|
|
315
|
+
- Reuse rendered inline intercom messages at unchanged terminal widths instead of rewrapping and recoloring every frame; refresh on resize and theme changes without shortening messages.
|
|
316
|
+
|
|
317
|
+
## [0.34.16] - 2026-09-03
|
|
318
|
+
|
|
319
|
+
### Changed
|
|
320
|
+
- Sync the bundled role profiles with the current Fitch overrides, including Astra routes, Claude Fable 5.1, Grok 4.6, fallback order, and thinking levels; preserve scout and watcher routes and delegate's inherited model.
|
|
321
|
+
- Ground reviewer findings in the original request and concrete evidence, without speculative findings or a mandatory disposition taxonomy.
|
|
322
|
+
- Explicitly disable nested delegation in every bundled profile and keep reviewer delegation with the parent.
|
|
323
|
+
- Limit worker clarification to uncertainty that could materially change the outcome, while preserving the approval requirement.
|
|
324
|
+
|
|
325
|
+
## [0.34.15] - 2026-08-27
|
|
326
|
+
|
|
327
|
+
### Changed
|
|
328
|
+
- Disable nested child delegation by default: the main session may launch subagents, but those children cannot launch more sessions; bundled orchestration guidance now keeps all fanout parent-owned.
|
|
329
|
+
|
|
330
|
+
## [0.34.14] - 2026-08-26
|
|
331
|
+
|
|
332
|
+
### Fixed
|
|
333
|
+
- Suppress npm stderr while probing global packages so npm config warnings do not leak into the Pi TUI during skill discovery.
|
|
334
|
+
|
|
335
|
+
## [0.34.13] - 2026-08-26
|
|
336
|
+
|
|
337
|
+
### Changed
|
|
338
|
+
- Scope intercom list/status discovery and the session overlay to the current Git repository and its worktrees by default, with explicit `scope: "all"` and `/intercom all` paths for intentional cross-project discovery.
|
|
339
|
+
|
|
340
|
+
## [0.34.12] - 2026-08-25
|
|
341
|
+
|
|
342
|
+
### Changed
|
|
343
|
+
- Route the six agents that previously used `openai/gpt-5.6-sol` through `cloudflare-ai-gateway/gpt-5.6-sol`, with direct OpenAI moved to the front of each existing fallback list.
|
|
344
|
+
|
|
345
|
+
## [0.34.11] - 2026-08-25
|
|
346
|
+
|
|
347
|
+
### Fixed
|
|
348
|
+
- Ignore reserved `AGENTS.md` instruction files during recursive subagent discovery.
|
|
349
|
+
|
|
350
|
+
## [0.34.10] - 2026-08-20
|
|
351
|
+
|
|
352
|
+
### Changed
|
|
353
|
+
- Sync the bundled role routes with the active Fitch profile overrides: `context-builder` defaults to gateway Fable at medium thinking; `debugger`, `fixer`, `planner`, `reviewer`, `reviewer-claude`, and `ui-designer` default to gateway Fable at high thinking.
|
|
354
|
+
|
|
355
|
+
## [0.34.9] - 2026-08-18
|
|
356
|
+
|
|
357
|
+
### Changed
|
|
358
|
+
- Load the full `subagent` tool schema only when delegation is requested, while keeping the small `load_subagent` discovery tool active and preserving the existing orchestration guidance at load time.
|
|
359
|
+
- Respect Pi tool allowlists and exclusions, and reset deferred activation after compaction so guidance is restored on the next load.
|
|
360
|
+
|
|
361
|
+
## [0.34.8] - 2026-08-16
|
|
362
|
+
|
|
363
|
+
### Changed
|
|
364
|
+
- Rename the foreground control module so it no longer shares a filename with shared control helpers, and move the four run-path functions into their own files. Public tool behavior is unchanged.
|
|
365
|
+
|
|
366
|
+
## [0.34.7] - 2026-08-16
|
|
367
|
+
|
|
368
|
+
### Changed
|
|
369
|
+
- Split the foreground executor into params, control, and path modules, and moved shared worktree-summary and duplicate-output-path helpers into the existing worktree and single-output modules. Public tool behavior is unchanged.
|
|
370
|
+
- Drop the resolved per-agent context note and the leftover peer-hint "counts only" wording now that the hint is a constant string.
|
|
371
|
+
|
|
372
|
+
## [0.34.6] - 2026-08-16
|
|
373
|
+
|
|
374
|
+
### Fixed
|
|
375
|
+
- Count mutating-tool failures for `needs_attention` only when the tool result sets `isError: true`. Successful commands whose output happens to contain words like `error` or `failed` (for example `git diff > /tmp/...`) no longer page the parent.
|
|
376
|
+
|
|
377
|
+
## [0.34.5] - 2026-08-16
|
|
378
|
+
|
|
379
|
+
### Changed
|
|
380
|
+
- Sync bundled Fitch role profiles to the current user routes: Claude primaries go through `cloudflare-ai-gateway/` with direct Anthropic fallbacks, `reviewer-claude` and `writer` use Fable, `researcher` uses `openai/gpt-5.6-sol`, and `oracle`, `reviewer-gpt`, `reviewer-claude`, and `worker` use `xhigh` thinking.
|
|
381
|
+
|
|
382
|
+
## [0.34.4] - 2026-08-14
|
|
383
|
+
|
|
384
|
+
### Changed
|
|
385
|
+
- Build cleanup is uniformly best-effort, so a locked staging tree cannot turn a successful concurrent race loss into failure or mask the compiler/publish error that matters.
|
|
386
|
+
- `scripts/build.mjs` now separates stranded-tree reaping, compilation, and publication behind named retry/cleanup constants and helpers while preserving the cross-repo build contract.
|
|
387
|
+
- `scripts/prepare.mjs` structurally preserves the original build error when the final dev-dependency prune also fails; the prune warns and may leave the dev toolchain for manual cleanup.
|
|
388
|
+
- An empty `dist/` is no longer accepted as a concurrent winner; this build retains and retries its staged emit instead.
|
|
389
|
+
- Deterministic tests now cover an unreapable strand, failed old-output removal, concurrent-winner discard, empty-directory rejection, vanished staging, and retry-cap exhaustion. The real-process smoke narrows from three twelve-wide rounds to one four-way round while deterministic faults cover each publication branch without destabilizing unrelated process-heavy suites. A publish failure after old-output removal fails loudly and may leave `dist/` absent.
|
|
390
|
+
|
|
391
|
+
## [0.34.3] - 2026-08-14
|
|
392
|
+
|
|
393
|
+
### Changed
|
|
394
|
+
- `dist/` is now published by retrying this build's own `rename` instead of waiting on another build. A rename failure yields only when `dist/` already exists (an existence check, not an errno check, so platforms that report a different code for rename-onto-existing-directory still behave correctly); otherwise the staging tree is retained and the rename retried, so this build can publish its own output rather than wait on a concurrent winner's scheduling. This replaces the bounded poll shipped in 0.34.2, which could still fail a build whose concurrent winner was descheduled past the poll window.
|
|
395
|
+
- Staging-reaper documentation now states its precise guarantee: only pids already gone at probe time are eligible; pid reuse between probe and removal remains inherent to pid-based reaping.
|
|
396
|
+
- Swap coverage now includes the deterministic slow-winner regression, and concurrent-storm failures surface the build's stderr instead of only its exit code.
|
|
397
|
+
|
|
398
|
+
## [0.34.2] - 2026-08-14
|
|
399
|
+
|
|
400
|
+
### Changed
|
|
401
|
+
- `scripts/build.mjs` now reaps `dist.staging.<pid>` directories stranded by dead builds (SIGKILL or crash mid-emit) at the start of every build, using a signal-0 liveness probe so live concurrent builds are never touched. Reaping is best-effort: an unreapable strand warns instead of failing the build.
|
|
402
|
+
- The race-loss check now polls briefly for a mid-swap concurrent winner before declaring failure, closing the review-identified window where a losing build could spuriously exit 1 while the winner was between its own `rm` and `rename` (reproduced by the new storm test before the fix).
|
|
403
|
+
- `scripts/prepare.mjs` prunes the dev toolchain in a `finally` (even when the build fails) and forwards build output on success, so install-time diagnostics such as the concurrent-swap race-loss warning are no longer swallowed.
|
|
404
|
+
- New automated coverage for the staging swap: failed builds preserve the previous `dist/`, successful builds purge stale files, dead-pid staging dirs are reaped while live ones survive, and concurrent builds all succeed.
|
|
405
|
+
|
|
406
|
+
## [0.34.1] - 2026-08-14
|
|
407
|
+
|
|
408
|
+
### Changed
|
|
409
|
+
- `scripts/build.mjs` now emits into a pid-scoped `dist.staging.<pid>` directory and atomically swaps it into `dist/`. A failed build preserves the previous working dist, concurrent builds cannot clobber each other or swap a partial emit into place, and a build that loses the swap race to a concurrent winner normally exits 0 (the winner's tree is an equivalent fresh emit; a narrow timing window can still surface the loss as a loud failure). `rm(dist)` failures always fail loudly. Ports the build hardening reviewed in pi-cursor-sdk v0.3.0.
|
|
410
|
+
|
|
411
|
+
## [0.34.0] - 2026-08-13
|
|
412
|
+
|
|
413
|
+
### Changed
|
|
414
|
+
- The Pi extension manifest now loads precompiled `dist/extension/index.js` and `dist/pi-intercom/index.js` instead of transpiling the ~32kloc TypeScript graph at every pi startup. A `prepare` lifecycle script builds `dist/` on install and update, including Pi's `npm install --omit=dev` git-install flow.
|
|
415
|
+
- Runtime sibling-module paths (intercom bundled extension, broker, async runner/launcher, local fork start command, and the child `--extension` paths in `pi-args.ts`) now resolve `.ts` vs `.js` from the running module's own extension, so both source and compiled layouts work. The package smoke asserts the compiled child `--extension` paths exist.
|
|
416
|
+
- Install-lifecycle hardening: the dependency probe checks `node_modules` paths directly, npm runs through `process.execPath` with no shell, prepare fails closed without `npm_execpath`, and the dev toolchain is pruned back to runtime-only dependencies after install-time builds.
|
|
417
|
+
|
|
418
|
+
## [0.33.7] - 2026-08-13
|
|
419
|
+
|
|
420
|
+
### Fixed
|
|
421
|
+
- Bound outstanding inbound redelivery to the same 100-message recipient queue limit.
|
|
422
|
+
|
|
423
|
+
### Changed
|
|
424
|
+
- Document that Esc before consume re-delivers steered intercom messages after the turn settles.
|
|
425
|
+
|
|
426
|
+
## [0.33.6] - 2026-08-13
|
|
427
|
+
|
|
428
|
+
### Fixed
|
|
429
|
+
- Re-deliver inbound intercom steers and follow-ups after the recipient aborts, including a second Esc, so unconsumed peer messages are not dropped.
|
|
430
|
+
- Retry detached runner startup when an in-place extension update temporarily removes its runtime dependencies.
|
|
431
|
+
|
|
432
|
+
## [0.33.5] - 2026-08-11
|
|
433
|
+
|
|
434
|
+
### Fixed
|
|
435
|
+
- Isolate the temp-root cleanup unit test even when run directly, preventing its fake active async run and nested routes from leaking into the shared startup-discovery directory.
|
|
436
|
+
|
|
437
|
+
## [0.33.4] - 2026-08-11
|
|
438
|
+
|
|
439
|
+
### Fixed
|
|
440
|
+
- Garbage-collect `nested-subagent-events` route directories in startup retention: they accumulated forever, and startup job restore readdir'd the pile once per async run (O(runs × routes)), putting most of startup CPU in `readdir` on a bloated temp root. Routes are removed after the same 7-day window, but stay while writes still land inside them (live nested descendants, foreground roots) or while their root run is active, and operational read failures now fail closed instead of deleting live state.
|
|
441
|
+
- Stop the peer-awareness hint from invalidating the provider prompt cache: the hint is now a constant count-free string, pinned for the rest of the session once peers are first seen, so fleet churn (session spawns/exits, subagent children joining the broker) no longer rewrites the system prompt between turns. Pinned turns also skip the per-turn broker list round trip. Measured on 2026-08-10 (13:12-19:12Z) across one fleet: 52 run-boundary full-context hot-cache misses (~$91, upper bound) attributable to the varying count; a further 38 mid-run misses (~$66) were provider-side eviction/routing and are unaffected by this fix.
|
|
442
|
+
- Keep composed tool-schema constraints compatible with Fireworks-hosted models without weakening validation for other providers.
|
|
443
|
+
|
|
444
|
+
## [0.33.3] - 2026-08-09
|
|
445
|
+
|
|
446
|
+
### Changed
|
|
447
|
+
- Sync the bundled Fitch role profiles to the current tuned model, fallback, and thinking defaults while preserving role-specific model diversity and reserving `openai-codex/` routes for fallback billing pools.
|
|
448
|
+
- Treat `context-builder`, `reviewer`, and `reviewer-ponytail` as fresh-context-only after their synced routes gained Anthropic primaries or fallbacks; use a fork-eligible role such as `oracle` or `scout` for branched-session work.
|
|
449
|
+
|
|
450
|
+
## [0.33.2] - 2026-08-08
|
|
451
|
+
|
|
452
|
+
### Fixed
|
|
453
|
+
- Stop children that repeat an identical failed `subagent` call five times within the recent subagent-call window, including rejected nested delegations that previously ran until timeout, without blocking successful repeated calls.
|
|
454
|
+
|
|
455
|
+
## [0.33.1] - 2026-08-08
|
|
456
|
+
|
|
457
|
+
### Fixed
|
|
458
|
+
- Keep the required `structured_output` tool enabled when a child agent defines an explicit tool allowlist.
|
|
459
|
+
- Render multiline doctor and management results as readable, expandable slash-command cards instead of truncating the whole report as one terminal line.
|
|
460
|
+
- Tell nested orchestrators when a foreground child call has completed so model-sensitive loops do not relaunch the same successful task.
|
|
461
|
+
- Cap integration-test file concurrency so timing-sensitive process and timeout checks stay deterministic on busy developer machines.
|
|
462
|
+
|
|
463
|
+
## [0.33.0] - 2026-08-08
|
|
464
|
+
|
|
465
|
+
### Added
|
|
466
|
+
- Deliver the eventual grouped result when a foreground child detaches for a blocking supervisor reply and later exits, retain a compact remembered fallback when intercom delivery is unavailable, and keep isolated worktrees alive until detached children finish so their final changes are captured before cleanup.
|
|
467
|
+
|
|
468
|
+
### Changed
|
|
469
|
+
- Align the bundled agent model, fallback, and thinking defaults with the current user profiles: lower `reviewer-gpt` and `reviewer-claude` to high thinking, route `reviewer-security` through Grok first, and move `watcher` to GPT-5.6 Sol at medium thinking.
|
|
470
|
+
- Tighten the public tool schema, saved workflow parsing, agent scope handling, and management config validation so malformed or ambiguous requests fail before child launch while preserving acceptance overrides on resume. Unknown tool fields and empty explicit task strings now fail validation instead of being ignored.
|
|
471
|
+
- Make the async widget reflow against its live width and Ctrl+O state, keep terminal failures visible, and bound expanded rows more conservatively on short terminals.
|
|
472
|
+
|
|
473
|
+
### Fixed
|
|
474
|
+
- Terminate complete child process groups with guarded SIGKILL escalation, route async interrupts through run-owned control files instead of persisted PIDs, interrupt every active parallel child, and keep a real failure authoritative when fail-fast cancels running static or dynamic parallel siblings.
|
|
475
|
+
- Honor custom `chainDir` in detached chains and use the shared chain directory consistently for default async chain reads, outputs, `{chain_dir}`, and progress; resolve top-level parallel reads, outputs, and progress in each task cwd; handle empty dynamic fanout without leaking phantom status rows; create `progress.md` without clobbering concurrent work; and fail runs when requested outputs cannot be saved.
|
|
476
|
+
- Preserve Claude Code structured output through native JSON Schema mode, enforce per-criterion acceptance evidence, bound verifier output accumulation, and detect content changes to pre-existing output files.
|
|
477
|
+
- Deliver async result events before completion cleanup, enforce `maxOutput` on each delivered child result, snapshot detached foreground returns, keep nested detached runs live until their terminal event, inject acknowledged foreground grouped results back into the active orchestrator before it can continue without the child output, keep periodic fallback scanning available for orphaned completion files after reloads, debounce status writes, clear recovered attention notifications, and harden stale status, nested control, and parallel-group normalization.
|
|
478
|
+
- Preserve builtin override precedence and effective last-definition-wins discovery, refuse ambiguous management mutations when duplicate definitions exist in one scope, keep managed JSON chain skill fields round-trippable, accept whitespace after frontmatter delimiters, and surface bounded invalid agent, chain, frontmatter, slash-command, and config diagnostics.
|
|
479
|
+
- Harden the bundled intercom broker with stable reconnect identities, private socket/PID/config/atomic files, read-only dual-connect fallback to an owned live legacy socket, bounded replace queues, explicit queue-overload rejection, validated registration and presence fields, reply attachments, and fatal startup error handling. Compose now recovers from incomplete or split bracketed pastes, and slash runs persist their final snapshot without rendering a duplicate result card.
|
|
480
|
+
- Clean old user-scoped temp runs at startup, fail foreground and background writes closed when the configured temp root is unsafe, and report worktree cleanup failures instead of silently discarding them.
|
|
481
|
+
|
|
482
|
+
## [0.32.0] - 2026-08-06
|
|
483
|
+
|
|
484
|
+
### Added
|
|
485
|
+
- New builtin `reviewer-ponytail` agent: reviews a diff for over-engineering and slop, governed by the user-installed `ponytail` skill when present. Findings proposing a cut must name a behavior-preserving replacement; intended functionality always wins over compliance.
|
|
486
|
+
|
|
487
|
+
### Fixed
|
|
488
|
+
- Restore active async runs to the TUI widget after `/reload` and after reopening the originating Pi session, using the existing on-disk status files instead of losing them with the extension's in-memory tracker.
|
|
489
|
+
|
|
490
|
+
### Changed
|
|
491
|
+
- Require Pi 0.84.0 or later, pin development validation to the released 0.84.0 packages, and verify the extension/package APIs against the 0.84.0 docs, implementation, and emitted types while retaining optional wildcard Pi peers for package loading.
|
|
492
|
+
- Consume Pi 0.84 child JSON streams through authoritative `message_end` events, including `toolResult` messages, instead of the removed `tool_result_end` compatibility event so mutation tracking and completion guards see finalized tool results.
|
|
493
|
+
- Use Pi 0.84's default `pi-ai` type exports, required context methods, and readonly session manager contract instead of compatibility entrypoints, pre-0.84 context fallbacks, and private session persistence internals.
|
|
494
|
+
- Preserve provider-qualified Pi 0.84 model identities for acceptance continuation turns, keep the live async smoke agent task-focused across models, and use only public npm registry URLs in the release lockfile.
|
|
495
|
+
- Keep bundled workflow prompts as unregistered package examples instead of installing them as slash commands.
|
|
496
|
+
- Collapse the background async widget to one line per run. The per-run stats echo, per-agent rows, nested-run aggregates, and the standalone `Ctrl+O` hint line are gone from the collapsed view; the row keeps the live tool of a solo running agent and `Ctrl+O` still expands the full tree. Widget lines are also built two columns narrower in both modes so padded rows stop wrapping into orphan fragments.
|
|
497
|
+
- Drop the dead `expanded` parameters and unreachable collapsed branches left in the async widget detail helpers after the one-line collapsed view landed. Rendering is unchanged.
|
|
498
|
+
|
|
499
|
+
## [0.31.0] - 2026-08-04
|
|
500
|
+
|
|
501
|
+
### Changed
|
|
502
|
+
- Default top-level single, parallel, chain, and slash subagent launches to async execution when `async` is omitted. Child-safe nested calls retain their foreground default so nested evidence returns in the calling child's report. Existing `asyncByDefault: false`, explicit `async: false`, clarify UI, and foreground timeout escapes remain supported.
|
|
503
|
+
- Add `--fg` to slash execution commands, show the effective async mode in tool calls, and align parent guidance around ending the turn for automatic completion delivery instead of blocking or polling.
|
|
504
|
+
|
|
505
|
+
## [0.30.0] - 2026-08-04
|
|
506
|
+
|
|
507
|
+
### Added
|
|
508
|
+
- Added a read-only `watcher` agent for async monitoring. It uses `openai/gpt-5.6-luna:high` with `xai/grok-4.5:medium` fallback, queues the latest non-terminal material change through the deferred supervisor bridge, suppresses unchanged heartbeats, and relies on terminal async completion to wake the parent.
|
|
509
|
+
|
|
510
|
+
### Changed
|
|
511
|
+
- Aligned `contact_supervisor` progress guidance around concise material updates while preserving deferred/coalesced delivery and normal completion handoffs.
|
|
512
|
+
|
|
513
|
+
## [0.29.2] - 2026-08-04
|
|
514
|
+
|
|
515
|
+
### Changed
|
|
516
|
+
- Route the bundled `reviewer-claude` profile through `anthropic/claude-opus-5`, with Fable and Grok as fallbacks.
|
|
517
|
+
- Remove fixed artifact-policy plumbing while preserving the supported behavior: `artifacts: false` disables artifacts; otherwise input, output, and metadata are written, artifact JSONL remains off, and cleanup remains seven days.
|
|
518
|
+
|
|
519
|
+
### Removed
|
|
520
|
+
- Replaced the local `StringEnum` implementation and duplicate thinking-level declarations with TypeBox's native enum and the shared model helper.
|
|
521
|
+
- Deleted the unreachable artifact JSONL writer and its isolated tests.
|
|
522
|
+
|
|
523
|
+
## [0.29.1] - 2026-08-04
|
|
524
|
+
|
|
525
|
+
### Changed
|
|
526
|
+
- Collapse successful `intercom list` results to a session count in the TUI by default while keeping the full list available through the standard tool-expansion keybinding.
|
|
527
|
+
|
|
528
|
+
### Removed
|
|
529
|
+
- Deleted two non-shipped, planning-only refactor documents.
|
|
530
|
+
- Removed the legacy result-animation timer cleanup path and its synthetic test; the current renderer never creates that timer.
|
|
531
|
+
|
|
532
|
+
## [0.29.0] - 2026-08-04
|
|
533
|
+
|
|
534
|
+
### Changed
|
|
535
|
+
- Absorbed the pi-intercom extension, broker, skill, and tests into this package, replacing required two-package pairing with one manifest, install, and update while preserving the existing intercom protocol, config directory, and child wiring.
|
|
536
|
+
- Run the bundled broker directly with the package's existing native Node TypeScript baseline, removing the separate `tsx` runtime dependency while mapping the old default broker command to the native path for compatibility.
|
|
537
|
+
- Removed Cursor-hosted fallback routes from the seven affected bundled agent profiles while preserving their remaining direct-provider routes.
|
|
538
|
+
- Replaced scheduler-sensitive test assertions with contract-based synchronization and removed duplicate helper coverage already exercised by stronger unit tests.
|
|
539
|
+
- Surfaced the lightweight reviewer path in tool and skill guidance: omit `acceptance` for review-only tasks, launch independent reviewers as separate async runs so each completion wakes the parent, and end the parent turn instead of polling when no other work remains. Active status output now repeats the no-poll reminder only for runs whose completion will reach the current session.
|
|
540
|
+
- Cut intercom bridge guidance over to steer-first live coordination: parent nudges are non-blocking supplemental guidance unless they explicitly replace the child task, generated status/attention hints label nudge as preferred and ask as a blocking-only exception, child decisions/interviews use steered blocking asks only when the ephemeral process must stay alive, and progress updates remain intentionally deferred/coalesced.
|
|
541
|
+
- Acceptance reports now require fenced `acceptance-report` JSON; the undocumented unfenced `ACCEPTANCE_REPORT:` compatibility marker is no longer parsed or stripped.
|
|
542
|
+
- Removed unused exported type fields from `ControlEvent`, `AcceptanceLedger`, and `SubagentLiveIntercomHealth`.
|
|
543
|
+
- Added additive `managementControl` details to status and control responses with normalized lifecycle state, supported capabilities, exact next-action targets, and explicit revival mapping.
|
|
544
|
+
- Updated the local Pi development baseline and compatibility audit for Pi 0.80.9; subagent runs use Pi extension contexts rather than the removed SDK `authStorage`/`modelRegistry` session options.
|
|
545
|
+
- Added Pi's opt-in `max` thinking level to model filtering and the clarify selector while keeping `xhigh` and `max` distinct.
|
|
546
|
+
- Reject forked context before launch when an affected agent's effective primary or fallback model uses the `anthropic/` provider; explicit context/model overrides cannot bypass the restriction, while other providers keep normal agent context configuration.
|
|
547
|
+
- Raised the default subagent no-activity needs-attention threshold from 1 minute to 10 minutes so long test/build commands do not trigger early nudge reminders.
|
|
548
|
+
- Added `subagent({ action: "nudge" })` as a first-class live child nudge that routes through `pi-intercom` with `delivery:"steer"` when the child is registered, and updated status/control hints to show both the subagent nudge and direct blocking intercom ask paths.
|
|
549
|
+
- Control nudge hints now use live intercom steering because they request a child reply and should reach active children promptly.
|
|
550
|
+
- Kept the package private with no legacy `npx` installer, made GitHub `pi install` the canonical install/refresh workflow, and retained local path installs for development.
|
|
551
|
+
- Bundled the 14 pi-fitch-kit agent profiles as defaults, retained the extension's lightweight `delegate`, and removed pi-fitch-kit from the canonical local validation gate.
|
|
552
|
+
- Added a per-suite local watchdog to `scripts/run-tests.mjs`, with timeout diagnostics and `PI_TEST_TIMEOUT_MS` / `--timeout-ms` overrides for slow debug runs.
|
|
553
|
+
- Added an opt-in `npm run smoke:real-pi` command that installs this checkout in an isolated temporary Pi home, loads both bundled extension entries, and verifies `pi list`; live model subagent prompts remain gated behind `-- --llm`.
|
|
554
|
+
- Updated the local Pi development baseline to `@earendil-works/*` `0.79.0` while keeping Pi runtime packages as optional wildcard peers so 0.79.0 is a suggested floor, not a hard requirement.
|
|
555
|
+
- Use Pi 0.78.1 `ctx.mode` when available to restrict terminal-only widget, raw input, and tool-expansion behavior to TUI mode while preserving a `ctx.hasUI` fallback for older compatible Pi installs.
|
|
556
|
+
- Ignore the whole project-local `.pi/` tree so semantic caches and other agent state do not appear as publishable package artifacts.
|
|
557
|
+
- Added dev-only dependency overrides for current transitive `brace-expansion` and `ws` advisories without changing runtime package dependencies.
|
|
558
|
+
- Declared Pi runtime packages (`@earendil-works/pi-*`) as optional wildcard peers so npm peer ranges do not block future Pi releases; TypeBox stays a direct dependency because the detached async runner resolves it from this package.
|
|
559
|
+
- Added explicit `subagent` tool prompt snippet/guidelines so Pi 0.77+ tool metadata attribution has concise delegation guidance separate from the full schema description.
|
|
560
|
+
- Use native TypeScript stripping on the Pi 0.80.6 Node >=22.19 baseline for tests and detached async runners, removing the direct Jiti dependency.
|
|
561
|
+
- Run local test scripts through a small wrapper that clears inherited `PI_SUBAGENT_*` runtime variables before starting the Node test runner.
|
|
562
|
+
|
|
563
|
+
### Fixed
|
|
564
|
+
- Accept either response order in the live async smoke while still requiring the launch confirmation, exact async run ID, and an exact child completion line.
|
|
565
|
+
- Clear inherited `PI_SUBAGENT_*` child metadata from isolated install and real-Pi smokes so running validation from a subagent still loads the top-level subagent extension and doctor command.
|
|
566
|
+
- Preserve the user's Ctrl+O tool-output expansion setting when subagent tools and slash commands run instead of forcing it collapsed.
|
|
567
|
+
- Keep detached async runners loadable after Pi refreshes a git-installed package with development dependencies omitted: subagent schemas now use the existing TypeBox runtime directly, and the package smoke reproduces a packed production install.
|
|
568
|
+
- Treat Codex-style `usage limit` errors as retryable model failures so configured `fallbackModels` advance immediately, and keep them out of same-model transport recovery loops.
|
|
569
|
+
- Preserve the full explicit acceptance contract across completed, timed-out, and failed run revival, including verification commands after self-review exhaustion; a resume-supplied acceptance contract explicitly overrides the inherited contract.
|
|
570
|
+
- Keep async completion-guard notices visible while leaving the matching completion result as the single automatic parent wakeup, avoiding duplicate triggered turns for one terminal child result.
|
|
571
|
+
- Keep failed sibling results visible when top-level, static-chain, or dynamic-chain parallel work detaches for supervisor coordination.
|
|
572
|
+
- Prefer the supervisor's exact connected `pi-intercom` broker ID for child escalation metadata, with immediate safe fallback to the existing session-derived target.
|
|
573
|
+
- Preserve detached runner stderr in each async run directory and include it in stale-run failures so bootstrap errors remain actionable.
|
|
574
|
+
- Install TypeBox as a production dependency so detached async runners can load `typebox/compile` instead of exiting before creating child status or session files.
|
|
575
|
+
- Removed the unsupported public `acceptance.review` gate and reject legacy uses during preflight, preventing completed, verified workers from being marked failed for an automatic reviewer result the runtime never creates; independent review remains a separate parent-controlled run.
|
|
576
|
+
- Pass Claude Code child prompts before the variadic `--tools` option so current Claude Code releases do not consume the prompt as another tool name.
|
|
577
|
+
- Removed active-long-running control notices and their thresholds; control notifications now only fire for needs-attention states.
|
|
578
|
+
- Return the last non-empty text part from the latest assistant message so multi-part assistant outputs prefer the final answer over progress text.
|
|
579
|
+
- Keep path-resolution tests hermetic by using a temporary fake home and Pi agent directory instead of touching the real `~/.agents` tree.
|
|
580
|
+
- Updated per-agent context documentation to describe per-agent behavior rather than whole-invocation fork promotion.
|
|
581
|
+
- Retry the same model once for foreground and async subagents after recoverable child transport failures such as WebSocket/stream/socket timeouts or SIGTERM-style provider exits, before falling back to alternate models.
|
|
582
|
+
- Default child Pi 0.79+ project-trust handling to `--approve` for subagent runs so trusted parent sessions do not lose project-local inputs in non-interactive child processes; explicit parent/configured `--no-approve` remains honored.
|
|
583
|
+
- Treat normal `output` files as runtime-owned handoff scratch: capture their contents into the parent result, then remove the file so `review.md`, `context.md`, and similar subagent outputs do not pollute the working tree.
|
|
584
|
+
|
|
585
|
+
## [0.28.0] - 2026-06-03
|
|
586
|
+
|
|
587
|
+
### Added
|
|
588
|
+
- Added foreground-only `timeoutMs`/`maxRuntimeMs` for single, parallel, and chain subagent runs. Timed-out children are soft-interrupted, keep completed sibling/prior results, and return `timedOut: true` with a stable timeout message.
|
|
589
|
+
- Added per-agent `maxExecutionTimeMs` and `maxTokens` resource limits. Foreground and async children stop with a clear `resourceLimitExceeded` result when the configured runtime or observed token budget is reached.
|
|
590
|
+
|
|
591
|
+
### Changed
|
|
592
|
+
- Strengthened tool and skill guidance so writer subagents launched from plans, specs, issues, or broad fixes proactively use structured `acceptance` instead of burying validation requirements only in task prose.
|
|
593
|
+
|
|
594
|
+
### Fixed
|
|
595
|
+
- Removed a provider-unfriendly required-only subschema from the public `acceptance` tool schema so Kimi models served through OpenCode Go can load the `subagent` tool, while keeping runtime validation for empty acceptance contracts.
|
|
596
|
+
- Clarified acceptance-report prompts so required evidence like `diff-summary` must be copied into structured JSON fields such as `diffSummary`, not only described in visible prose.
|
|
597
|
+
|
|
598
|
+
## [0.27.0] - 2026-05-30
|
|
599
|
+
|
|
600
|
+
### Changed
|
|
601
|
+
- Reworked public acceptance config to be object-only and evidence-driven, removing public `level`/disable shorthands. Explicit acceptance now triggers a same-session self-review/repair finalization loop, with `maxFinalizationTurns` controlling the cap.
|
|
602
|
+
- Documented goal-style acceptance guidance so `/goal`, “active goal”, and “work until evidence says done” requests map to run-scoped `acceptance` contracts.
|
|
603
|
+
- Refined acceptance finalization prompts and status output to emphasize evidence, blockers, stop rules, and finalization progress such as `completed after 1/3 turns`.
|
|
604
|
+
|
|
605
|
+
### Fixed
|
|
606
|
+
- Treat explicit acceptance as the completion contract for acceptance-enabled runs, avoiding implementation completion-guard false positives when the visible output is only an `acceptance-report` or a finalization self-review turn does not need a repair edit.
|
|
607
|
+
|
|
608
|
+
## [0.26.0] - 2026-05-29
|
|
609
|
+
|
|
610
|
+
### Added
|
|
611
|
+
- Added first-wave acceptance gates with optional public `acceptance` config, inferred effective policies, structured child reports, provenance ledgers, checked evidence gates, explicit runtime verification commands, async/status persistence, and saved `.chain.json` validation.
|
|
612
|
+
- Added chain step metadata (`phase`, `label`), named outputs (`as` with `{outputs.name}`), workflow graph snapshots, and strict `outputSchema` structured-output contracts across foreground and async chain execution.
|
|
613
|
+
- Added dynamic chain fanout with `expand`/single-template `parallel`/`collect`, structured named-output sources, bounded item expansion, collected result outputs, async status graph persistence, and saved `.chain.json` support.
|
|
614
|
+
|
|
615
|
+
### Fixed
|
|
616
|
+
- Fixed dynamic fanout acceptance blockers around real `structured_output` tool validation, malformed dynamic-like chain rejection, async dynamic failure status/details, dynamic child intercom target indexing, and saved `.chain.json` management diagnostics.
|
|
617
|
+
- Fixed acceptance-gate semantics so reviewed status requires an independent reviewer result, required criteria must be reported as satisfied, only fenced `acceptance-report` blocks satisfy attestation, malformed reports preserve parse errors, `{ level: "none", reason }` disables inferred gates, and zero-child dynamic aggregates no longer fabricate evidence.
|
|
618
|
+
|
|
619
|
+
## [0.25.0] - 2026-05-21
|
|
620
|
+
|
|
621
|
+
### Added
|
|
622
|
+
- Allow child agents whose resolved builtin tools explicitly include `subagent` to run child-safe nested fanout, with parent-visible nested status trees and nested `status`/`interrupt`/`resume` by id.
|
|
623
|
+
|
|
624
|
+
### Fixed
|
|
625
|
+
- Preserve compact nested child summaries in grouped result/intercom payloads and async completion metadata before ordinary result files are processed and deleted.
|
|
626
|
+
- Keep async result files retryable when nested registry enrichment temporarily fails, instead of marking them seen before a successful delivery pass.
|
|
627
|
+
- Require an explicit id for child-safe nested `status` when no local foreground run is active, preventing fanout children from listing unrelated top-level async runs.
|
|
628
|
+
- Keep fanout child control inbox polling alive across transient filesystem errors, and retain control requests for retry when control-result writes fail.
|
|
629
|
+
- Share nested path/env sanitization between child launch arguments and nested event projection.
|
|
630
|
+
|
|
631
|
+
## [0.24.4] - 2026-05-20
|
|
632
|
+
|
|
633
|
+
### Fixed
|
|
634
|
+
- Treat provider-coerced single-run `output: "false"` the same as boolean `false`, preventing literal `false` output files in foreground and async runs.
|
|
635
|
+
- Include selected direct MCP tool names in explicit child `--tools` allowlists when metadata cache/config resolution is available.
|
|
636
|
+
- Honor `PI_CODING_AGENT_DIR` for runtime config, agent/chain/settings discovery, skills, run history, artifact cleanup, and intercom defaults.
|
|
637
|
+
- Hide nested child Pi process windows on Windows for both foreground and background subagent runs.
|
|
638
|
+
- Avoid completion-guard false positives for declared read-only agents, and add `completionGuard: false` for bash-enabled non-implementation agents that should not be required to edit files.
|
|
639
|
+
- Skip empty or whitespace-only assistant text parts when selecting subagent final output, so later meaningful text in the same or earlier assistant message is not masked.
|
|
640
|
+
- Declare `@earendil-works/pi-tui` as a runtime dependency so packaged installs can load the extension without relying on dev dependencies or optional peers.
|
|
641
|
+
- Treat recovered intermediate child tool/provider errors as successful when a later clean final assistant response is emitted, preventing false failed subagent results.
|
|
642
|
+
- Use progress-driven spinner frames in subagent result rows and async widgets, avoiding timer-driven off-screen redraw flicker in small terminals.
|
|
643
|
+
|
|
644
|
+
## [0.24.3] - 2026-05-14
|
|
645
|
+
|
|
646
|
+
### Added
|
|
647
|
+
- Show provider-free model and thinking labels in async subagent widgets and status views.
|
|
648
|
+
- Added a packaged `/review-loop` prompt for parent-controlled worker, fresh-reviewer, and fix-worker cycles that can run as an initial async chain or as follow-up subagent runs after async worker completions, stopping when reviewers find no fixes worth doing now or the review-round cap is reached.
|
|
649
|
+
|
|
650
|
+
### Fixed
|
|
651
|
+
- Let `async: true` chain tool calls run in the background when `clarify` is omitted, and avoid showing the async badge for explicit foreground clarify runs.
|
|
652
|
+
|
|
653
|
+
## [0.24.2] - 2026-05-10
|
|
654
|
+
|
|
655
|
+
### Fixed
|
|
656
|
+
- Show the `Ctrl+O` live-detail affordance for running single async subagent widgets when step details are available, while keeping the generic activity fallback before step status arrives.
|
|
657
|
+
|
|
658
|
+
## [0.24.1] - 2026-05-10
|
|
659
|
+
|
|
660
|
+
### Changed
|
|
661
|
+
- Migrated Pi package imports and package metadata to the `@earendil-works/*` scope, switched async TypeScript execution discovery to Pi's `jiti`, and hardened forked-session creation to use the public `SessionManager.open()` path.
|
|
662
|
+
|
|
663
|
+
## [0.24.0] - 2026-05-03
|
|
664
|
+
|
|
665
|
+
### Changed
|
|
666
|
+
- Consolidated async step activity and parallel-outcome formatting used by widgets and `subagent({ action: "status" })` output.
|
|
667
|
+
- Updated `/parallel-review` and `/parallel-cleanup` to end review synthesis with numbered follow-up choices, plus an `autofix` mode for automatically applying fixes worth doing now.
|
|
668
|
+
- Include async run output paths in `subagent({ action: "status" })` output so the remaining inspection path covers the logs previously surfaced by the removed overlay.
|
|
669
|
+
|
|
670
|
+
### Removed
|
|
671
|
+
- Removed the unnecessary `/agents` manager overlay, its `Ctrl+Shift+A` shortcut, and the `agentManager.newShortcut` setting to cut unnecessary UI surface area; agent and chain management remains available through tool actions, settings, and markdown files.
|
|
672
|
+
- Removed persistent save actions from the chain clarify UI: `S` no longer writes runtime overrides back to agent frontmatter, and `W` no longer saves `.chain.md` files. Clarify now only edits the imminent run.
|
|
673
|
+
- Removed the `/subagents-status` read-only overlay and its slash command; async runs remain inspectable through `subagent({ action: "status" })`, completion notifications, logs, and the async widget.
|
|
674
|
+
- Removed the standalone `src/tui/text-editor.ts`; chain clarify now keeps its small runtime editor logic local to the only remaining consumer.
|
|
675
|
+
|
|
676
|
+
## [0.23.1] - 2026-05-02
|
|
677
|
+
|
|
678
|
+
### Added
|
|
679
|
+
- Persist async per-child session metadata and remember recent foreground child session metadata so `resume` can revive multi-child async runs and foreground children by index.
|
|
680
|
+
|
|
681
|
+
### Fixed
|
|
682
|
+
- Keep foreground children alive when they call `contact_supervisor` for a blocking decision by treating it as intercom coordination during parent detach, matching the generic `intercom` handoff path.
|
|
683
|
+
- Pause foreground parallel and chain flows when a child detaches for intercom coordination instead of counting the child as a successful completed result and continuing the workflow, and suppress grouped completion receipts for detached chains.
|
|
684
|
+
- Tighten resume/revive safety by rejecting pending async children, detached foreground children that may still be live, ambiguous foreground/async id prefixes, and exact invalid resume matches that would otherwise be masked by a prefix match in the other namespace.
|
|
685
|
+
- Preserve child session metadata in stale-run repaired results and avoid advertising revive from top-level-only or missing child session files.
|
|
686
|
+
- Stop builtin `reviewer` runs from writing progress by default, clarify that review-only/no-edit instructions win over progress-writing or artifact-writing instructions, and suppress automatic progress injection for explicit no-edit tasks even when chain templates use `{task}`.
|
|
687
|
+
- Treat parsed provider errors as failed foreground and async subagent attempts even when the child process exits successfully, and baseline saved output files per fallback attempt.
|
|
688
|
+
- Preserve output-file read and inspect errors instead of silently overwriting or falling back when a changed saved-output path cannot be read.
|
|
689
|
+
- Show each active async widget row's lifecycle status (`running`, `complete`, `failed`, or `paused`) alongside activity and usage stats.
|
|
690
|
+
- Start new direct, slash, prompt-template, foreground, and async subagent launches in compact view while keeping `Ctrl+O` available for live detail.
|
|
691
|
+
- Label top-level async parallel completion notifications as parallel runs instead of leaking the internal chain-shaped runner plan.
|
|
692
|
+
|
|
693
|
+
## [0.23.0] - 2026-05-02
|
|
694
|
+
|
|
695
|
+
### Fixed
|
|
696
|
+
- Detect `pi-intercom` when installed through the documented `pi install npm:pi-intercom` package flow, instead of only checking the legacy local extension path.
|
|
697
|
+
|
|
698
|
+
### Changed
|
|
699
|
+
- Store and discover saved chain workflows from dedicated chain directories: user chains in `~/.pi/agent/chains/**/*.chain.md` and project chains in `.pi/chains/**/*.chain.md`.
|
|
700
|
+
- Retry foreground subagent fallback models when Pi reports a retryable provider error, such as 429/quota, even if the child process exits successfully.
|
|
701
|
+
- Align single-run async subagent widgets and `/subagents-status` rendering with foreground subagent result styling for parallel, chain, and grouped chain runs, including inline live detail when tool output expansion is enabled, while keeping multi-job async widgets compact.
|
|
702
|
+
- Render async subagent widgets through an adaptive component so active parallel agent rows fit without Pi's fixed string-widget truncation marker.
|
|
703
|
+
- Tell parent agents that async runs are detached and they should end the turn instead of running sleep/poll loops when no independent work remains.
|
|
704
|
+
|
|
705
|
+
## [0.22.0] - 2026-05-02
|
|
706
|
+
|
|
707
|
+
### Added
|
|
708
|
+
- Added child-only supervisor contact support for delegated subagents through `contact_supervisor`, with `need_decision` for blocking supervisor replies and `progress_update` for concise non-blocking updates.
|
|
709
|
+
- Pass supervisor intercom metadata into foreground, chain, parallel, and background child runs so the child-facing pi-intercom tool can resolve the delegating session automatically.
|
|
710
|
+
|
|
711
|
+
### Changed
|
|
712
|
+
- Builtin agents now inherit the user's configured default model instead of pinning `openai-codex/gpt-5.5`; use builtin overrides to pin a model for a role.
|
|
713
|
+
- Hide unsupported thinking levels in subagent clarify and agent-manager pickers when Pi exposes per-model thinking metadata.
|
|
714
|
+
- Updated builtin agent prompts, README, and bundled skill docs to prefer `contact_supervisor` for blocked decisions and avoid child-side routine completion handoffs.
|
|
715
|
+
- Teach reviewer agents that repo-local `progress.md` files are intentional scratch files that should remain untracked and covered by `.gitignore`.
|
|
716
|
+
|
|
717
|
+
### Fixed
|
|
718
|
+
- Added regression coverage for supervisor metadata propagation into child process environments.
|
|
719
|
+
|
|
720
|
+
## [0.21.5] - 2026-05-02
|
|
721
|
+
|
|
722
|
+
### Fixed
|
|
723
|
+
- Show top-level async parallel runs as `parallel` instead of `chain`, with foreground-style running/done wording in widgets and status output, and group running async chain detail by chain step.
|
|
724
|
+
- Scoped `/subagents-status` to async runs launched from the current pi session instead of showing prior or unrelated sessions.
|
|
725
|
+
- Declared the Pi TUI package as a direct dev dependency and added a manifest guard so CI installs do not rely on transitive optional peer dependencies for tests.
|
|
726
|
+
- Made prompt-runtime extension path assertions portable on Windows.
|
|
727
|
+
|
|
728
|
+
## [0.21.4] - 2026-05-01
|
|
729
|
+
|
|
730
|
+
### Added
|
|
731
|
+
- Added explicit frontmatter `package` identifiers for agents and saved chains, registering runtime names like `code-analysis.scout` while preserving separate `name` and `package` fields on save.
|
|
732
|
+
- Added recursive subdirectory discovery for user and project agent and chain definitions.
|
|
733
|
+
- Added `outputMode: "inline" | "file-only"` for saved subagent outputs. `inline` remains the default, while `file-only` returns a concise saved-file reference instead of injecting full saved output back into the parent context.
|
|
734
|
+
|
|
735
|
+
### Fixed
|
|
736
|
+
- Marked Pi runtime peer dependencies as optional so npm package installs do not auto-install duplicate Pi packages or emit unrelated transitive dependency warnings.
|
|
737
|
+
|
|
738
|
+
## [0.21.3] - 2026-04-30
|
|
739
|
+
|
|
740
|
+
### Fixed
|
|
741
|
+
- Debounce foreground `needs_attention` notices, make them non-triggering, and cancel them when the run finishes so stale chain-step alerts do not launch parent turns after completion.
|
|
742
|
+
|
|
743
|
+
## [0.21.2] - 2026-04-30
|
|
744
|
+
|
|
745
|
+
### Added
|
|
746
|
+
- Added a packaged `/parallel-context-build` prompt for parallel `context-builder` handoff passes.
|
|
747
|
+
- Added a packaged `/parallel-handoff-plan` prompt for external-reference research plus local `context-builder` passes that produce an implementation handoff meta-prompt.
|
|
748
|
+
|
|
749
|
+
### Changed
|
|
750
|
+
- Strengthened `context-builder` guidance so handoffs require reading all relevant files and doing needed tool-available research before summarizing.
|
|
751
|
+
- Expanded the bundled `pi-subagents` skill with tool-level recipes for the packaged prompt workflows, including context-build and handoff-plan patterns that parent agents can apply without slash commands.
|
|
752
|
+
- Updated `README.md` to explain the bundled `pi-subagents` skill, what it covers, and how it helps the orchestrating agent.
|
|
753
|
+
|
|
754
|
+
### Fixed
|
|
755
|
+
- Make active-long-running notices time-based by default, with turn and token thresholds available only as explicit opt-in budget guards.
|
|
756
|
+
- Stop async status listing from inventing `needs_attention` with default thresholds when the runner has not persisted a control state.
|
|
757
|
+
- Treat string `"false"` output settings as disabled output so parallel reviewers do not collide on a `/false` output path, including chain-parallel agent defaults.
|
|
758
|
+
- Wrap long `/subagents-status` detail output/event lines instead of truncating them with ellipses.
|
|
759
|
+
- Treat cleanup after a clean terminal assistant stop as success even when the final assistant text is empty, using a short grace period before terminating lingering child processes without surfacing scary final-drain warnings.
|
|
760
|
+
- Express flexible tool schema fields as `anyOf` unions without parent-level `type` arrays, avoiding schema shapes rejected by strict providers such as Moonshot/opencode-go.
|
|
761
|
+
|
|
762
|
+
## [0.21.1] - 2026-04-30
|
|
763
|
+
|
|
764
|
+
### Changed
|
|
765
|
+
- Changed the `/agents` new-agent shortcut from `Alt+N` to `Shift+Ctrl+N`, and added `agentManager.newShortcut` config for overriding it.
|
|
766
|
+
|
|
767
|
+
### Fixed
|
|
768
|
+
- Fall back to polling async result files when native result watching is unavailable due to `EMFILE` or `ENOSPC`.
|
|
769
|
+
- Treat forced final-drain termination after a valid final assistant output as cleanup success instead of failing the subagent run.
|
|
770
|
+
- Hide disabled builtin agents from `subagent({ action: "list" })` output so agent-facing choices match executable runtime discovery.
|
|
771
|
+
- Resolve intercom bridge default paths at runtime so tests and isolated environments that change `HOME` use the correct `pi-intercom` location.
|
|
772
|
+
- Made the tool-description source check tolerant of Windows line endings.
|
|
773
|
+
|
|
774
|
+
## [0.21.0] - 2026-04-29
|
|
775
|
+
|
|
776
|
+
### Changed
|
|
777
|
+
- Document the recommended parent-agent workflow as `clarify → planner → worker → fresh reviewers → worker` in the docs and bundled skill.
|
|
778
|
+
- Packaged `planner`, `worker`, and `oracle` now default to forked session context when the launch omits `context`; explicit `context: "fresh"` still overrides the agent default.
|
|
779
|
+
- Expanded builtin subagent guidance so agents with a safe pi-intercom target can hand results back with blocking `intercom ask`, documented the self-orchestrated clarify → plan → implement → review workflow, and added GPT-5.5-oriented subagent prompt guidance to the bundled skill and `context-builder`.
|
|
780
|
+
|
|
781
|
+
### Fixed
|
|
782
|
+
- Prevent child subagents from receiving parent orchestration tooling/history, and inject boundary instructions that forbid sub-delegation and pseudo tool calls.
|
|
783
|
+
- Added active-long-running and repeated mutating-tool failure notices so supervised/forked workers cannot burn turns silently while still appearing healthy.
|
|
784
|
+
- Fixed task editor wrapping so wide characters cannot push text past the right border.
|
|
785
|
+
- Mark implementation subagents as failed when they complete without any file mutation attempt.
|
|
786
|
+
- Applied the same no-mutation completion guard to async/background runner paths.
|
|
787
|
+
- Split terminal no-mutation guard notices from live idle notices so completed failures do not suggest status or interrupt commands.
|
|
788
|
+
- Clarified worker/intercom bridge instructions so blocked decisions use `intercom ask` and stay alive for the reply instead of completing with a question.
|
|
789
|
+
- Labeled the Agents widget as async/background work so running detached agents are easier to identify.
|
|
790
|
+
- Reworked parallel progress wording so parallel runs show running/done agent counts (and chain parallel groups show `step X/Y · parallel group` with agent fractions) instead of serial `step X/Y` counters.
|
|
791
|
+
- Expanded `/parallel-cleanup` guidance to flag redundant wrapper tests when one focused regression is enough.
|
|
792
|
+
- Fixed flexible schema validation for `reads` and `skill` overrides so `reads: false`, `skill: "review"`, and `skill: false` no longer trigger `element.reads.every is not a function` (issue #124).
|
|
793
|
+
- Hardened slash-result and async-widget animation timers so stale extension contexts after `/new` or reload stop their timers instead of crashing on `ctx.ui` access (issue #122).
|
|
794
|
+
|
|
795
|
+
## [0.20.1] - 2026-04-27
|
|
796
|
+
|
|
797
|
+
### Fixed
|
|
798
|
+
- Made the packaged `/parallel-cleanup` prompt self-contained instead of referencing local-only cleanup skills.
|
|
799
|
+
|
|
800
|
+
## [0.20.0] - 2026-04-27
|
|
801
|
+
|
|
802
|
+
### Added
|
|
803
|
+
- Added a packaged `/parallel-cleanup` prompt for focused cleanup review passes.
|
|
804
|
+
|
|
805
|
+
### Changed
|
|
806
|
+
- Consolidated the `oracle-executor` role into `worker`: `worker` now uses `openai-codex/gpt-5.3-codex` with high thinking and stricter approved-direction guardrails, while `researcher` and `context-builder` now use medium thinking.
|
|
807
|
+
- Updated the bundled `scout` agent model/thinking defaults.
|
|
808
|
+
- Hard-cut over grouped intercom bridge result delivery: with the bridge active, parent-side `pi-subagents` emits one grouped `subagent:result-intercom` message per foreground parent run (single, top-level parallel, or chain) and one per completed async result file. Acknowledged foreground delivery returns a compact receipt instead of duplicating full output in the normal tool result; unacknowledged delivery preserves the normal full output. Grouped messages include child intercom targets and full child summaries.
|
|
809
|
+
|
|
810
|
+
### Fixed
|
|
811
|
+
- Fixed status and manager row rendering so multiline or tabbed content cannot overflow table rows.
|
|
812
|
+
|
|
813
|
+
### Removed
|
|
814
|
+
- Removed the bundled `oracle-executor` agent and `/oracle-executor` prompt template in favor of using `worker` for approved oracle handoffs.
|
|
815
|
+
|
|
816
|
+
## [0.19.3] - 2026-04-27
|
|
817
|
+
|
|
818
|
+
### Changed
|
|
819
|
+
- Updated the packaged `/parallel-review` prompt so reviewer angles are generated dynamically from the user's intent, plan, implemented code, and current diff, with the listed angles framed as examples rather than fixed defaults.
|
|
820
|
+
|
|
821
|
+
## [0.19.2] - 2026-04-27
|
|
822
|
+
|
|
823
|
+
### Added
|
|
824
|
+
- Added packaged prompt templates for common subagent workflows: `/parallel-research`, `/gather-context-and-clarify`, and `/oracle-executor`.
|
|
825
|
+
|
|
826
|
+
### Changed
|
|
827
|
+
- Tightened the packaged `/parallel-review` prompt so fresh-context reviewers get distinct angles and return evidence-backed findings.
|
|
828
|
+
- Refreshed the packaged `pi-subagents` skill with doctor diagnostics, saved-chain launches, prompt shortcuts, builtin overrides, intercom bridge guidance, fresh-context review defaults, and parallel task behavior.
|
|
829
|
+
- Reworked the README around plain-language usage, good first prompts, packaged prompt shortcuts, builtin agent guidance, intercom setup, model overrides, and optional reference material.
|
|
830
|
+
|
|
831
|
+
## [0.19.1] - 2026-04-26
|
|
832
|
+
|
|
833
|
+
### Added
|
|
834
|
+
- Added `subagent({ action: "doctor" })` and `/subagents-doctor` for read-only subagent environment diagnostics.
|
|
835
|
+
- Added `/run-chain` to launch saved `.chain.md` workflows directly from slash commands with completion, shared task input, and `--bg`/`--fork` support.
|
|
836
|
+
|
|
837
|
+
## [0.19.0] - 2026-04-26
|
|
838
|
+
|
|
839
|
+
### Added
|
|
840
|
+
- Added top-level parallel task support for per-task `output`, `reads`, and `progress`, including `/parallel` inline forwarding and async preservation.
|
|
841
|
+
- Added `/agents` launch toggles for forked context, background execution, and worktree-isolated parallel runs.
|
|
842
|
+
- Added a read-only detail view to `/subagents-status` for inspecting selected async runs, including recent events, output tails, and useful run paths.
|
|
843
|
+
- Added a packaged `/parallel-review` prompt template for launching fresh-context adversarial review subagents.
|
|
844
|
+
|
|
845
|
+
### Fixed
|
|
846
|
+
- Parallel and chain child runs now detach cleanly when a child uses intercom, preventing incoming handoff messages from aborting the parent foreground run.
|
|
847
|
+
|
|
848
|
+
## [0.18.1] - 2026-04-25
|
|
849
|
+
|
|
850
|
+
### Changed
|
|
851
|
+
- Restyled live subagent rendering, async widgets, and background completion notifications with compact Claude-style visual grammar while preserving existing observability paths.
|
|
852
|
+
- Parallel subagent result rendering now labels parallel workers as `Agent N` instead of `Step N`, while chain rendering keeps step terminology.
|
|
853
|
+
|
|
854
|
+
### Fixed
|
|
855
|
+
- `/run` and single-agent tool calls now allow self-contained agents to run without a task string.
|
|
856
|
+
- The `subagent` tool description no longer advertises hardcoded builtin agent names and management list output now separates disabled builtins from executable agents.
|
|
857
|
+
- Flexible `subagent` tool schema fields now include explicit JSON Schema types so llama.cpp and local OpenAI-compatible providers accept them.
|
|
858
|
+
- Settings package sources now resolve explicit `git:` and `npm:` entries from project and user package caches.
|
|
859
|
+
- Slash-command subagent results are now export-friendly, including completed output and child session paths in visible export content.
|
|
860
|
+
|
|
861
|
+
## [0.18.0] - 2026-04-23
|
|
862
|
+
|
|
863
|
+
### Added
|
|
864
|
+
- Added subagent control notifications so `needs_attention` signals push structured parent events, persist async control events to `events.jsonl`, show visible transcript notices for the user and parent agent, include proactive `nudge`/`status`/`interrupt` commands when a child appears blocked, and show each visible notice at most once per child run and attention state.
|
|
865
|
+
- Added stable child intercom session names for controlled subagents so needs-attention pings can tell the orchestrator which agent needs attention and how to message it when intercom is available.
|
|
866
|
+
|
|
867
|
+
### Changed
|
|
868
|
+
- Replaced the unreleased `starting`/`active`/`quiet`/`stalled`/`paused` activity labels with factual activity reporting and a single `needs_attention` control signal, keeping `paused` as lifecycle state only.
|
|
869
|
+
- Added `subagent({ action: "status", id })` and `subagent({ action: "status" })` as the control-surface status checks, replacing the separate `subagent_status(...)` tool.
|
|
870
|
+
- Adjusted bundled agent defaults: most builtins now use `openai-codex/gpt-5.5`, while `scout` uses `openai-codex/gpt-5.4-mini`.
|
|
871
|
+
- Removed the incomplete e2e suite and stale `@marcfargas/pi-test-harness` dev dependency; `test:all` now runs the maintained unit and integration suites.
|
|
872
|
+
|
|
873
|
+
### Fixed
|
|
874
|
+
- Paused async runs now render `Background task paused` notifications instead of failed/completed copy, including after extension reloads with stale legacy listeners still present.
|
|
875
|
+
- Async status output no longer shows stale activity-age lines for paused or completed runs.
|
|
876
|
+
|
|
877
|
+
## [0.17.5] - 2026-04-23
|
|
878
|
+
|
|
879
|
+
### Added
|
|
880
|
+
- Added subagent control activity state for foreground and async runs, including `starting`/`active`/`quiet`/`stalled`/`paused` tracking, compact stalled/recovered/paused control events, and an in-tool `action: "interrupt"` soft interrupt that pauses the current child turn without adding another top-level tool.
|
|
881
|
+
|
|
882
|
+
### Changed
|
|
883
|
+
- Updated bundled agents to use `openai-codex/gpt-5.5` defaults, with `scout` on `openai-codex/gpt-5.5-mini` and `oracle-executor` on `openai-codex/gpt-5.5:xhigh`.
|
|
884
|
+
|
|
885
|
+
### Fixed
|
|
886
|
+
- Async/background status token reporting now falls back to in-memory model-attempt usage when detached runs do not produce session `.jsonl` files, which also preserves token totals across model fallback retries.
|
|
887
|
+
- Non-Windows subagent launches now use plain `pi` again instead of reusing the current CLI script path, avoiding runs that get confused by installed `dist/cli.js` entrypoints.
|
|
888
|
+
|
|
889
|
+
## [0.17.4] - 2026-04-22
|
|
890
|
+
|
|
891
|
+
### Added
|
|
892
|
+
- Bundled a `pi-subagents` skill that teaches agents how to use builtin subagents, slash-command vs tool workflows, management-mode agent creation/editing, fork/intercom coordination, clarify mode, worktrees, async status inspection, and chain templating.
|
|
893
|
+
|
|
894
|
+
### Changed
|
|
895
|
+
- Tightened the builtin `oracle` prompt so intercom-enabled forked reviews now prefer concise conversational handoffs during the review and send a short final recommendation via `pi-intercom` before returning the full structured result.
|
|
896
|
+
- Tightened `oracle-executor` so it explicitly frames itself as the single writer thread and escalates gaps in the approved direction instead of silently patching around them.
|
|
897
|
+
|
|
898
|
+
## [0.17.3] - 2026-04-22
|
|
899
|
+
|
|
900
|
+
### Added
|
|
901
|
+
- Added builtin `oracle` and `oracle-executor` agents for the `main -> oracle -> main decision -> oracle-executor` workflow, plus README guidance for invoking the oracle pair with forked context.
|
|
902
|
+
|
|
903
|
+
### Fixed
|
|
904
|
+
- Migrated extension tool schemas from `@sinclair/typebox` to `typebox` 1.x so packaged installs follow Pi's current extension runtime contract.
|
|
905
|
+
|
|
906
|
+
### Changed
|
|
907
|
+
- Moved TypeBox from `peerDependencies` to a real `dependencies` entry so `pi install` production installs keep the schema package available at runtime.
|
|
908
|
+
|
|
909
|
+
## [0.17.2] - 2026-04-21
|
|
910
|
+
|
|
911
|
+
### Added
|
|
912
|
+
- Added `forceTopLevelAsync` so depth-0 delegated runs can be forced into background mode with `clarify: false`, while nested runs keep their existing behavior.
|
|
913
|
+
|
|
914
|
+
### Fixed
|
|
915
|
+
- Background completion notifications now render `(no output)` instead of a blank body when a completion summary is empty or whitespace-only.
|
|
916
|
+
- Async status and token reporting now rerender more reliably when cleanup state changes, read token usage from `message.usage`, and prefer the newest session file when multiple async session files exist.
|
|
917
|
+
- Async/background startup now fails fast for invalid resolved `cwd` values and spawn failures instead of reporting false launch success.
|
|
918
|
+
- Sync and async runner paths now drain stuck child processes in bounded time, covering both post-exit stdio holders and children that emit a final message but never exit.
|
|
919
|
+
|
|
920
|
+
## [0.17.1] - 2026-04-20
|
|
921
|
+
|
|
922
|
+
### Added
|
|
923
|
+
- Foreground subagent runs now make deeper live detail easier to discover. Running cards show an explicit `Ctrl+O` hint, lightweight live-state signals like recent activity, current-tool durations, and artifact output paths when available. Common array-heavy tool previews such as `web_search.queries` and `fetch_content.urls` are now summarized more clearly instead of collapsing into opaque fallback text.
|
|
924
|
+
|
|
925
|
+
### Changed
|
|
926
|
+
- Forked delegated runs now use stronger prompt-side guidance for `pi-intercom` coordination instead of runtime policing. The default fork preamble and intercom bridge instructions now explicitly treat inherited fork history as reference-only context, tell children not to continue the parent conversation in normal assistant text, and steer supervisor questions or handoffs through `intercom` when needed.
|
|
927
|
+
- Documented an opt-in custom agent pattern for forked chat-back workflows so users can make that coordination contract explicit without changing builtin agents.
|
|
928
|
+
- Slash-run status text and `/subagents-status` summary output now use the same more explicit observability language, including clearer live-detail hints and surfaced output/session paths in the async status overlay.
|
|
929
|
+
- Builtin agent defaults now prefer `openai-codex` models for `planner`, `scout`, `researcher`, `context-builder`, and `worker`.
|
|
930
|
+
|
|
931
|
+
### Fixed
|
|
932
|
+
- Removed the short-lived foreground intercom enforcement/retry layer from delegated fork runs. Coordination behavior is now shaped by prompt and agent design only, avoiding hidden retries, heuristic output inspection, and failure paths based on guessed intent.
|
|
933
|
+
|
|
934
|
+
## [0.17.0] - 2026-04-16
|
|
935
|
+
|
|
936
|
+
### Added
|
|
937
|
+
- Builtin agents can now be disabled through `subagents.agentOverrides.<name>.disabled` or the bulk `subagents.disableBuiltins` setting, with `/agents` keeping disabled builtins visible so they can be re-enabled from the manager. This builds on PR `#81`. Thanks @danielcherubini.
|
|
938
|
+
|
|
939
|
+
### Fixed
|
|
940
|
+
- Builtin disable precedence is now coherent across user and project settings: project overrides beat user overrides, project bulk disable beats user re-enable attempts, and same-scope per-agent overrides can opt an agent out of bulk disable.
|
|
941
|
+
- `/agents` now blocks launching disabled builtins, shows their disabled state in list/detail views and management output, and avoids exposing the builtin-only `disabled` field when editing normal user/project agents.
|
|
942
|
+
- Multi-agent chain launches from `/agents` now collect a task before dispatching instead of emitting an empty task, and settings read failures now surface as read errors instead of being mislabeled as parse failures.
|
|
943
|
+
|
|
944
|
+
## [0.16.1] - 2026-04-16
|
|
945
|
+
|
|
946
|
+
### Changed
|
|
947
|
+
- Parallel subagent startup no longer applies any worker-start stagger in `mapConcurrent()`. `pi-subagents` now relies on Pi core's settings/auth lock retry behavior instead of carrying its own startup-delay workaround.
|
|
948
|
+
|
|
949
|
+
## [0.16.0] - 2026-04-16
|
|
950
|
+
|
|
951
|
+
### Added
|
|
952
|
+
- Top-level parallel `tasks` mode now supports a per-call `concurrency` override, matching the existing chain parallel-step concurrency control. This ships part of issue `#91`. Thanks @Gabrielgvl.
|
|
953
|
+
|
|
954
|
+
### Changed
|
|
955
|
+
- Top-level parallel defaults and limits can now be configured through `~/.pi/agent/extensions/subagent/config.json` under `parallel.maxTasks` and `parallel.concurrency`, while keeping the existing defaults of 8 tasks and concurrency 4 when unset. This completes issue `#91`. Thanks @Gabrielgvl.
|
|
956
|
+
|
|
957
|
+
### Fixed
|
|
958
|
+
- `context: "fork"` sync runs now create child sessions from a throwaway session-manager instance opened on the persisted parent session file, instead of mutating the live parent session manager. This keeps the parent session writing to its own file so the matching `toolResult(subagent)` no longer lands in a descendant session by accident. This fixes issue `#87`. Thanks @asmisha.
|
|
959
|
+
- Project agent and chain discovery now reads both `.agents/` and `.pi/agents/`, while preferring `.pi/agents/` when both locations define the same parsed name and keeping manager writes on the `.pi/agents/` path. This fixes issue `#88`. Thanks @desek.
|
|
960
|
+
- Ctrl+O expanded subagent results now actually show expanded content. Previously the `expanded` flag was received but ignored, so task text and tool-call args were identically truncated in both views. Now expanded mode shows the full task and longer (but still bounded) tool-call previews. Additionally, tool calls are no longer lost after foreground compaction: compact display summaries are preserved and shown in expanded view even after `messages` are stripped. This addresses issue `#90`. Thanks @asagajda.
|
|
961
|
+
|
|
962
|
+
## [0.15.0] - 2026-04-16
|
|
963
|
+
|
|
964
|
+
### Added
|
|
965
|
+
- Added `systemPromptMode` so subagents can replace Pi's base prompt with `--system-prompt` instead of always appending with `--append-system-prompt`, shipping the core of issue `#85` from @isvlasov.
|
|
966
|
+
- Added `inheritProjectContext` and `inheritSkills` so child runs can keep or strip inherited project instruction files (`AGENTS.md`, `CLAUDE.md`, etc.) and Pi's discovered skills block.
|
|
967
|
+
|
|
968
|
+
### Changed
|
|
969
|
+
- Builtin subagents now default to `systemPromptMode: replace`, with builtin `delegate` staying on `append`.
|
|
970
|
+
- Builtin agents now inherit project-level instruction files by default unless the user overrides them.
|
|
971
|
+
- Builtin agent prompts were rewritten for the new prompt-assembly model, and builtin `reviewer` / `context-builder` tool lists now match their documented behaviors. This rounds out the prompt-assembly work merged in PR `#92`, which closed issue `#85`. Thanks @isvlasov.
|
|
972
|
+
|
|
973
|
+
### Fixed
|
|
974
|
+
- Cross-platform tests now avoid machine-specific Pi install paths, align homedir-sensitive settings discovery on Windows CI, and use deterministic async config-write failure fixtures.
|
|
975
|
+
- Request-level `cwd` handling is now consistent across management and execution paths. `subagent` requests that target a worktree or nested checkout now resolve project agents, project settings, and builtin agent overrides from the requested `cwd` instead of accidentally inheriting the parent session's repo. This fixes issue `#83`. Thanks @hakin19 for the report.
|
|
976
|
+
- Relative child `cwd` values now resolve from the already-selected request/shared `cwd` across sync runs, async/background runs, chain steps, and top-level parallel tasks. This fixes cases where values like `packages/app` were interpreted from the wrong base directory, which could break skill lookup, output paths, and child process spawning.
|
|
977
|
+
- Worktree parallel-mode validation now compares task-level `cwd` overrides after relative-path resolution, so equivalent paths like `.` no longer trigger false conflict errors against the shared worktree base.
|
|
978
|
+
- Internal TypeScript source imports in the touched runtime paths now consistently use `.ts` local specifiers, matching the repo's direct TypeScript runtime loading conventions and reducing drift between adjacent modules.
|
|
979
|
+
|
|
980
|
+
## [0.14.1] - 2026-04-14
|
|
981
|
+
|
|
982
|
+
### Fixed
|
|
983
|
+
- Completed foreground subagent results now return compact payloads instead of inlining full raw message histories and per-result progress objects, preventing long tool-heavy sync runs from overwhelming the parent agent return path.
|
|
984
|
+
- Prompt-template delegation now rebuilds minimal assistant messages from compact foreground results when raw message arrays are intentionally omitted.
|
|
985
|
+
- UI/status wording now uses plain text labels instead of glyph-heavy markers across foreground rendering, parallel summaries, save-result receipts, installer output, agent manager views, clarify screens, and the corresponding README/CHANGELOG examples.
|
|
986
|
+
- Added a realistic foreground integration repro for issue `#80` and cleaned up the touched tests to remove the remaining blunt `as any` fixture casts.
|
|
987
|
+
|
|
988
|
+
## [0.14.0] - 2026-04-14
|
|
989
|
+
|
|
990
|
+
### Added
|
|
991
|
+
- Builtin agents can now be customized through settings-backed field overrides in `~/.pi/agent/settings.json` and `.pi/settings.json` under `subagents.agentOverrides`, with `/agents` exposing a create/edit override flow instead of forcing full-file copies for model/thinking/tool/prompt tweaks.
|
|
992
|
+
|
|
993
|
+
### Fixed
|
|
994
|
+
- Shared temp paths are now scoped under a user-specific temp root across async result storage, async run state, chain directories, artifact fallback storage, and detached async config files, avoiding cross-user collisions on shared machines while still handling arbitrary-UID/container environments where `os.userInfo()` can throw.
|
|
995
|
+
- Async/background runs now launch child `pi` processes in JSON mode, stream child events into `events.jsonl` with step metadata while the run is active, keep `output-<n>.log` live with human-readable child output, and document that `subagent-log-<id>.md` is a completion artifact.
|
|
996
|
+
- Bare model IDs now prefer the active parent-session provider when that provider actually exposes the model, across sync, chain, parallel, async, and clarify flows. Ambiguous bare IDs still fall back to conservative resolution.
|
|
997
|
+
- Skill resolution now includes local package roots declared in project/user `settings.json -> packages`, checks the effective task `cwd` before the runtime cwd, and still falls back to the runtime cwd when a nested task inherits package-provided skills from the repo root.
|
|
998
|
+
|
|
999
|
+
## [0.13.4] - 2026-04-13
|
|
1000
|
+
|
|
1001
|
+
### Fixed
|
|
1002
|
+
- Intercom orchestration now uses a runtime-only `subagent-chat-<id>` fallback target for unnamed sessions instead of persisting a generic session title, so `pi --resume` keeps showing transcript snippets while delegated intercom routing still works.
|
|
1003
|
+
- GitHub Actions test workflow now uses `actions/checkout@v5` and `actions/setup-node@v5`, removing Node 20 action-runtime deprecation warnings ahead of the enforced Node 24 transition.
|
|
1004
|
+
- Worktree cwd mapping now derives repo-relative prefixes from `git rev-parse --show-prefix` instead of `path.relative(realpath, realpath)`, fixing Windows 8.3/canonical-path mismatches that could map `agentCwd` back to the source repo instead of the created worktree.
|
|
1005
|
+
- Async background runs now pass the parent process `argv[1]` through to the detached runner, so Windows child spawning keeps targeting the intended `pi` CLI entry point instead of accidentally treating the runner's `jiti` bootstrap script as `pi`.
|
|
1006
|
+
- Intercom detach listeners now guard optional event-bus subscriptions with optional-call semantics, so delegated runs no longer fail when host event buses expose `emit` without `on`.
|
|
1007
|
+
- Skill discovery no longer depends on runtime imports from `@mariozechner/pi-coding-agent`; it now resolves skills directly from configured filesystem paths, preventing `ERR_MODULE_NOT_FOUND` crashes in local/integration test environments.
|
|
1008
|
+
|
|
1009
|
+
## [0.13.3] - 2026-04-13
|
|
1010
|
+
|
|
1011
|
+
### Added
|
|
1012
|
+
- Added `intercomBridge.instructionFile` so subagent intercom guidance can be overridden from a Markdown template with `{orchestratorTarget}` interpolation.
|
|
1013
|
+
|
|
1014
|
+
### Fixed
|
|
1015
|
+
- Intercom-enabled delegated runs now detach only after the child actually starts the `intercom` tool, preserving clean sync behavior until coordination is needed.
|
|
1016
|
+
- Graceful intercom coordination no longer leaves detached child runs vulnerable to later parent abort listeners, and reply confirmation follow-ups avoid unnecessary orchestrator aborts.
|
|
1017
|
+
- Child process spawn failures now preserve the original error message instead of collapsing to a generic failure.
|
|
1018
|
+
|
|
1019
|
+
## [0.13.2] - 2026-04-13
|
|
1020
|
+
|
|
1021
|
+
### Changed
|
|
1022
|
+
- `intercomBridge` now defaults to `always` so intercom coordination instructions are injected for both `fresh` and `fork` delegated runs when `pi-intercom` is available.
|
|
1023
|
+
|
|
1024
|
+
## [0.13.1] - 2026-04-13
|
|
1025
|
+
|
|
1026
|
+
### Added
|
|
1027
|
+
- Added optional intercom orchestration bridge for delegated runs. When enabled via `intercomBridge` (default `fork-only`) and `pi-intercom` is available, child subagents get runtime coordination instructions for contacting the orchestrator session via `intercom`, and `intercom` is auto-added to the child tool allowlist when needed.
|
|
1028
|
+
- Added unit coverage for intercom bridge activation, config handling, and extension allowlist behavior.
|
|
1029
|
+
|
|
1030
|
+
### Changed
|
|
1031
|
+
- Normalized `subagent-executor.ts` relative imports to `.ts` specifiers to match direct TypeScript runtime loading.
|
|
1032
|
+
- Documented `pi-intercom` installation and activation requirements in README.
|
|
1033
|
+
|
|
1034
|
+
### Fixed
|
|
1035
|
+
- Tightened intercom extension allowlist matching to avoid false positives from similarly named extension paths.
|
|
1036
|
+
|
|
1037
|
+
## [0.13.0] - 2026-04-11
|
|
1038
|
+
|
|
1039
|
+
### Added
|
|
1040
|
+
- Added native agent `fallbackModels` support. Agents can now declare ordered backup models, and single, chain, parallel, and async/background runs retry on provider/model-style failures such as quota, auth, timeout, or provider/model unavailability.
|
|
1041
|
+
|
|
1042
|
+
### Fixed
|
|
1043
|
+
- Fallback attempts now preserve observability across sync and async execution: results, artifact metadata, async status, and run logs record attempted models and per-attempt outcomes instead of only the final pass.
|
|
1044
|
+
- Child subagent runs now pass model selections through `--model` instead of `--models`, so live execution pins the intended model correctly and end-to-end fallback behavior matches the validated test path.
|
|
1045
|
+
|
|
1046
|
+
## [0.12.5] - 2026-04-09
|
|
1047
|
+
|
|
1048
|
+
### Fixed
|
|
1049
|
+
- Slash-command result cards now finalize through the extension's own snapshot timing instead of relying on core to treat hidden custom messages as in-place updates. The final slash snapshot and hidden persisted message are written before the last status-clear redraw, so live `/run`, `/chain`, and `/parallel` cards update to their final state more reliably.
|
|
1050
|
+
- Added focused slash-command regression coverage for the success/error ordering around visible placeholder messages, hidden final messages, and the final status-clear redraw.
|
|
1051
|
+
|
|
1052
|
+
## [0.12.4] - 2026-04-04
|
|
1053
|
+
|
|
1054
|
+
### Added
|
|
1055
|
+
- Added configurable subagent recursion depth controls with global `maxSubagentDepth` config and per-agent `maxSubagentDepth` frontmatter overrides. Child delegation now honors stricter inherited limits while still allowing per-agent tightening.
|
|
1056
|
+
- Added optional worktree setup hooks via extension config (`worktreeSetupHook`, `worktreeSetupHookTimeoutMs`). Hooks run once per created worktree, receive JSON over stdin, return JSON on stdout, and can declare synthetic helper paths (e.g. `.venv`, copied local config files) to exclude from patch capture.
|
|
1057
|
+
|
|
1058
|
+
### Fixed
|
|
1059
|
+
- Added support for loading agents and skills from `.agents/` and `~/.agents/` directories.
|
|
1060
|
+
- Switched internal source imports from `.js` to `.ts` so the extension can be loaded directly from TypeScript sources under the strip-types/transform-types runtime path.
|
|
1061
|
+
- Declared pi runtime packages and `@sinclair/typebox` as peer dependencies so direct source-loading environments fail less often from missing package resolution.
|
|
1062
|
+
- Single-output runs now preserve agent-written file contents instead of overwriting them with the final assistant receipt, and artifacts/truncation now follow the authoritative saved file content.
|
|
1063
|
+
- Async/background runs now reuse the current Node executable and prefer the resolved current pi CLI path on all platforms, avoiding PATH drift from wrapped or version-pinned parent launches.
|
|
1064
|
+
|
|
1065
|
+
### Changed
|
|
1066
|
+
- Added release documentation for TypeScript direct-runtime loading support and related package requirements.
|
|
1067
|
+
|
|
1068
|
+
## [0.12.2] - 2026-04-04
|
|
1069
|
+
|
|
1070
|
+
### Changed
|
|
1071
|
+
- Bumped pi package devDependencies to `^0.65.0` (`@mariozechner/pi-agent-core`, `@mariozechner/pi-ai`, `@mariozechner/pi-coding-agent`) to stay aligned with current pi SDK/runtime.
|
|
1072
|
+
|
|
1073
|
+
## [0.12.1] - 2026-04-03
|
|
1074
|
+
|
|
1075
|
+
### Changed
|
|
1076
|
+
- Updated session lifecycle handling for pi 0.65.0 by removing legacy post-transition resets and relying on `session_start` reinitialization, matching pi's removal of `session_switch` and `session_fork` extension events.
|
|
1077
|
+
|
|
1078
|
+
## [0.12.0] - 2026-03-31
|
|
1079
|
+
|
|
1080
|
+
### Added
|
|
1081
|
+
- Added git worktree isolation for parallel execution via `worktree: true`. Applies to top-level parallel `tasks`, chain steps with `{ parallel: [...] }`, and async/background chain execution. Each parallel task gets its own temporary git worktree, and the aggregated output now includes per-task diff stats plus the directory path containing full patch files.
|
|
1082
|
+
- Added `worktree.ts` to manage worktree lifecycle, diff capture, patch generation, and cleanup for isolated parallel runs.
|
|
1083
|
+
- Added `count: N` shorthand for top-level parallel `tasks` and chain `parallel` entries so one authored task can expand into repeated identical runs without manual duplication.
|
|
1084
|
+
- Added `subagent_status({ action: "list" })` to list active async runs with flattened step/member status summaries.
|
|
1085
|
+
- Added `/subagents-status`, a read-only overlay for active async runs plus recent completed/failed runs with per-run step details. The overlay auto-refreshes while open and preserves the selected run when possible.
|
|
1086
|
+
- Documented worktree isolation, async status surfaces, and the reorganized test layout in the README.
|
|
1087
|
+
|
|
1088
|
+
### Changed
|
|
1089
|
+
- Consolidated tests under `test/unit`, `test/integration`, `test/e2e`, and `test/support`, replacing the old mixed root-level and `test/` layout. Test scripts now target those directories explicitly.
|
|
1090
|
+
- Integration tests now use a tiny local file-based mock `pi` harness instead of relying on the external subprocess harness for normal subagent execution.
|
|
1091
|
+
- Removed legacy extra session lifecycle resets and now rely on immutable-session `session_start` reinitialization, matching pi's removal of post-transition `session_switch`/`session_fork` events.
|
|
1092
|
+
|
|
1093
|
+
### Fixed
|
|
1094
|
+
- Loader-based tests now resolve `.js` → `.ts` imports correctly when the repository path contains spaces or other URL-escaped characters. Added a focused regression test for the custom test loader.
|
|
1095
|
+
- Worktree-isolated parallel runs now reject task-level `cwd` overrides that differ from the shared batch/step `cwd`, instead of silently ignoring them. Applies to foreground parallel runs, chain parallel steps, and async/background execution.
|
|
1096
|
+
- Worktree diff capture now includes committed, modified, and newly created files without accidentally including the synthetic `node_modules` symlink used inside temporary worktrees.
|
|
1097
|
+
- Worktree setup now cleans up already-created worktrees if a later worktree in the same batch fails to initialize.
|
|
1098
|
+
- Prompt-template delegated parallel responses now preserve the aggregate worktree summary text instead of dropping it when rebuilding the final delegated output.
|
|
1099
|
+
- Async status and result JSON files are now written atomically so readers do not observe partial JSON during background updates.
|
|
1100
|
+
- `readStatus()` now returns `null` only for genuinely missing files and preserves real inspect/read/parse failures with context.
|
|
1101
|
+
- Async status polling and result watching now log status/result/watcher failures instead of silently swallowing them, making background completion/debugging failures visible.
|
|
1102
|
+
- Slash-command tests now match the current live snapshot contract instead of asserting the stale pre-finalized inline state.
|
|
1103
|
+
|
|
1104
|
+
## [0.11.12] - 2026-03-28
|
|
1105
|
+
|
|
1106
|
+
### Changed
|
|
1107
|
+
- Tool history (`recentTools`) in execution progress is now chronological (oldest first) and uncapped, replacing the old newest-first order with a 5-entry cap. Affects all execution paths (tool, slash commands, chains, parallel, async, delegation). Both single-task and chain-step render paths in `render.ts` now consistently use `slice(-3)` for most-recent display.
|
|
1108
|
+
- Removed 50ms throttle on execution progress updates. `onUpdate` now fires immediately on every tool start, tool end, message end, and tool result. Affects all execution paths.
|
|
1109
|
+
- Delegation bridge now passes through full `recentOutputLines` arrays, `recentTools` history, and resolved `model` to prompt-template consumers, replacing the old stripped-down single-line updates.
|
|
1110
|
+
|
|
1111
|
+
## [0.11.11] - 2026-03-23
|
|
1112
|
+
|
|
1113
|
+
### Changed
|
|
1114
|
+
- Updated for pi 0.62.0 compatibility. `Skill.source` replaced with `Skill.sourceInfo` for skill provenance, `Widget` type replaced with `Component`. Bumped devDependencies to `^0.62.0`.
|
|
1115
|
+
|
|
1116
|
+
## [0.11.10] - 2026-03-21
|
|
1117
|
+
|
|
1118
|
+
### Changed
|
|
1119
|
+
- Trimmed tool schema and description to reduce per-turn token cost by ~166 tokens (13%). Removed `maxOutput` from the LLM-facing schema (still accepted internally), shortened `context` and `output` descriptions, removed redundant CHAIN DATA FLOW section from tool description, condensed MANAGEMENT bullet points.
|
|
1120
|
+
|
|
1121
|
+
## [0.11.9] - 2026-03-21
|
|
1122
|
+
|
|
1123
|
+
### Fixed
|
|
1124
|
+
- `/agents` overlay launches (single, chain, parallel) and slash commands (`/run`, `/chain`, `/parallel`) now render an inline result card in chat instead of relaying through `sendUserMessage`.
|
|
1125
|
+
- `/agents` overlay chain launches no longer bypass the executor for async fallback, fixing a path where async chain errors were silently swallowed.
|
|
1126
|
+
|
|
1127
|
+
### Changed
|
|
1128
|
+
- All slash and overlay subagent execution now routes through an event bus request/response protocol (`slash-bridge.ts`), matching the pattern used by pi-prompt-template-model. This replaces both the old `sendUserMessage` relay and the direct `executeChain` call in the overlay handler.
|
|
1129
|
+
- Slash launches show a live inline card immediately on start that streams current tool, recent tools, and output in real time, rather than appearing only after completion.
|
|
1130
|
+
- `/parallel` now uses the native `tasks` parameter directly instead of wrapping through `{ chain: [{ parallel: tasks }] }`.
|
|
1131
|
+
|
|
1132
|
+
### Added
|
|
1133
|
+
- `slash-bridge.ts` — event bus bridge for slash command execution. Manages AbortController lifecycle, cancel-before-start races, and progress streaming via `subagent:slash:*` events.
|
|
1134
|
+
- `slash-live-state.ts` — request-id keyed snapshot store that drives live inline card rendering during execution and restores finalized results from session entries on reload.
|
|
1135
|
+
- Clarified README Usage section to distinguish LLM tool parameters from user-facing slash commands.
|
|
1136
|
+
|
|
1137
|
+
## [0.11.8] - 2026-03-21
|
|
1138
|
+
|
|
1139
|
+
### Added
|
|
1140
|
+
- Prompt-template delegation bridge now supports parallel task execution: accepts `tasks` array payloads, emits per-task `parallelResults` with individual error/success states, and streams per-task progress updates with `taskProgress` entries.
|
|
1141
|
+
|
|
1142
|
+
## [0.11.7] - 2026-03-20
|
|
1143
|
+
|
|
1144
|
+
### Changed
|
|
1145
|
+
- Removed the cwd mismatch guard from the prompt-template delegation bridge, allowing delegated requests to specify a working directory different from the active session's cwd.
|
|
1146
|
+
|
|
1147
|
+
## [0.11.6] - 2026-03-20
|
|
1148
|
+
|
|
1149
|
+
### Added
|
|
1150
|
+
- Added `delegate` builtin agent — a lightweight subagent with no model, output, or default reads. Inherits the parent session's model, making it the natural target for prompt-template delegated execution.
|
|
1151
|
+
|
|
1152
|
+
## [0.11.5] - 2026-03-20
|
|
1153
|
+
|
|
1154
|
+
### Added
|
|
1155
|
+
- Added fork context preamble: tasks run with `context: "fork"` are now wrapped with a default preamble that anchors the subagent to its task, preventing it from continuing the parent conversation. The default is `DEFAULT_FORK_PREAMBLE` in `types.ts`. Internal/programmatic callers can use `wrapForkTask(task, false)` to disable it or pass a custom string (this is not exposed as a tool parameter).
|
|
1156
|
+
- Added a prompt-template delegation bridge (`prompt-template-bridge.ts`) on the shared extension event bus. The subagent extension now listens for `prompt-template:subagent:request` and emits correlated `started`/`response`/`update` events, with cwd safety checks and race-safe cancellation handling.
|
|
1157
|
+
- Added delegated progress streaming via `prompt-template:subagent:update`, mapped from subagent executor `onUpdate` progress payloads.
|
|
1158
|
+
|
|
1159
|
+
### Changed
|
|
1160
|
+
- Session lifecycle reset now preserves the latest extension context for event-bus delegated runs.
|
|
1161
|
+
- `[fork]` badge is now shown only on the result row, not duplicated on both the tool-call and result rows.
|
|
1162
|
+
|
|
1163
|
+
## [0.11.4] - 2026-03-19
|
|
1164
|
+
|
|
1165
|
+
### Added
|
|
1166
|
+
- Added explicit execution context mode for tool calls: `context: "fresh" | "fork"` (default: `fresh`).
|
|
1167
|
+
- Added true forked-context execution for single, parallel, and chain runs. In `fork` mode each child run now starts from a real branched session file created from the parent session's current leaf.
|
|
1168
|
+
- Added `--fork` slash-command flag for `/run`, `/chain`, and `/parallel` to forward `context: "fork"`.
|
|
1169
|
+
- Added regression coverage for fork execution/session wiring and fork badge rendering, including slash command forwarding tests.
|
|
1170
|
+
|
|
1171
|
+
### Changed
|
|
1172
|
+
- Session argument wiring now supports `--session <file>` in addition to `--session-dir`, enabling exact leaf-preserving forks without summary injection.
|
|
1173
|
+
- Async runner step payloads now carry per-step session files so background single/chain/parallel executions can also honor `context: "fork"`.
|
|
1174
|
+
- Clarified docs for foreground vs background semantics so `--bg` behavior is explicit.
|
|
1175
|
+
|
|
1176
|
+
### Fixed
|
|
1177
|
+
- `context: "fork"` now fails fast with explicit errors when parent session state is unavailable (missing persisted session, missing current leaf, or failed branch extraction), with no silent fallback to `fresh`.
|
|
1178
|
+
- Fork-session creation errors are now surfaced as tool errors instead of bubbling as uncaught exceptions during execution.
|
|
1179
|
+
- Session directory preparation now fails loudly with actionable errors (instead of silently swallowing mkdir failures).
|
|
1180
|
+
- Async launch now fails with explicit errors when the async run directory cannot be created.
|
|
1181
|
+
- Share logs now correctly include forked session files even when no session directory exists.
|
|
1182
|
+
- Tool-call and result rendering now explicitly show `[fork]` when `context: "fork"` is used, including empty-result responses.
|
|
1183
|
+
- `subagent_status` now surfaces async result-file read failures instead of returning a misleading missing-status message.
|
|
1184
|
+
|
|
1185
|
+
## [0.11.3] - 2026-03-17
|
|
1186
|
+
|
|
1187
|
+
### Changed
|
|
1188
|
+
- Decomposed `index.ts` (1,450 → ~350 lines) into focused modules: `subagent-executor.ts`, `async-job-tracker.ts`, `result-watcher.ts`, `slash-commands.ts`. Shared mutable state centralized in `SubagentState` interface. Three identical session handlers collapsed into one.
|
|
1189
|
+
- Extracted shared pi CLI arg-builder (`pi-args.ts`) from duplicated logic in `execution.ts` and `subagent-runner.ts`.
|
|
1190
|
+
- Consolidated `mapConcurrent` (canonical in `parallel-utils.ts`, re-exported from `utils.ts`), `aggregateParallelOutputs` (canonical in `parallel-utils.ts` with optional header formatter, re-exported from `settings.ts`), and `parseFrontmatter` (extracted to `frontmatter.ts`).
|
|
1191
|
+
|
|
1192
|
+
## [0.11.2] - 2026-03-11
|
|
1193
|
+
|
|
1194
|
+
### Fixed
|
|
1195
|
+
- `--no-skills` was missing from the async runner (`subagent-runner.ts`). PR #41 added skill scoping to the sync path but the async runner spawns pi through its own code path, so background subagents with explicit skills still got the full `<available_skills>` catalog injected.
|
|
1196
|
+
- `defaultSessionDir` and `sessionDir` with `~` paths (e.g. `"~/.pi/agent/sessions/subagent/"`) were not expanded — `path.resolve("~/...")` treats `~` as a literal directory name. Added tilde expansion matching the existing pattern in `skills.ts`.
|
|
1197
|
+
- Multiple subagent calls within a session would collide when `defaultSessionDir` was configured, since it wasn't appending a unique `runId`. Both `defaultSessionDir` and parent-session-derived paths now get `runId` appended.
|
|
1198
|
+
|
|
1199
|
+
### Removed
|
|
1200
|
+
- Removed exported `resolveSessionRoot()` function and `SessionRootInput` interface. These were introduced by PR #46 but never called in production — the inline resolution logic diverged (always-on sessions, `runId` appended) making the function's contract misleading. Associated tests and dead code from PR #47 scaffolding also removed from `path-handling.test.ts`.
|
|
1201
|
+
|
|
1202
|
+
## [0.11.1] - 2026-03-08
|
|
1203
|
+
|
|
1204
|
+
### Changed
|
|
1205
|
+
- **Session persistence**: Subagent sessions are now stored alongside the parent session file instead of in `/tmp`. If the parent session is `~/.pi/agent/sessions/abc123.jsonl`, subagent sessions go to `~/.pi/agent/sessions/abc123/{runId}/run-{N}/`. This enables tracking subagent performance over time, analyzing token usage patterns, and debugging past delegations. Falls back to a unique temp directory when no parent session exists (API/headless mode).
|
|
1206
|
+
|
|
1207
|
+
## [0.11.0] - 2026-02-23
|
|
1208
|
+
|
|
1209
|
+
### Added
|
|
1210
|
+
- **Background mode toggle in clarify TUI**: Press `b` to toggle background/async execution for any mode (single, parallel, chain). Shows `[b]g:ON` in footer when enabled. Previously async execution required programmatic `clarify: false, async: true` — now users can interactively choose background mode after previewing/editing parameters.
|
|
1211
|
+
- **`--bg` flag for slash commands**: `/run scout "task" --bg`, `/chain scout "task" -> planner --bg`, `/parallel scout "a" -> scout "b" --bg` now run in background without needing the TUI.
|
|
1212
|
+
|
|
1213
|
+
### Fixed
|
|
1214
|
+
- Task edits in clarify TUI were lost when launching in background mode if no other behavior (model, output, reads) was modified. The async handoff now always applies the edited template.
|
|
1215
|
+
|
|
1216
|
+
## [0.10.0] - 2026-02-23
|
|
1217
|
+
|
|
1218
|
+
### Added
|
|
1219
|
+
- **Async parallel chain support**: Chains with `{ parallel: [...] }` steps now work in async mode. Previously they were rejected with "Async mode doesn't support chains with parallel steps." The async runner now spawns concurrent pi processes for parallel step groups with configurable `concurrency` and `failFast` options. Inspired by PR #31 from @marcfargas.
|
|
1220
|
+
- **Comprehensive test suite**: 85 integration tests and 12 E2E tests covering all execution modes (single, parallel, chain, async), error handling, template resolution, and tool validation. Uses `@marcfargas/pi-test-harness` for subprocess mocking and in-process session testing. Thanks @marcfargas for PR #32.
|
|
1221
|
+
- GitHub Actions CI workflow running tests on both Ubuntu and Windows with Node.js 24.
|
|
1222
|
+
|
|
1223
|
+
### Changed
|
|
1224
|
+
- **BREAKING:** `share` parameter now defaults to `false`. Previously, sessions were silently uploaded to GitHub Gists without user consent. Users who want session sharing must now explicitly pass `share: true`. Added documentation explaining what the feature does and its privacy implications.
|
|
1225
|
+
|
|
1226
|
+
### Fixed
|
|
1227
|
+
- `mapConcurrent` with `limit=0` returned array of undefined values instead of processing items sequentially. Now clamps limit to at least 1.
|
|
1228
|
+
- ANSI background color bleed in truncated text. The `truncLine` function now properly tracks and re-applies all active ANSI styles (bold, colors, etc.) before the ellipsis, preventing style leakage. Also uses `Intl.Segmenter` for correct Unicode/emoji handling. Thanks @monotykamary for identifying the issue.
|
|
1229
|
+
- `detectSubagentError` no longer produces false positives when the agent recovers from tool errors. Previously, any error in the last tool result would override exitCode 0→1, even if the agent had already produced complete output. Now only errors AFTER the agent's final text response are flagged. Thanks @marcfargas for the fix and comprehensive test coverage.
|
|
1230
|
+
- Parallel mode (`tasks: [...]`) now returns aggregated output from all tasks instead of just a success count. Previously only returned "3/3 succeeded" with actual task outputs lost.
|
|
1231
|
+
- Session sharing fallback no longer fails with `ERR_PACKAGE_PATH_NOT_EXPORTED`. The fallback now resolves the main entry point and walks up to find the package root instead of trying to resolve `package.json` directly.
|
|
1232
|
+
- Skills from globally-installed npm packages (via `pi install npm:...`) are now discoverable by subagents. Previously only scanned local `.pi/npm/node_modules/` paths, missing the global npm root where pi actually installs packages.
|
|
1233
|
+
- **Windows compatibility**: Fixed `ENAMETOOLONG` errors when tasks exceed command-line length limits by writing long tasks to temp files using pi's `@file` syntax. Thanks @marcfargas.
|
|
1234
|
+
- **Windows compatibility**: Suppressed flashing console windows when spawning async runner processes (`windowsHide: true`).
|
|
1235
|
+
- **Windows compatibility**: Fixed pi CLI resolution in async runner by passing `piPackageRoot` through to `getPiSpawnCommand`.
|
|
1236
|
+
- **Cross-platform paths**: Replaced `startsWith("/")` checks with `path.isAbsolute()` for correct Windows absolute path detection. Replaced template string path concatenation with `path.join()` for consistent path separators.
|
|
1237
|
+
- **Resilience**: Added error handling and auto-restart for the results directory watcher. Previously, if the directory was deleted or became inaccessible, the watcher would die silently.
|
|
1238
|
+
- **Resilience**: Added `ensureAccessibleDir` helper that verifies directory accessibility after creation and attempts recovery if the directory has broken ACLs (can happen on Windows with Azure AD/Entra ID after wake-from-sleep).
|
|
1239
|
+
|
|
1240
|
+
## [0.9.2] - 2026-02-19
|
|
1241
|
+
|
|
1242
|
+
### Fixed
|
|
1243
|
+
- TUI crash on async subagent completion: "Rendered line exceeds terminal width." `render.ts` never truncated output to fit the terminal — widget lines (`agents.join(" -> ")`), chain visualizations, skills lists, and task previews could all exceed the terminal width. Added `truncLine` helper using pi-tui's `truncateToWidth`/`visibleWidth` and applied it to every `Text` widget and widget string. Task preview lengths are now dynamic based on terminal width instead of hardcoded.
|
|
1244
|
+
- Agent Manager scope badge showed `[built]` instead of `[builtin]` in list and detail views. Widened scope column to fit.
|
|
1245
|
+
|
|
1246
|
+
## [0.9.1] - 2026-02-17
|
|
1247
|
+
|
|
1248
|
+
### Fixed
|
|
1249
|
+
- Builtin agents were silently excluded from management listings, chain validation, and agent resolution. Added `allAgents()` helper that includes all three tiers (builtin, user, project) and applied it to `handleList`, `findAgents`, `availableNames`, and `unknownChainAgents`.
|
|
1250
|
+
- `resolveTarget` now blocks mutation of builtin agents with a clear error message suggesting the user create a same-named override, instead of allowing `fs.unlinkSync` or `fs.writeFileSync` on extension files.
|
|
1251
|
+
- Agent Manager TUI guards: delete and edit actions on builtin agents are blocked with an error status. Detail screen hides `[e]dit` from the footer for builtins. Scope badge shows `[builtin]` instead of falling through to `[proj]`.
|
|
1252
|
+
- Cloning a builtin agent set the scope to `"builtin"` at runtime (violating the `"user" | "project"` type), causing wrong badge display and the clone inheriting builtin protections until session reload. Now maps to `"user"`.
|
|
1253
|
+
- Agent Manager `loadEntries` suppresses builtins overridden by user/project agents, preventing duplicate entries in the TUI list.
|
|
1254
|
+
- `BUILTIN_AGENTS_DIR` resolved via `import.meta.url` instead of hardcoded `~/.pi/agent/extensions/subagent/agents` path. Works regardless of where the extension is installed.
|
|
1255
|
+
- `handleCreate` now warns when creating an agent that shadows a builtin (informational, not an error).
|
|
1256
|
+
|
|
1257
|
+
### Changed
|
|
1258
|
+
- Simplified Agent Manager header from per-scope breakdown to total count (per-row badges already show scope).
|
|
1259
|
+
- Reviewer builtin model changed from `openai/gpt-5.2` to `openai-codex/gpt-5.3-codex`.
|
|
1260
|
+
- Removed `code-reviewer` builtin agent (redundant with `reviewer`).
|
|
1261
|
+
|
|
1262
|
+
## [0.9.0] - 2026-02-17
|
|
1263
|
+
|
|
1264
|
+
### Added
|
|
1265
|
+
- **Builtin agents** — the extension now ships with a default set of agent definitions in `agents/`. These are loaded with lowest priority so user and project agents always override them. New users get a useful set of agents out of the box without manual setup.
|
|
1266
|
+
- `scout` — fast codebase recon (claude-haiku-4-5)
|
|
1267
|
+
- `planner` — implementation plans from context (claude-opus-4-6, thinking: high)
|
|
1268
|
+
- `worker` — general-purpose execution (claude-sonnet-4-6)
|
|
1269
|
+
- `reviewer` — validates implementation against plans (gpt-5.3-codex, thinking: high)
|
|
1270
|
+
- `context-builder` — analyzes requirements and codebase (claude-sonnet-4-6)
|
|
1271
|
+
- `researcher` — autonomous web research with search, evaluation, and synthesis (claude-sonnet-4-6)
|
|
1272
|
+
- **`"builtin"` agent source** — new third tier in agent discovery. Priority: builtin < user < project. Builtin agents appear in listings with a `[builtin]` badge and cannot be modified or deleted through management actions (create a same-named user agent to override instead).
|
|
1273
|
+
|
|
1274
|
+
### Fixed
|
|
1275
|
+
- Async subagent session sharing no longer fails with `ERR_PACKAGE_PATH_NOT_EXPORTED`. The runner tried `require.resolve("@mariozechner/pi-coding-agent/package.json")` to find pi's HTML export module, but pi's `exports` map doesn't include that subpath. The fix resolves the package root in the main pi process by walking up from `process.argv[1]` and passes it to the spawned runner through the config, bypassing `require.resolve` entirely. The Windows CLI resolution fallback in `getPiSpawnCommand` benefits from the same walk-up function.
|
|
1276
|
+
|
|
1277
|
+
## [0.8.5] - 2026-02-16
|
|
1278
|
+
|
|
1279
|
+
### Fixed
|
|
1280
|
+
- Async subagent execution no longer fails with "jiti not found" on machines without a global `jiti` install. The jiti resolution now tries three strategies: vanilla `jiti`, the `@mariozechner/jiti` fork, and finally resolves `@mariozechner/jiti` from pi's own installation via `process.argv[1]`. Since pi always ships the fork as a dependency, async mode now works out of the box.
|
|
1281
|
+
- Improved the "jiti not found" error message to explain what's needed and how to fix it.
|
|
1282
|
+
|
|
1283
|
+
## [0.8.4] - 2026-02-13
|
|
1284
|
+
|
|
1285
|
+
### Fixed
|
|
1286
|
+
- JSONL artifact files no longer written by default — they duplicated pi's own session files and were the sole cause of `subagent-artifacts` directories growing to 10+ GB. Changed `includeJsonl` default from `true` to `false`. `_output.md` and `_meta.json` still capture the useful data.
|
|
1287
|
+
- Artifact cleanup now covers session-based directories, not just the temp dir. Previously `cleanupOldArtifacts` only ran on `os.tmpdir()/pi-subagent-artifacts` at startup, while sync runs (the common path) wrote to `<session-dir>/subagent-artifacts/` which was never cleaned. Now scans all `~/.pi/agent/sessions/*/subagent-artifacts/` dirs on startup and cleans the current session's artifacts dir on session lifecycle events.
|
|
1288
|
+
- JSONL writer now enforces a 50 MB size cap (`maxBytes` on `JsonlWriterDeps`) as defense-in-depth for users who opt into JSONL. Silently stops writing at the cap without pausing the source stream, so the progress tracker keeps working.
|
|
1289
|
+
|
|
1290
|
+
## [0.8.3] - 2026-02-11
|
|
1291
|
+
|
|
1292
|
+
### Added
|
|
1293
|
+
- Agent `extensions` frontmatter support for extension sandboxing: absent field keeps default extension discovery, empty value disables all extensions, and comma-separated values create an explicit extension allowlist.
|
|
1294
|
+
|
|
1295
|
+
### Fixed
|
|
1296
|
+
- Parallel chain aggregation now surfaces step failures and warnings in `{previous}` instead of silently passing empty output.
|
|
1297
|
+
- Empty-output warnings are now context-aware: runs that intentionally write to explicit output paths are not flagged as warning-only successes in the renderer.
|
|
1298
|
+
- Async execution now respects agent `extensions` sandbox settings, matching sync behavior.
|
|
1299
|
+
- Single-mode `output` now resolves explicit paths correctly: absolute paths are used directly, and relative paths resolve against `cwd`.
|
|
1300
|
+
- Single-mode output persistence is now caller-side in both sync and async execution, so output files are still written when agents run with read-only tools.
|
|
1301
|
+
- Pi process spawning now uses a shared cross-platform helper in sync and async paths; on Windows it prefers direct Node + CLI invocation to avoid `ENOENT` and argument fragmentation.
|
|
1302
|
+
- Sync JSONL artifact capture now streams lines directly to disk with backpressure handling, preventing unbounded memory growth in long or parallel runs.
|
|
1303
|
+
- Execution now defaults `agentScope` to `both`, aligning run behavior with management `list` so project agents shown in discovery execute without explicit scope overrides.
|
|
1304
|
+
- Async completion notifications now dedupe at source and notify layers, eliminating duplicate/triple "Background task completed" messages.
|
|
1305
|
+
- Async notifications now standardize on canonical `subagent:started` and `subagent:complete` events (legacy enhanced event emissions removed).
|
|
1306
|
+
|
|
1307
|
+
### Changed
|
|
1308
|
+
- Reworked `skills.ts` to resolve skills through Pi core skill loading with explicit project-first precedence and support for project/user package and settings skill paths.
|
|
1309
|
+
- Skill discovery now normalizes and prioritizes collisions by source so project-scoped skills consistently win over user-scoped skills.
|
|
1310
|
+
- Documentation now references `<tmpdir>` instead of hardcoded `/tmp` paths for cross-platform clarity.
|
|
1311
|
+
|
|
1312
|
+
## [0.8.2] - 2026-02-11
|
|
1313
|
+
|
|
1314
|
+
### Added
|
|
1315
|
+
- Recursion depth guard (`PI_SUBAGENT_MAX_DEPTH`) to prevent runaway nested subagent spawning. Default max depth is 2 (main -> subagent -> sub-subagent). Deeper calls are blocked with guidance to the calling agent.
|
|
1316
|
+
|
|
1317
|
+
## [0.8.1] - 2026-02-10
|
|
1318
|
+
|
|
1319
|
+
### Added
|
|
1320
|
+
- **`chainDir` param** for persistent chain artifacts — specify a directory to keep artifacts beyond the default 24-hour temp-directory cleanup. Relative paths are resolved to absolute via `path.resolve()` for safe use in `{chain_dir}` template substitutions.
|
|
1321
|
+
|
|
1322
|
+
## [0.8.0] - 2026-02-09
|
|
1323
|
+
|
|
1324
|
+
### Added
|
|
1325
|
+
- **Management mode for `subagent` tool** via `action` field — the LLM can now discover, create, modify, and delete agent/chain definitions at runtime without manual file editing or restarts. Five actions:
|
|
1326
|
+
- `list` — discover agents and chains with scope + description
|
|
1327
|
+
- `get` — full detail for agent or chain, including path and system prompt/steps
|
|
1328
|
+
- `create` — create agent (`.md`) or chain (`.chain.md`) definitions from `config`; immediately usable
|
|
1329
|
+
- `update` — merge-update agent or chain fields, including rename with chain reference warnings
|
|
1330
|
+
- `delete` — remove agent or chain definitions with dangling reference warnings
|
|
1331
|
+
- **New `agent-management.ts` module** with all management handlers, validation, and serialization helpers
|
|
1332
|
+
- **New management params** in tool schema: `action`, `chainName`, `config`
|
|
1333
|
+
- **Agent/chain CRUD safeguards**
|
|
1334
|
+
- Name sanitization (lowercase-hyphenated) for create/rename
|
|
1335
|
+
- Scope-aware uniqueness checks across agents and chains
|
|
1336
|
+
- File-path collision checks to prevent overwriting non-agent markdown files
|
|
1337
|
+
- Scope disambiguation for update/delete when names exist in both user and project scope
|
|
1338
|
+
- Not-found errors include available names for fast self-correction
|
|
1339
|
+
- Per-step validation warnings for model registry and skill availability
|
|
1340
|
+
- Validate-then-mutate ordering — all validation completes before any filesystem mutations
|
|
1341
|
+
- **Config field mapping**: `tools` (comma-separated with `mcp:` prefix support), `reads` -> `defaultReads`, `progress` -> `defaultProgress`
|
|
1342
|
+
- **Uniform field clearing** — all optional string fields accept both `false` and `""` to clear
|
|
1343
|
+
- **JSON string parsing for `config` param** — handles `Type.Any()` delivering objects as JSON strings through the tool framework
|
|
1344
|
+
|
|
1345
|
+
## [0.7.0] - 2026-02-09
|
|
1346
|
+
|
|
1347
|
+
### Added
|
|
1348
|
+
- **Agents Manager overlay** — browse, view, edit, create, and delete agent definitions from a TUI opened via `Ctrl+Shift+A` or the `/agents` command
|
|
1349
|
+
- List screen with search/filter, scope badges (user/project), chain badges
|
|
1350
|
+
- Detail screen showing resolved prompt, recent runs, all frontmatter fields
|
|
1351
|
+
- Edit screen with field-by-field editing, model picker, skill picker, thinking picker, full-screen prompt editor
|
|
1352
|
+
- Create from templates (Blank, Scout, Planner, Implementer, Code Reviewer, Blank Chain)
|
|
1353
|
+
- Delete with confirmation
|
|
1354
|
+
- Launch directly from overlay with task input and skip-clarify toggle (`Tab`)
|
|
1355
|
+
- **Chain files** — `.chain.md` files define reusable multi-step chains with YAML-style frontmatter per step, stored alongside agent `.md` files
|
|
1356
|
+
- Chain serializer with round-trip parse/serialize fidelity
|
|
1357
|
+
- Three-state config semantics: `undefined` (inherit), value (override), `false` (disable)
|
|
1358
|
+
- Chain detail screen with flow visualization and dependency map
|
|
1359
|
+
- Chain edit screen (raw file editing)
|
|
1360
|
+
- Create new chains from the template picker or save from the chain-clarify TUI (`W`)
|
|
1361
|
+
- **Save overrides from clarify TUI** — press `S` to persist model/output/reads/skills/progress overrides back to the agent's frontmatter file, or `W` (chain mode) to save the full chain configuration as a `.chain.md` file
|
|
1362
|
+
- **Multi-select and parallel from overlay** — select agents with `Tab`, then `Ctrl+R` for sequential chain or `Ctrl+P` to open the parallel builder
|
|
1363
|
+
- Parallel builder: add same agent multiple times, set per-slot task overrides, shared task input
|
|
1364
|
+
- Progressive footer: 0 selected (default hints), 1 selected (`[ctrl+r] run [ctrl+p] parallel`), 2+ selected (`[ctrl+r] chain [ctrl+p] parallel`)
|
|
1365
|
+
- Selection count indicator in footer
|
|
1366
|
+
- **Slash commands with per-step tasks** — `/run`, `/chain`, and `/parallel` execute subagents with full live progress rendering and tab-completion. Results are sent to the conversation for the LLM to discuss.
|
|
1367
|
+
- Per-step tasks with quotes: `/chain scout "scan code" -> planner "analyze auth"`
|
|
1368
|
+
- Per-step tasks for parallel: `/parallel scanner "find bugs" -> reviewer "check style"`
|
|
1369
|
+
- `--` delimiter also supported: `/chain scout -- scan code -> planner -- analyze auth`
|
|
1370
|
+
- Shared task (no `->`): `/chain scout planner -- shared task`
|
|
1371
|
+
- Tab completion for agent names, aware of task sections (quotes and `--`)
|
|
1372
|
+
- Inline per-step config: `/chain scout[output=ctx.md] "scan code" -> planner[reads=ctx.md] "analyze auth"`
|
|
1373
|
+
- Supported keys: `output`, `reads` (`+` separates files), `model`, `skills`, `progress`
|
|
1374
|
+
- Works on all three commands: `/run agent[key=val]`, `/chain`, `/parallel`
|
|
1375
|
+
- **Run history** — per-agent JSONL recording of task, exit code, duration, timestamp
|
|
1376
|
+
- Recent runs shown on agent detail screen (last 5)
|
|
1377
|
+
- Lazy JSONL rotation (keeps last 1000 entries)
|
|
1378
|
+
- **Thinking level as first-class agent field** — `thinking` frontmatter field (off, minimal, low, medium, high, xhigh) editable in the Agents Manager
|
|
1379
|
+
- Picker with arrow key navigation and level descriptions
|
|
1380
|
+
- At runtime, appended as `:level` suffix to the model string
|
|
1381
|
+
- Existing suffix detection prevents double-application
|
|
1382
|
+
- Displayed on agent detail screen
|
|
1383
|
+
|
|
1384
|
+
### Fixed
|
|
1385
|
+
- **Parallel live progress** — top-level parallel execution (`tasks: [...]`) now shows live progress for all concurrent tasks. Each task's `onUpdate` updates its slot in a shared array and emits a merged view, so the renderer can display per-task status, current tools, recent output, and timing in real time. Previously only showed results after all tasks completed.
|
|
1386
|
+
- **Slash commands frozen with no progress** — `/run`, `/chain`, and `/parallel` called `runSync`/`executeChain` directly, bypassing the tool framework. No `onUpdate` meant zero live progress, and `await`-ing execution blocked the command handler, making inputs unresponsive. Now all three route through `sendToolCall` → LLM → tool handler, getting full live progress rendering and responsive input for free.
|
|
1387
|
+
- **`/run` model override silently dropped** — `/run scout[model=gpt-4o] task` now correctly passes the model through to the tool handler. Added `model` field to the tool schema for single-agent runs.
|
|
1388
|
+
- **Quoted tasks with `--` inside split incorrectly** — the segment parser now checks for quoted strings before the `--` delimiter, so tasks like `scout "analyze login -- flow"` parse correctly instead of splitting on the embedded ` -- `.
|
|
1389
|
+
- **Chain first-step validation in per-step mode** — `/chain scout -> planner "task"` now correctly errors instead of silently assigning planner's task to scout. The first step must have its own task when using `->` syntax.
|
|
1390
|
+
- **Thinking level ignored in async mode** — `async-execution.ts` now applies thinking suffix to the model string before serializing to the runner, matching sync behavior
|
|
1391
|
+
- **Step-level model override ignored in async mode** — `executeAsyncChain` now uses `step.model ?? agent.model` as the base for thinking suffix, matching the sync path in `chain-execution.ts`
|
|
1392
|
+
- **mcpDirectTools not set in async mode** — `subagent-runner.ts` now sets `MCP_DIRECT_TOOLS` env var per step, matching the sync path in `execution.ts`
|
|
1393
|
+
- **`{task}` double-corruption in saved chain launches** — stopped pre-replacing `{task}` in the overlay launch path; raw user task passed as top-level param to `executeChain()`, which uses `params.task` for `originalTask`
|
|
1394
|
+
- **Agent serializer `skill` normalization** — `normalizedField` now maps `"skill"` to `"skills"` on the write path
|
|
1395
|
+
- **Clarify toggle determinism** — all four ManagerResult paths (single, chain, saved chain, parallel) now use deterministic JSON with `clarify: !result.skipClarify`, eliminating silent breakage from natural language variants
|
|
1396
|
+
|
|
1397
|
+
### Changed
|
|
1398
|
+
- Agents Manager single-agent and saved-chain launches default to quick run (skip clarify TUI) — the user already reviewed config in the overlay. Multi-agent ad-hoc chains default to showing the clarify TUI so users can configure per-step tasks, models, output files, and skills before execution. Toggle with `Tab` in the task-input screen.
|
|
1399
|
+
- Extracted `applyThinkingSuffix(model, thinking)` helper from inline logic in `execution.ts`, shared with `async-execution.ts`
|
|
1400
|
+
- Text editor: added word navigation (Alt+Left/Right, Ctrl+Left/Right), word delete (Alt+Backspace), paste support
|
|
1401
|
+
- Agent discovery (`agents.ts`): loads `.chain.md` files via `loadChainsFromDir`, exposes `discoverAgentsAll` for overlay
|
|
1402
|
+
|
|
1403
|
+
## [0.6.0] - 2026-02-02
|
|
1404
|
+
|
|
1405
|
+
### Added
|
|
1406
|
+
- **MCP direct tools for subagents** - Agents can request specific MCP tools as first-class tools via `mcp:` prefix in frontmatter: `tools: read, bash, mcp:chrome-devtools` or `tools: read, bash, mcp:github/search_repositories`. Requires pi-mcp-adapter.
|
|
1407
|
+
- **`MCP_DIRECT_TOOLS` env var** - Subagent processes receive their direct tool config via environment variable. Agents without `mcp:` items get a `__none__` sentinel to prevent config leaking from the parent process.
|
|
1408
|
+
|
|
1409
|
+
## [0.5.3] - 2026-02-01
|
|
1410
|
+
|
|
1411
|
+
### Fixed
|
|
1412
|
+
- Adapt execute signatures to pi v0.51.0: reorder signal, onUpdate, ctx parameters for subagent tool; add missing parameters to subagent_status tool
|
|
1413
|
+
|
|
1414
|
+
## [0.5.2] - 2026-01-28
|
|
1415
|
+
|
|
1416
|
+
### Improved
|
|
1417
|
+
- **README: Added agent file locations** - New "Agents" section near top of README clearly documents:
|
|
1418
|
+
- User agents: `~/.pi/agent/agents/{name}.md`
|
|
1419
|
+
- Project agents: `.pi/agents/{name}.md` (searches up directory tree)
|
|
1420
|
+
- `agentScope` parameter explanation (`"user"`, `"project"`, `"both"`)
|
|
1421
|
+
- Complete frontmatter example with all fields
|
|
1422
|
+
- Note about system prompt being the markdown body after frontmatter
|
|
1423
|
+
|
|
1424
|
+
## [0.5.1] - 2026-01-27
|
|
1425
|
+
|
|
1426
|
+
### Fixed
|
|
1427
|
+
- Google API compatibility: Use `Type.Any()` for mixed-type unions (`SkillOverride`, `output`, `reads`, `ChainItem`) to avoid unsupported `anyOf`/`const` JSON Schema patterns
|
|
1428
|
+
|
|
1429
|
+
## [0.5.0] - 2026-01-27
|
|
1430
|
+
|
|
1431
|
+
### Added
|
|
1432
|
+
- **Skill support** - Agents can declare skills in frontmatter that get injected into system prompts
|
|
1433
|
+
- Agent frontmatter: `skill: tmux, chrome-devtools` (comma-separated)
|
|
1434
|
+
- Runtime override: `skill: "name"` or `skill: false` to disable all skills
|
|
1435
|
+
- Chain-level skills additive to agent skills, step-level override supported
|
|
1436
|
+
- Skills injected as XML: `<skill name="...">content</skill>` after agent system prompt
|
|
1437
|
+
- Missing skills warn but continue execution (warning shown in result summary)
|
|
1438
|
+
- **TUI skill selector** - Press `[s]` to browse and select skills for any step
|
|
1439
|
+
- Multi-select with space bar
|
|
1440
|
+
- Fuzzy search by name or description
|
|
1441
|
+
- Shows skill source (project/user) and description
|
|
1442
|
+
- Project skills (`.pi/skills/`) override user skills (`~/.pi/agent/skills/`)
|
|
1443
|
+
- **Skill display** - Skills shown in TUI, progress tracking, summary, artifacts, and async status
|
|
1444
|
+
- **Parallel task skills** - Each parallel task can specify its own skills via `skill` parameter
|
|
1445
|
+
|
|
1446
|
+
### Fixed
|
|
1447
|
+
- **Chain summary formatting** - Fixed extra blank line when no skills are present
|
|
1448
|
+
- **Duplicate skill deduplication** - `skill: "foo,foo"` now correctly deduplicates to `["foo"]`
|
|
1449
|
+
- **Consistent skill tracking in async mode** - Both chain and single modes now track only resolved skills
|
|
1450
|
+
|
|
1451
|
+
## [0.4.1] - 2026-01-26
|
|
1452
|
+
|
|
1453
|
+
### Changed
|
|
1454
|
+
- Added `pi-package` keyword for npm discoverability (pi v0.50.0 package system)
|
|
1455
|
+
|
|
1456
|
+
## [0.4.0] - 2026-01-25
|
|
1457
|
+
|
|
1458
|
+
### Added
|
|
1459
|
+
- **Clarify TUI for single and parallel modes** - Use `clarify: true` to preview/edit before execution
|
|
1460
|
+
- Single mode: Edit task, model, thinking level, output file
|
|
1461
|
+
- Parallel mode: Edit each task independently, model, thinking level
|
|
1462
|
+
- Navigate between parallel tasks with ↑↓
|
|
1463
|
+
- **Mode-aware TUI headers** - Header shows "Agent: X" for single, "Parallel Tasks (N)" for parallel, "Chain: X → Y" for chains
|
|
1464
|
+
- **Model override for single/parallel** - TUI model selection now works for all modes
|
|
1465
|
+
|
|
1466
|
+
### Fixed
|
|
1467
|
+
- **MAX_PARALLEL error mode** - Now correctly returns `mode: 'parallel'` (was incorrectly `mode: 'single'`)
|
|
1468
|
+
- **`output: true` handling** - Now correctly treats `true` as "use agent's default output" instead of creating a file literally named "true"
|
|
1469
|
+
|
|
1470
|
+
### Changed
|
|
1471
|
+
- **Schema description** - `clarify` parameter now documents all modes: "default: true for chains, false for single/parallel"
|
|
1472
|
+
|
|
1473
|
+
## [0.3.3] - 2026-01-25
|
|
1474
|
+
|
|
1475
|
+
### Added
|
|
1476
|
+
- **Thinking level selector in chain TUI** - Press `[t]` to set thinking level for any step
|
|
1477
|
+
- Options: off, minimal, low, medium, high, xhigh (ultrathink)
|
|
1478
|
+
- Appends to model as suffix (e.g., `anthropic/claude-sonnet-4-5:high`)
|
|
1479
|
+
- Pre-selects current thinking level if already set
|
|
1480
|
+
- **Model selector in chain TUI** - Press `[m]` to select a different model for any step
|
|
1481
|
+
- Fuzzy search through all available models
|
|
1482
|
+
- Shows the current model with a `current` badge
|
|
1483
|
+
- Provider/model format (e.g., `anthropic/claude-haiku-4-5`)
|
|
1484
|
+
- Override indicator (✎) when model differs from agent default
|
|
1485
|
+
- **Model visibility in chain execution** - Shows which model each step is using
|
|
1486
|
+
- Display format: `Step 1: scout (claude-haiku-4-5) | 3 tools, 16.8s`
|
|
1487
|
+
- Model shown in both running and completed steps
|
|
1488
|
+
- **Auto-propagate output changes to reads** - When you change a step's output filename,
|
|
1489
|
+
downstream steps that read from it are automatically updated to use the new filename
|
|
1490
|
+
- Maintains chain dependencies without manual updates
|
|
1491
|
+
- Example: Change scout's output from `context.md` to `summary.md`, planner's reads updates automatically
|
|
1492
|
+
|
|
1493
|
+
### Changed
|
|
1494
|
+
- **Progress is now chain-level** - `[p]` toggles progress for ALL steps at once
|
|
1495
|
+
- Progress setting shown at chain level (not per-step)
|
|
1496
|
+
- Chains share a single progress.md, so chain-wide toggle is more intuitive
|
|
1497
|
+
- **Clearer output/writes labeling** - Renamed `output:` to `writes:` to clarify it's a file
|
|
1498
|
+
- Hotkey changed from `[o]` to `[w]` for consistency
|
|
1499
|
+
- **{previous} data flow indicator** - Shows on the PRODUCING step (not receiving):
|
|
1500
|
+
- `↳ response → {previous}` appears after scout's reads line
|
|
1501
|
+
- Only shows when next step's template uses `{previous}`
|
|
1502
|
+
- Clearer mental model: output flows DOWN the chain
|
|
1503
|
+
- Chain TUI footer updated: `[e]dit [m]odel [t]hinking [w]rites [r]eads [p]rogress`
|
|
1504
|
+
|
|
1505
|
+
### Fixed
|
|
1506
|
+
- **Chain READ/WRITE instructions now prepended** - Instructions restructured:
|
|
1507
|
+
- `[Read from: /path/file.md]` and `[Write to: /path/file.md]` prepended BEFORE task
|
|
1508
|
+
- Overrides any hardcoded filenames in task text from parent agent
|
|
1509
|
+
- Previously: instructions were appended at end and could be overlooked
|
|
1510
|
+
- **Output file validation** - After each step, validates expected file was created:
|
|
1511
|
+
- If missing, warns: "Agent wrote to different file(s): X instead of Y"
|
|
1512
|
+
- Helps diagnose when agents don't create expected outputs
|
|
1513
|
+
- **Root cause: agents need `write` tool** - Agents without `write` in their tools list
|
|
1514
|
+
cannot create output files (they tried MCP workarounds which failed)
|
|
1515
|
+
- **Thinking level suffixes now preserved** - Models with thinking levels (e.g., `claude-sonnet-4-5:high`)
|
|
1516
|
+
now correctly resolve to `anthropic/claude-sonnet-4-5:high` instead of losing the provider prefix
|
|
1517
|
+
|
|
1518
|
+
### Improved
|
|
1519
|
+
- **Per-step progress indicators** - When progress is enabled, each step shows its role:
|
|
1520
|
+
- Step 1: `writes progress.md`
|
|
1521
|
+
- Step 2+: `reads progress.md`
|
|
1522
|
+
- Clear visualization of progress.md data flow through the chain
|
|
1523
|
+
- **Comprehensive tool descriptions** - Better documentation of chain variables:
|
|
1524
|
+
- Tool description now explains `{task}`, `{previous}`, `{chain_dir}` in detail
|
|
1525
|
+
- Schema descriptions clarify what each variable means and when to use them
|
|
1526
|
+
- Helps agents construct proper chain queries for any use case
|
|
1527
|
+
|
|
1528
|
+
## [0.3.2] - 2026-01-25
|
|
1529
|
+
|
|
1530
|
+
### Performance
|
|
1531
|
+
- **4x faster polling** - Reduced poll interval from 1000ms to 250ms (efficient with mtime caching)
|
|
1532
|
+
- **Mtime-based caching** - status.json and output tail reads cached to avoid redundant I/O
|
|
1533
|
+
- **Unified throttled updates** - All onUpdate calls consolidated under 50ms throttle
|
|
1534
|
+
- **Widget change detection** - Hash-based change detection skips no-op re-renders
|
|
1535
|
+
- **Array optimizations** - Use concat instead of spread for chain progress updates
|
|
1536
|
+
|
|
1537
|
+
### Fixed
|
|
1538
|
+
- **Timer leaks** - Track and clear pendingTimer and cleanupTimers properly
|
|
1539
|
+
- **Updates after close** - processClosed flag prevents updates after process terminates
|
|
1540
|
+
- **Session cleanup** - Clear cleanup timers on session_start/switch/branch/shutdown
|
|
1541
|
+
|
|
1542
|
+
## [0.3.1] - 2026-01-24
|
|
1543
|
+
|
|
1544
|
+
### Changed
|
|
1545
|
+
- **Major code refactor** - Split monolithic index.ts into focused modules:
|
|
1546
|
+
- `execution.ts` - Core runSync function for single agent execution
|
|
1547
|
+
- `chain-execution.ts` - Chain orchestration (sequential + parallel steps)
|
|
1548
|
+
- `async-execution.ts` - Async/background execution support
|
|
1549
|
+
- `render.ts` - TUI rendering (widget, tool result display)
|
|
1550
|
+
- `schemas.ts` - TypeBox parameter schemas
|
|
1551
|
+
- `formatters.ts` - Output formatting utilities
|
|
1552
|
+
- `utils.ts` - Shared utility functions
|
|
1553
|
+
- `types.ts` - Shared type definitions and constants
|
|
1554
|
+
|
|
1555
|
+
### Fixed
|
|
1556
|
+
- **Expanded view visibility** - Running chains now properly show:
|
|
1557
|
+
- Task preview (truncated to 80 chars) for each step
|
|
1558
|
+
- Recent tools fallback when between tool calls
|
|
1559
|
+
- Increased recent output from 2 to 3 lines
|
|
1560
|
+
- **Progress matching** - Added agent name fallback when index doesn't match
|
|
1561
|
+
- **Type safety** - Added defensive `?? []` for `recentOutput` access on union types
|
|
1562
|
+
|
|
1563
|
+
## [0.3.0] - 2026-01-24
|
|
1564
|
+
|
|
1565
|
+
### Added
|
|
1566
|
+
- **Full edit mode for chain TUI** - Press `e`, `o`, or `r` to enter a full-screen editor with:
|
|
1567
|
+
- Word wrapping for long text that spans multiple display lines
|
|
1568
|
+
- Scrolling viewport (12 lines visible) with scroll indicators (↑↓)
|
|
1569
|
+
- Full cursor navigation: Up/Down move by display line, Page Up/Down by viewport
|
|
1570
|
+
- Home/End go to start/end of current display line, Ctrl+Home/End for start/end of text
|
|
1571
|
+
- Auto-scroll to keep cursor visible
|
|
1572
|
+
- Esc saves, Ctrl+C discards changes
|
|
1573
|
+
|
|
1574
|
+
### Improved
|
|
1575
|
+
- **Tool description now explicitly shows the three modes** (SINGLE, CHAIN, PARALLEL) with syntax - helps agents pick the right mode when user says "scout → planner"
|
|
1576
|
+
- **Chain execution observability** - Now shows:
|
|
1577
|
+
- Chain visualization with status labels: `done scout → running planner` (`done`, `running`, `pending`, `failed`) - sequential chains only
|
|
1578
|
+
- Accurate step counter: "step 1/2" instead of misleading "1/1"
|
|
1579
|
+
- Current tool and recent output for running step
|
|
1580
|
+
|
|
1581
|
+
## [0.2.0] - 2026-01-24
|
|
1582
|
+
|
|
1583
|
+
### Changed
|
|
1584
|
+
- **Rebranded to `pi-subagents`** (was `pi-async-subagents`)
|
|
1585
|
+
- Historical upstream installer: `npx pi-subagents` (not this maintained project; use `npm:@fitchmultz/pi-subagents` today).
|
|
1586
|
+
|
|
1587
|
+
### Added
|
|
1588
|
+
- Chain TUI now supports editing output paths, reads lists, and toggling progress per step
|
|
1589
|
+
- New keybindings: `o` (output), `r` (reads), `p` (progress toggle)
|
|
1590
|
+
- Output and reads support full file paths, not just relative to chain_dir
|
|
1591
|
+
- Each step shows all editable fields: task, output, reads, progress
|
|
1592
|
+
|
|
1593
|
+
### Fixed
|
|
1594
|
+
- Chain clarification TUI edit mode now properly re-renders after state changes (was unresponsive)
|
|
1595
|
+
- Changed edit shortcut from Tab to 'e' (Tab can be problematic in terminals)
|
|
1596
|
+
- Edit mode cursor now starts at beginning of first line for better UX
|
|
1597
|
+
- Footer shows context-sensitive keybinding hints for navigation vs edit mode
|
|
1598
|
+
- Edit mode is now single-line only (Enter disabled) - UI only displays first line, so multi-line was confusing
|
|
1599
|
+
- Added Ctrl+C in edit mode to discard changes (Esc saves, Ctrl+C discards)
|
|
1600
|
+
- Footer now shows "Done" instead of "Save" for clarity
|
|
1601
|
+
- Absolute paths for output/reads now work correctly (were incorrectly prepended with chainDir)
|
|
1602
|
+
|
|
1603
|
+
### Added
|
|
1604
|
+
- Parallel-in-chain execution with `{ parallel: [...] }` step syntax for fan-out/fan-in patterns
|
|
1605
|
+
- Configurable concurrency and fail-fast options for parallel steps
|
|
1606
|
+
- Output aggregation with clear separators (`=== Parallel Task N (agent) ===`) for `{previous}`
|
|
1607
|
+
- Namespaced artifact directories for parallel tasks (`parallel-{step}/{index}-{agent}/`)
|
|
1608
|
+
- Pre-created progress.md for parallel steps to avoid race conditions
|
|
1609
|
+
|
|
1610
|
+
### Changed
|
|
1611
|
+
- TUI clarification skipped for chains with parallel steps (runs directly in sync mode)
|
|
1612
|
+
- Async mode rejects chains with parallel steps with clear error message
|
|
1613
|
+
- Chain completion now returns summary blurb with progress.md and artifacts paths instead of raw output
|
|
1614
|
+
|
|
1615
|
+
### Added
|
|
1616
|
+
- Live progress display for sync subagents (single and chain modes)
|
|
1617
|
+
- Shows current tool, recent output lines, token count, and duration during execution
|
|
1618
|
+
- Ctrl+O hint during sync execution to expand full streaming view
|
|
1619
|
+
- Throttled updates (150ms) for smoother progress display
|
|
1620
|
+
- Updates on tool_execution_start/end events for more responsive feedback
|
|
1621
|
+
|
|
1622
|
+
### Fixed
|
|
1623
|
+
- Async widget elapsed time now freezes when job completes instead of continuing to count up
|
|
1624
|
+
- Progress data now correctly linked to results during execution (was showing "ok" instead of "...")
|
|
1625
|
+
|
|
1626
|
+
### Added
|
|
1627
|
+
- Extension API support (registerTool) with `subagent` tool name
|
|
1628
|
+
- Session logs (JSONL + HTML export) and optional share links via GitHub Gist
|
|
1629
|
+
- `share` and `sessionDir` parameters for session retention control
|
|
1630
|
+
- Async events: `subagent:started`/`subagent:complete` (legacy events still emitted)
|
|
1631
|
+
- Share info surfaced in TUI and async notifications
|
|
1632
|
+
- Async observability folder with `status.json`, `events.jsonl`, and `subagent-log-*.md`
|
|
1633
|
+
- `subagent_status` tool for inspecting async run state
|
|
1634
|
+
- Async TUI widget for background runs
|
|
1635
|
+
|
|
1636
|
+
### Changed
|
|
1637
|
+
- Parallel mode auto-downgrades to sync when async:true is passed (with note in output)
|
|
1638
|
+
- TUI now shows "parallel (no live progress)" label to set expectations
|
|
1639
|
+
- Tools passed via agent config can include extension paths (forwarded via `--extension`)
|
|
1640
|
+
|
|
1641
|
+
### Fixed
|
|
1642
|
+
- Chain mode now sums step durations instead of taking max (was showing incorrect total time)
|
|
1643
|
+
- Async notifications no longer leak across pi sessions in different directories
|
|
1644
|
+
|
|
1645
|
+
## [0.1.0] - 2026-01-03
|
|
1646
|
+
|
|
1647
|
+
Initial release.
|
|
1648
|
+
|
|
1649
|
+
### Added
|
|
1650
|
+
- Output truncation with configurable byte/line limits
|
|
1651
|
+
- Real-time progress tracking (tools, tokens, duration)
|
|
1652
|
+
- Debug artifacts (input, output, JSONL, metadata)
|
|
1653
|
+
- Session-tied artifact storage for sync mode
|
|
1654
|
+
- Per-step duration tracking for chains
|