@selesai/code 0.8.6 → 0.8.7
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 +16 -0
- package/dist/core/agent-session.js +13 -1
- package/dist/core/extensions/types.d.ts +2 -0
- package/dist/core/provider-composer.js +17 -4
- package/dist/core/settings-manager.d.ts +2 -0
- package/dist/core/settings-manager.js +3 -0
- package/dist/core/system-prompt.js +2 -8
- package/dist/core/system-prompt.test.js +6 -0
- package/dist/core/tools/index.d.ts +1 -0
- package/dist/core/tools/index.js +1 -0
- package/dist/core/tools/schema-prune.d.ts +16 -0
- package/dist/core/tools/schema-prune.js +39 -0
- package/dist/core/tools/schema-prune.test.d.ts +1 -0
- package/dist/core/tools/schema-prune.test.js +111 -0
- package/dist/defaults/settings.json +1 -0
- package/dist/extensions/model-prompt-injector/config.json +10 -0
- package/dist/extensions/model-prompt-injector/index.test.ts +112 -0
- package/dist/extensions/model-prompt-injector/index.ts +151 -0
- package/dist/extensions/package.json +1 -0
- package/dist/extensions/pi-subagents/CHANGELOG.md +158 -90
- package/dist/extensions/pi-subagents/UPSTREAM-V0.50-MAPPING.md +172 -0
- package/dist/extensions/pi-subagents/agents/oracle.md +7 -5
- package/dist/extensions/pi-subagents/agents/reviewer.md +2 -2
- package/dist/extensions/pi-subagents/agents/scout.md +1 -1
- package/dist/extensions/pi-subagents/agents/worker.md +1 -1
- package/dist/extensions/pi-subagents/docs/configuration.md +78 -19
- package/dist/extensions/pi-subagents/docs/extension-api.md +36 -0
- package/dist/extensions/pi-subagents/docs/missions.md +5 -3
- package/dist/extensions/pi-subagents/docs/models.md +1 -1
- package/dist/extensions/pi-subagents/docs/observability.md +42 -2
- package/dist/extensions/pi-subagents/docs/tool-reference.md +20 -3
- package/dist/extensions/pi-subagents/docs/workflows.md +5 -5
- package/dist/extensions/pi-subagents/install.mjs +2 -2
- package/dist/extensions/pi-subagents/package-lock.json +1470 -1472
- package/dist/extensions/pi-subagents/package.json +1 -1
- package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +1 -1
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/constraints-and-recipes.md +5 -4
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +15 -14
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +5 -5
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +46 -26
- package/dist/extensions/pi-subagents/src/agents/agent-serializer.ts +2 -0
- package/dist/extensions/pi-subagents/src/agents/agents.ts +37 -12
- package/dist/extensions/pi-subagents/src/api/external-runs.ts +174 -84
- package/dist/extensions/pi-subagents/src/api/preflight.ts +13 -7
- package/dist/extensions/pi-subagents/src/extension/config.ts +53 -0
- package/dist/extensions/pi-subagents/src/extension/index.ts +67 -13
- package/dist/extensions/pi-subagents/src/extension/public-execution.ts +34 -6
- package/dist/extensions/pi-subagents/src/extension/rpc.ts +5 -1
- package/dist/extensions/pi-subagents/src/extension/schemas.ts +31 -30
- package/dist/extensions/pi-subagents/src/extension/tool-description.ts +10 -9
- package/dist/extensions/pi-subagents/src/inspectors/herdr/actions.ts +13 -8
- package/dist/extensions/pi-subagents/src/inspectors/herdr/inspector-runner.ts +16 -3
- package/dist/extensions/pi-subagents/src/inspectors/herdr/project-panes.ts +2 -6
- package/dist/extensions/pi-subagents/src/inspectors/herdr/shell-command.ts +16 -0
- package/dist/extensions/pi-subagents/src/intercom/intercom-bridge.ts +5 -4
- package/dist/extensions/pi-subagents/src/intercom/native-supervisor-channel.ts +19 -42
- package/dist/extensions/pi-subagents/src/missions/goal-driver.ts +3 -1
- package/dist/extensions/pi-subagents/src/missions/store.ts +8 -3
- package/dist/extensions/pi-subagents/src/runs/background/active-async-capacity.ts +82 -25
- package/dist/extensions/pi-subagents/src/runs/background/active-run-index.ts +71 -1
- package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +73 -43
- package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +5 -0
- package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +14 -6
- package/dist/extensions/pi-subagents/src/runs/background/async-status-snapshot.ts +277 -0
- package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +8 -3
- package/dist/extensions/pi-subagents/src/runs/background/chain-root-attachment.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/background/completion-replay.ts +11 -1
- package/dist/extensions/pi-subagents/src/runs/background/fleet-view.ts +21 -6
- package/dist/extensions/pi-subagents/src/runs/background/result-files.ts +437 -0
- package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +205 -41
- package/dist/extensions/pi-subagents/src/runs/background/resume-guidance.ts +27 -7
- package/dist/extensions/pi-subagents/src/runs/background/retained-children.ts +76 -19
- package/dist/extensions/pi-subagents/src/runs/background/run-id-resolver.ts +30 -24
- package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +101 -4
- package/dist/extensions/pi-subagents/src/runs/background/scheduled-runs.ts +54 -28
- package/dist/extensions/pi-subagents/src/runs/background/stale-run-reconciler.ts +27 -13
- package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +298 -33
- package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +2 -0
- package/dist/extensions/pi-subagents/src/runs/background/wait-completions.ts +5 -2
- package/dist/extensions/pi-subagents/src/runs/foreground/async-dismiss-action.ts +2 -1
- package/dist/extensions/pi-subagents/src/runs/foreground/chain-execution.ts +16 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +219 -15
- package/dist/extensions/pi-subagents/src/runs/foreground/prompt-audit.ts +4 -3
- package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +333 -45
- package/dist/extensions/pi-subagents/src/runs/shared/completion-guard.ts +107 -1
- package/dist/extensions/pi-subagents/src/runs/shared/external-cli-runner.ts +4 -0
- package/dist/extensions/pi-subagents/src/runs/shared/llm-intent-arbiter.ts +39 -23
- package/dist/extensions/pi-subagents/src/runs/shared/model-fallback.ts +16 -2
- package/dist/extensions/pi-subagents/src/runs/shared/nested-events.ts +66 -62
- package/dist/extensions/pi-subagents/src/runs/shared/orca-progress-tabs.ts +376 -0
- package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +2 -0
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-control.ts +15 -0
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +1 -9
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-startup-retry.ts +12 -0
- package/dist/extensions/pi-subagents/src/runs/shared/tool-timeout.ts +95 -0
- package/dist/extensions/pi-subagents/src/shared/agent-stream-options.ts +5 -0
- package/dist/extensions/pi-subagents/src/shared/artifacts.ts +0 -4
- package/dist/extensions/pi-subagents/src/shared/display-text.ts +50 -0
- package/dist/extensions/pi-subagents/src/shared/node-executable.ts +21 -0
- package/dist/extensions/pi-subagents/src/shared/types.ts +50 -4
- package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +34 -25
- package/dist/extensions/pi-subagents/src/slash/slash-live-state.ts +4 -0
- package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +160 -45
- package/dist/extensions/pi-subagents/src/tui/fleet-transcript.ts +1 -48
- package/dist/extensions/pi-subagents/src/tui/fleet.ts +128 -16
- package/dist/extensions/pi-subagents/src/tui/render.ts +122 -44
- package/dist/extensions/pi-subagents/src/watchdog/permission-arbiter.ts +2 -1
- package/dist/extensions/pi-subagents/src/watchdog/review.ts +4 -3
- package/dist/extensions/pi-subagents/src/workflows/chat-progress.ts +10 -2
- package/dist/extensions/pi-subagents/src/workflows/scripted-workflow.ts +272 -76
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/types.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +68 -9
- package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +27 -1
- package/dist/extensions/pi-subagents/test/integration/chain-execution.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/error-handling.test.ts +49 -0
- package/dist/extensions/pi-subagents/test/integration/external-cli-runner.test.ts +1 -0
- package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +26 -1
- package/dist/extensions/pi-subagents/test/integration/orca-progress-tabs.test.ts +144 -0
- package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +26 -0
- package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +369 -98
- package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +111 -78
- package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +49 -1
- package/dist/extensions/pi-subagents/test/integration/slash-live-state.test.ts +12 -0
- package/dist/extensions/pi-subagents/test/support/node-command.ts +15 -0
- package/dist/extensions/pi-subagents/test/unit/active-async-capacity.test.ts +50 -0
- package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +28 -0
- package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +61 -0
- package/dist/extensions/pi-subagents/test/unit/agent-stream-options.test.ts +14 -0
- package/dist/extensions/pi-subagents/test/unit/async-interrupt-action.test.ts +76 -0
- package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +2 -0
- package/dist/extensions/pi-subagents/test/unit/async-status-snapshot.test.ts +162 -0
- package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +209 -10
- package/dist/extensions/pi-subagents/test/unit/completion-replay.test.ts +41 -1
- package/dist/extensions/pi-subagents/test/unit/external-runs.test.ts +135 -42
- package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +252 -1
- package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +192 -6
- package/dist/extensions/pi-subagents/test/unit/herdr-inspector-bootstrap.test.ts +32 -0
- package/dist/extensions/pi-subagents/test/unit/herdr-shell-command.test.ts +59 -0
- package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +69 -0
- package/dist/extensions/pi-subagents/test/unit/intercom-bridge.test.ts +23 -4
- package/dist/extensions/pi-subagents/test/unit/llm-intent-arbiter.test.ts +56 -1
- package/dist/extensions/pi-subagents/test/unit/mission-goal-driver.test.ts +67 -3
- package/dist/extensions/pi-subagents/test/unit/mission-lifecycle.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/mission-store.test.ts +14 -0
- package/dist/extensions/pi-subagents/test/unit/model-fallback.test.ts +18 -0
- package/dist/extensions/pi-subagents/test/unit/native-supervisor-channel.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/nested-events.test.ts +25 -2
- package/dist/extensions/pi-subagents/test/unit/node-executable.test.ts +26 -0
- package/dist/extensions/pi-subagents/test/unit/notify.test.ts +8 -0
- package/dist/extensions/pi-subagents/test/unit/orca-progress-tabs.test.ts +348 -0
- package/dist/extensions/pi-subagents/test/unit/package-manifest.test.ts +5 -2
- package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +34 -0
- package/dist/extensions/pi-subagents/test/unit/public-execution.test.ts +6 -1
- package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +92 -0
- package/dist/extensions/pi-subagents/test/unit/result-files.test.ts +175 -0
- package/dist/extensions/pi-subagents/test/unit/retained-children.test.ts +127 -17
- package/dist/extensions/pi-subagents/test/unit/run-id-resolver.test.ts +44 -0
- package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +247 -0
- package/dist/extensions/pi-subagents/test/unit/scheduled-runs.test.ts +107 -2
- package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +5 -8
- package/dist/extensions/pi-subagents/test/unit/scripted-workflow.test.ts +456 -4
- package/dist/extensions/pi-subagents/test/unit/stale-run-reconciler.test.ts +128 -0
- package/dist/extensions/pi-subagents/test/unit/subagent-control.test.ts +28 -0
- package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +16 -7
- package/dist/extensions/pi-subagents/test/unit/subagent-startup-retry.test.ts +15 -0
- package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +79 -15
- package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +12 -12
- package/dist/extensions/pi-subagents/test/unit/tool-timeout.test.ts +109 -0
- package/dist/extensions/pi-subagents/test/unit/wait-subscriptions.test.ts +34 -0
- package/dist/extensions/pi-subagents/test/unit/workflow-chat-progress.test.ts +94 -1
- package/dist/extensions/pi-subagents/test/unit/workflow-launch-params.test.ts +42 -2
- package/dist/extensions/question/index.ts +21 -6
- package/dist/extensions/question/question-list.ts +7 -1
- package/dist/extensions/question/row-layout.ts +3 -0
- package/dist/extensions/question/tests/exp.test.ts +70 -0
- package/dist/extensions/question/tests/exp2.test.ts +59 -0
- package/dist/extensions/question/tests/exp3.test.ts +47 -0
- package/dist/extensions/question/tests/helpers.test.ts +7 -0
- package/dist/extensions/question/tests/question-list.test.ts +140 -0
- package/dist/extensions/question/tests/row-layout.test.ts +13 -0
- package/dist/extensions/question/tests/selection-mode.test.ts +54 -0
- package/dist/extensions/question/tests/zz-ig3.test.ts +20 -0
- package/dist/extensions/question/tests/zz-probe.test.ts +29 -0
- package/dist/skills/pi-subagents/SKILL.md +1 -1
- package/dist/skills/pi-subagents/references/constraints-and-recipes.md +5 -4
- package/dist/skills/pi-subagents/references/execution-controls.md +15 -14
- package/dist/skills/pi-subagents/references/management-authoring-rpc.md +5 -5
- package/dist/skills/pi-subagents/references/prompting-and-roles.md +46 -26
- package/docs/settings.md +6 -0
- package/package.json +3 -3
|
@@ -2,48 +2,116 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
-
## Selesai fork (0.
|
|
5
|
+
## Selesai fork (0.50.0)
|
|
6
6
|
|
|
7
|
-
Selesai vendors pi-subagents 0.
|
|
7
|
+
Selesai vendors pi-subagents 0.50.0 (upstream 0.49.0 + 0.50.0 included) and layers its own branding and additions on top:
|
|
8
8
|
|
|
9
9
|
### Branding
|
|
10
10
|
- Host package renamed from `@earendil-works/pi-coding-agent` to `@selesai/code`.
|
|
11
11
|
- Config dirs: `~/.pi` → `~/.selesai`, project `.pi/` → `.selesai/`; runtime state under `.pi-subagents/`.
|
|
12
|
-
- Extension env vars renamed `PI_SUBAGENT*` → `SELESAI_SUBAGENT*` (legacy `PI_SUBAGENT*` values still honored via `src/shared/env.ts`).
|
|
12
|
+
- Extension env vars renamed `PI_SUBAGENT*` → `SELESAI_SUBAGENT*` (legacy `PI_SUBAGENT*` values still honored via `src/shared/env.ts`), including the new v0.50 surfaces (`SELESAI_SUBAGENT_TOOL_TIMEOUT_MS`, `SELESAI_SUBAGENT_ORCA_BINARY`, `SELESAI_SUBAGENT_ASYNC_JSON:` widget prefix).
|
|
13
13
|
- Home directory is never treated as a project root for subagent config resolution.
|
|
14
14
|
|
|
15
|
-
### Selesai additions (upstream 0.
|
|
15
|
+
### Selesai additions (upstream 0.50.0 features are all preserved)
|
|
16
|
+
- Declarative `chain` / `tasks` / `clarify` execution restored as first-class top-level modes alongside `{ agent, task }` and `workflowScript` (upstream 0.50 keeps only structured single-child + workflowScript at the top level). Saved `.chain.md` / `.chain.json` workflows remain shareable via `/run-chain`.
|
|
16
17
|
- Agent roster extended with Selesai personas: `architect`, `builder`, `commentator`, `explorer`, `recapper` (upstream `worker`, `reviewer`, `scout`, `oracle`, `delegate`, `researcher` remain). `researcher` is the Selesai host-compatible brief generator.
|
|
17
|
-
- Declarative `chain` / `tasks` execution and saved `.chain.md` / `.chain.json` workflows promoted to first-class documented surfaces (machinery ships in 0.47.1).
|
|
18
18
|
- New slash commands: `/chain`, `/parallel`, `/run-chain`, `/chain-prompts`.
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
19
|
+
- Workflow auto-relaunch wiring: `config.maxWorkflowAutoRelaunches` caps fan-out-budget relaunches for async workflow runs; cap exhaustion fails the run with an actionable error (upstream ships the decision module but does not wire it).
|
|
20
|
+
- Same-model retry for transient provider errors (503/429/no-body/econnreset) with a bounded delay schedule (`MODEL_RETRY_DELAYS_MS`), keeping fallback-model switching as the primary strategy.
|
|
21
|
+
- Artifact default stays `project` (cwd/.pi-subagents) instead of upstream 0.50's `session` default; `artifactDir` config still selects among project/session/temp.
|
|
22
|
+
- `SELESAI_SUBAGENT_EXTRA_AGENT_DIRS` path-style env for extra agent discovery directories.
|
|
23
|
+
- Adopted-job capacity accounting: lineage carry-over jobs count against the per-session active async cap; carry-over summaries label adopted jobs.
|
|
24
|
+
- LLM intent arbiter toggle env renamed `SELESAI_SUBAGENTS_LLM_INTENT_ARBITER` (upstream: `PI_SUBAGENTS_LLM_INTENT_ARBITER`).
|
|
25
|
+
|
|
26
|
+
### Now upstream (no longer fork-only)
|
|
27
|
+
- Inline `#agent-name [task]` invocation with autocomplete (`src/slash/inline-subagents.ts`), task-aware advisory agent recommender (`src/agents/task-aware-routing.ts`), friendly chain validation (`src/extension/chain-validation.ts`), workflow auto-relaunch decision module (`src/workflows/workflow-auto-relaunch.ts`), session lineage + adopted-result carry-over, `chatProgress` `terminal`/`milestones` projections, and the `parallel-context-build` / `parallel-handoff-plan` prompt templates all shipped in upstream 0.49.0/0.50.0 verbatim.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [0.50.0] - 2026-08-15
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
- Add optional Orca progress tabs with bounded, sanitized mirrors for native Selesai and external CLI children. Thanks to @hyein-cbio for #1080.
|
|
34
|
+
- Show caller-owned external jobs in FleetView through a bounded push/cache API, without polling or exposing managed controls. Thanks to @ssyram for #1083.
|
|
35
|
+
- Add a bounded current-status snapshot for async runs in RPC surfaces, without replaying terminal history. Thanks to @yanqianglu for #1078.
|
|
36
|
+
- Add an optional `foregroundDetachShortcut` binding and show it in the running single-subagent card, so foreground work can be moved to the background without editing package source. Thanks to @Lewis-E for #1097.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- Clarify retained-child resumability and native supervisor coordination guidance. Thanks to @ELA718 for #1126.
|
|
40
|
+
- Clarify that completed retained writers should use `resume`, while `steer` with `mode: "follow_up"` only queues text for the next revival (#1104).
|
|
41
|
+
- Treat oracle/advisor consultation prompts as supervisor-backed dialogue when material unknowns remain (#1102).
|
|
42
|
+
- Show explicit resumable and not-resumable states, with fallback guidance, in retained child listings (#1101).
|
|
43
|
+
- Reduce reload work for large async histories by indexing the async result inbox by session, observer, and tool-call id instead of scanning every old result file. Stale terminal active markers now age out, and replay cleanup scans run less often.
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
- Keep Orca progress tabs from treating write-stream backpressure as mirror truncation.
|
|
47
|
+
- Stop advertising an `output-<index>.log` artifact in run transcripts when that file was never written, so workflow runs no longer point at a path that cannot exist. Thanks to @lbijeau for #1124.
|
|
48
|
+
- Keep FleetView working when a session file path is longer than a short identity, instead of failing external-job inspection on every poll. Thanks to @albertgwo for #1121 and @Don-Yin for #1122.
|
|
49
|
+
- Keep structured single-child runs from overriding output paths in the task, while preserving explicit and agent-configured outputs. Thanks to @pasemes for #1119.
|
|
50
|
+
- Keep no-edit confirmations guarded after later changes retract a prior implementation (#1115).
|
|
51
|
+
- Remove the native generic `intercom` compatibility fallback from supervisor coordination while preserving `contact_supervisor`, `subagent_supervisor`, and external `intercom` providers. Thanks to @jaudiger for #1107.
|
|
52
|
+
- Report an actionable project-settings override when duplicate ambient Selesai extensions prevent a child from starting (#1114).
|
|
53
|
+
- Keep the FleetView overlay refreshed while open and count active leaf agents in the compact summary. Thanks to @Don-Yin for #1108.
|
|
54
|
+
- Keep user-requested foreground detaches from showing supervisor-response recovery guidance. Thanks to @Lewis-E for #1109.
|
|
55
|
+
- Reject configured subagent models that are not in the active host model registry before spawning a child, instead of forwarding an invalid `--model` argument to Pi. Thanks to @DresvyanskiyDenis for #1093.
|
|
56
|
+
- Start Herdr inspector and project pane commands with a shell-safe executable token, including paths that need quoting in Nushell. Thanks to @Rival for #1092.
|
|
57
|
+
- Stop `agentContract.version` from using an `enum` on an integer, which Gemini's function-calling schema subset rejects. Integer bounds express the same constraint and are valid everywhere. Thanks to @MarcusNeufeldt for #1095.
|
|
58
|
+
- Show supervisor-detached workflow children as paused and needing attention instead of failed while preserving recovery guidance (#1096).
|
|
59
|
+
- Show workflow-owned foreground children and recursive nested runs as a bounded tree in FleetView. Thanks to @expoli for #1086.
|
|
60
|
+
- Warn once, instead of on every heartbeat, when a long-running workflow child outlives its mission record. Thanks to @albertgwo for #1079.
|
|
61
|
+
- Keep deleted-schedule timers from exiting Selesai and re-arm recurring schedules after unexpected timer fire failures. Thanks to @albertgwo for #1084.
|
|
62
|
+
- Count native `await` use of `runs.run`, `runs.all`, and launch-containing Promise combinators as consumed without allowing fire-and-forget launches. Thanks to @kebinzhi for #1082.
|
|
63
|
+
|
|
64
|
+
## [0.49.0] - 2026-08-13
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
- Run a single child with `{ agent, task? }` when a full workflow script is not needed (#1059).
|
|
68
|
+
- Adjust FleetView spacing and collapsed result height from the main window. Thanks to @pierre-mgmt for #1048.
|
|
69
|
+
- Inspect async run state with `debug.run`, without exposing prompts, secrets, or transcripts (#1037).
|
|
70
|
+
- Let builtin role overrides keep Selesai's normal tools and extensions with `tools: "inherit"`. Thanks to @estanexanavsem for #1047 and @davidarny for #1049.
|
|
71
|
+
- Add simple terminal examples for FleetView, the async widget, and inline tool display. Thanks to @czottmann for #1050.
|
|
72
|
+
- Add per-tool-call wedge protection with `toolTimeoutMs` call → agent → config → environment precedence. Known-fast built-in tools get a five-minute default, long-running tools get attention notices without a hard default, matching `toolCallId` timers survive parallel tool completions, and supervisor waits (`contact_supervisor`, `intercom`, `subagent_wait`) remain exempt. Thanks to @forrestbthomas for #1077.
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
- Clean up active-run limits and artifact packaging code without changing behavior.
|
|
76
|
+
|
|
77
|
+
### Fixed
|
|
78
|
+
- Trust live Herdr session roots only when the parent executor registered them for that async run.
|
|
79
|
+
- Let a workflow child disable the intercom bridge for one run with `intercomBridge: { mode: "off" }`, while normal async completion still works. Thanks to @jaudiger for #1072.
|
|
80
|
+
- Recover sibling children after a detached workflow fails (#1066).
|
|
81
|
+
- Show child session transcripts in standalone Herdr inspectors when the transcript is in a trusted session folder (#1069).
|
|
82
|
+
- Keep watchdog reviews, permission checks, Prompt Audit rewriting, and completion intent checks on the authenticated provider stream across the Pi 0.81 and 0.84 APIs. Thanks to @nuzayets for #1067.
|
|
83
|
+
- Mark children stopped by a parent workflow as stopped, not failed, and keep the stop reason (#1060).
|
|
84
|
+
- Keep subagent artifacts and automatic mission records out of project worktrees by default, so read-only workflows leave the tree clean (#1062).
|
|
85
|
+
- Make parents wait at dependency barriers after async launches, so child results are available before dependent work continues. Thanks to @exuanbo for #1045.
|
|
86
|
+
- Keep wait callers alive for intercom replies instead of reviving a detached wrapper. Thanks to @yayamaz for #1053.
|
|
87
|
+
- Keep workflow summary reports separate from child reports, and reject report path collisions before launch (#1038).
|
|
88
|
+
- Accept no-edit implementation challenge passes when the writer says the current solution is already best (#1054).
|
|
89
|
+
- Make the mutation guard safer for LLM intent checks, long tasks, and provider authentication. Thanks to @MarcusNeufeldt for #1044.
|
|
90
|
+
- Launch Herdr inspector panes with Node when Selesai runs as a standalone executable. Thanks to @kevinpita for #1051.
|
|
91
|
+
- Sanitize async, nested, and result transcript output before showing it in terminal views. Thanks to @riesbri for #1046.
|
|
24
92
|
|
|
25
93
|
## [0.48.0] - 2026-08-13
|
|
26
94
|
|
|
27
95
|
### Added
|
|
28
|
-
-
|
|
29
|
-
- Add an
|
|
30
|
-
- Add a live Prompt Audit drawer to Fleet for
|
|
31
|
-
- Add a global `timeoutMs`
|
|
32
|
-
- Add
|
|
33
|
-
-
|
|
96
|
+
- Limit each run to 64 child launches by default, so accidental fan-out loops stop before they create too many children. Thanks to @asjer for #1031.
|
|
97
|
+
- Add an optional limit for how many top-level async runs one session can have active at the same time. Fleet, status, RPC, and doctor now show the limit and current usage. Thanks to @asjer for #1029.
|
|
98
|
+
- Add a live Prompt Audit drawer to Fleet for foreground children owned by the current session. It shows the prompt on screen without saving it to status files, history, transcripts, metadata, results, progress, or run artifacts (#1021).
|
|
99
|
+
- Add a global `timeoutMs` setting for default run deadlines on foreground launches and plain single-agent async runs. It applies when a launch or agent does not set its own timeout, and it prevents long foreground fan-outs from falling back to the built-in 30-minute limit. Composite async runs stay unbounded at the top level. Thanks to @shaharmor for #1018.
|
|
100
|
+
- Add `SELESAI_SUBAGENT_TASK_DELIVERY=auto|file` for hosts that block child processes when the task text appears in the command line. File mode writes the task to a temporary `task.md` and passes that path instead. Thanks to @yanqianglu for #1028.
|
|
101
|
+
- Retry with file-based task delivery after a child exits with no activity, which helps recover from endpoint protection tools that block long command lines. Thanks to @yanqianglu for #1028.
|
|
34
102
|
|
|
35
103
|
### Fixed
|
|
36
|
-
- Open Fleet Prompt Audit with the
|
|
37
|
-
- Use full task
|
|
38
|
-
-
|
|
39
|
-
- Explain when a
|
|
40
|
-
-
|
|
41
|
-
- Reject
|
|
42
|
-
-
|
|
43
|
-
- Stop
|
|
44
|
-
- Add an optional LLM
|
|
45
|
-
-
|
|
46
|
-
- Let single external-
|
|
104
|
+
- Open Fleet Prompt Audit with the original task visible by default, and show a short task summary in the normal Fleet detail pane (#1021).
|
|
105
|
+
- Use the full task text when caching LLM intent decisions, so similar tasks with the same prefix cannot share the wrong answer.
|
|
106
|
+
- Stop async Selesai writer processes as full process groups, and only mark process cleanup as proven after the process tree has actually exited. Thanks to @asjer for #1030.
|
|
107
|
+
- Explain when a mission belongs to another worktree, including both the current project root and the mission directory (#1024).
|
|
108
|
+
- Keep the configured output reference when explicit acceptance rejects a foreground child, so useful reports remain available (#1023).
|
|
109
|
+
- Reject worktree base directories inside the agent extensions directory, including symlinked paths (#1014).
|
|
110
|
+
- Make unnamed intercom fallback targets match pi-intercom's registered name length, so subagents without a custom session name can still reach their parent. Thanks to @mystery4f for #1017.
|
|
111
|
+
- Stop treating phrases like "must-fix items" or "should-fix tests" as instructions to edit files during read-only review tasks. Thanks to @MarcusNeufeldt for #1020.
|
|
112
|
+
- Add an optional LLM check before the mutation guard fails a foreground single, parallel, or chain child that made no edits. If the task was actually read-only, the run now completes instead of failing. Thanks to @MarcusNeufeldt for #1020.
|
|
113
|
+
- Accept empty strings inside acceptance-report string arrays instead of rejecting the full report. Thanks to @hjiang for #1015.
|
|
114
|
+
- Let single external-CLI workflow children start without inheriting a Selesai model, so model-less external runners do not fail preflight. Thanks to @twosunnus for #1016.
|
|
47
115
|
|
|
48
116
|
## [0.47.1] - 2026-08-12
|
|
49
117
|
|
|
@@ -85,7 +153,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
85
153
|
|
|
86
154
|
### Added
|
|
87
155
|
- Add `prompts.render(ref, vars?)` to `workflowScript` for explicitly scoped package, user, and project prompt fragments with simple `{{name}}` interpolation (#960).
|
|
88
|
-
- Expose a versioned `pi-subagents/project-panes` TypeScript API so other
|
|
156
|
+
- Expose a versioned `pi-subagents/project-panes` TypeScript API so other Selesai extensions can deterministically open, inspect, and close project-owned Herdr panes without invoking the model-facing `subagent` tool. The structured status includes bounded pane runtime state and an opt-in idle-only close guard; Selesai project trust remains an explicit human verification step. Thanks to @wiizard-chen for #949.
|
|
89
157
|
- Preserve short-lived completion replay records and bounded output archives so waits can recover consumed async result details after watcher delivery or restart.
|
|
90
158
|
- Add `subagent({ action: "guide" })` and `/subagents-guide [topic]` to read current-version packaged guides.
|
|
91
159
|
- Persist workflow child attempts, status heartbeats, session paths, and artifacts in their enclosing mission, and add explicit mission decision resolution.
|
|
@@ -192,7 +260,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
192
260
|
## [0.42.1] - 2026-08-06
|
|
193
261
|
|
|
194
262
|
### Fixed
|
|
195
|
-
- Prevent
|
|
263
|
+
- Prevent Selesai from crashing when subagent status widgets and overlays are shown in narrow or resized terminal layouts. Thanks to @alanvardy for the report in #858 and @meatcar for the fix.
|
|
196
264
|
- Keep async scripted workflows running without an implicit 30-minute timeout, while preserving the foreground default and explicit timeout controls.
|
|
197
265
|
- Limit `workflowScript` chat progress to the supported `auto`, `off`, and `live-card` projections.
|
|
198
266
|
|
|
@@ -213,7 +281,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
213
281
|
- Fail child launch setup when an installed permission-system manifest cannot be read or names a missing extension entry.
|
|
214
282
|
- Let the Fleet inspector use the full 85% terminal-height budget on tall terminals. Thanks to @xz-dev for #839.
|
|
215
283
|
- Launch Herdr inspector panes through a JavaScript bootstrap instead of asking Node to type-strip TypeScript installed under `node_modules`. Thanks to @williamleong for #837.
|
|
216
|
-
- Removed the
|
|
284
|
+
- Removed the Selesai CLI devDependency from the default install and test against a local runtime shim, so repo audits no longer report the upstream dev-only Undici advisory while real Selesai E2E remains optional. Thanks to @dmg-egg for #782.
|
|
217
285
|
- Stream immediate and periodic progress for blocking foreground subagent runs, so long reasoning intervals remain visibly active. Thanks to @walter-erquinigo for #833.
|
|
218
286
|
|
|
219
287
|
## [0.41.0] - 2026-08-05
|
|
@@ -238,7 +306,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
238
306
|
- Added a small fixed authority policy for worktree discard, destructive cleanup, spawn-budget grants, schedule creation, stop, and steer actions.
|
|
239
307
|
- Added automatic Herdr status metadata for active async runs, including reload recovery, needs-attention blocking, and a forward-compatible `herdr:busy` sibling event for semantic working state. Thanks to @magoz for #730.
|
|
240
308
|
- Added optional Herdr 0.7.5+ drill-in inspector panes for async runs, with durable pane bindings, lifecycle/transcript/mission dashboards, FleetView opening, and steer/stop controls through the existing file control channel.
|
|
241
|
-
- Added Herdr project panes so an orchestrator can open a project-rooted
|
|
309
|
+
- Added Herdr project panes so an orchestrator can open a project-rooted Selesai session for substantial cross-codebase work.
|
|
242
310
|
- Added optional `thinking` and `fallbackModels` fields to `/subagents` profile agent overrides, so a saved profile can pin reasoning effort and fallbacks (not just the model) — important for reasoning-sensitive models where the thinking level is load-bearing. Thanks to @dt-benedict for #741.
|
|
243
311
|
|
|
244
312
|
### Changed
|
|
@@ -262,7 +330,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
262
330
|
- Keep the under-editor async status widget visible by default while FleetView is enabled, including after active runs restore following reload. Thanks to @nicobailon for #804.
|
|
263
331
|
- Restore active under-editor subagent status after management calls, so `status` and `list` do not hide running disk-backed work. Thanks to @nicobailon for #816.
|
|
264
332
|
- Allow direct single-child `worktree: true` launches to use managed isolation without requiring `workflowScript`. Thanks to @nicobailon for #808.
|
|
265
|
-
- Isolated each mock
|
|
333
|
+
- Isolated each mock Selesai test queue so late child processes cannot consume or lose responses after the next test resets the harness. Thanks to @nicobailon for #810.
|
|
266
334
|
- Show a workflow lane manifest with mode and stable lane keys in the launch card instead of only `subagent workflow script`. Thanks to @nicobailon for #813.
|
|
267
335
|
- Reject scalar or commandless verified acceptance before spawning a child; verified policies now require object form with at least one runtime command. Thanks to @ryanbbrown for #807.
|
|
268
336
|
- Let every `runs.all` child settle and return ordered per-child outcomes instead of aborting siblings when one child fails; `runs.run` remains fail-fast. Thanks to @ryanbbrown for #807.
|
|
@@ -270,7 +338,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
270
338
|
- Preserve successful async completion when project-local artifact or mission files are removed before final bookkeeping by recreating artifact directories and recording missing-mission warnings.
|
|
271
339
|
- Keep active Fleet inspector runs ahead of terminal history, which now sorts by recency instead of failure state so old failures do not look attached to current workflow work. Thanks to @nicobailon for #802.
|
|
272
340
|
- Normalize undefined fields in workflow child results before scripts can return them, preserving artifact-only child output.
|
|
273
|
-
- Show current-session async runs in the Fleet inspector even when this
|
|
341
|
+
- Show current-session async runs in the Fleet inspector even when this Selesai process did not start them.
|
|
274
342
|
- Replace the duplicate advisor agent with an alias on the oracle agent.
|
|
275
343
|
- Suppress stale foreground needs-attention transcript notices after the target run completes.
|
|
276
344
|
- Retry zero-activity `SIGKILL` exits during child startup.
|
|
@@ -278,9 +346,9 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
278
346
|
- Resume the parent session after compaction while async subagent work remains active.
|
|
279
347
|
- Avoid invoking `npm root -g` on Windows when the standard `%APPDATA%\\npm\\node_modules` global root is available, preserving custom terminal tab titles during agent and skill discovery. Thanks to @Suchwert for #767.
|
|
280
348
|
- Preserved nested foreground failure events when resolved launch metadata is unavailable.
|
|
281
|
-
- Launch standalone
|
|
349
|
+
- Launch standalone Selesai child processes directly instead of prepending the resolved Selesai CLI script path. Thanks to @ZacharyQin for #764.
|
|
282
350
|
- Kept foreground `workflowScript` live-card runs from flooding chat with routine successful child-result intercom messages while preserving failure surfacing and final artifact references.
|
|
283
|
-
- Project oversized redundant
|
|
351
|
+
- Project oversized redundant Selesai `turn_end` and `agent_end` child events to bounded lifecycle records instead of failing image-heavy runs with `protocol_output_limit`, while preserving `agent_end.willRetry` drain behavior. Thanks to @barto-sh for #743.
|
|
284
352
|
- Count clear `git add`, `git commit`, and `git push` bash calls as implementation mutation attempts so workers that finalize pre-applied changes do not fail the completion guard.
|
|
285
353
|
- Render structured-output-only children as useful JSON output instead of misleading `(no output)` summaries and empty output artifacts.
|
|
286
354
|
- Preserved unrelated `subagents` settings (e.g. `disableBuiltins`, `modelScope`, `watchdog`) when applying a `/subagents` profile, instead of replacing the whole `subagents` object; a profile still owns the complete `agentOverrides` mapping. Also validate profile `thinking`, `fallbackModels`, and `disableBuiltins` fields. Thanks to @dt-benedict for #741.
|
|
@@ -290,7 +358,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
290
358
|
- Preserved dirty or divergent managed worktrees when no successful handoff patch was captured, instead of force-removing uncaptured work and its temporary branch.
|
|
291
359
|
- Routed foreground chain scratch files to user-scoped temp storage when `artifactDir` is `"session"` or `"temp"`, preventing `.pi-subagents/` clutter in the working directory. Thanks to @magoz for #729.
|
|
292
360
|
- Retry transient Windows `EPERM`/`EBUSY`/`EACCES` locks when atomically replacing the async runner startup-control handshake file, so a transient antivirus/indexer lock no longer makes the parent believe the runner never reached the ready state. Thanks to @franktheglock for #731.
|
|
293
|
-
- Kept successful background subagent completions quiet so inactive
|
|
361
|
+
- Kept successful background subagent completions quiet so inactive Selesai tabs are not marked unread, while failed and paused completions still notify the originating session. Thanks to @killianMei for #728.
|
|
294
362
|
- Avoid crashing the extension at load on Windows when shared temp async result/run directories are persistently blocked by `EPERM`/`EACCES`, falling back to pid-scoped sibling paths without deleting saved run state. Thanks to @franktheglock for #734.
|
|
295
363
|
|
|
296
364
|
## [0.40.0] - 2026-08-01
|
|
@@ -321,7 +389,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
321
389
|
- Added Fleet inspector controls to steer the selected live async child and stop its top-level async run with confirmation. Thanks to @saleemlala for #692.
|
|
322
390
|
|
|
323
391
|
### Changed
|
|
324
|
-
- Reduced repeated runtime filesystem work by caching stable
|
|
392
|
+
- Reduced repeated runtime filesystem work by caching stable Selesai config-directory resolution, incrementally sanitizing run history, and limiting nested control-result polling to files created for the active request.
|
|
325
393
|
|
|
326
394
|
### Fixed
|
|
327
395
|
- Show per-child async task descriptions in the persistent running-subagents status widget instead of repeating the run-level description for every parallel child.
|
|
@@ -355,7 +423,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
355
423
|
- Reduced repeated scanning and file reads in live TUI rendering and skill loading.
|
|
356
424
|
|
|
357
425
|
### Fixed
|
|
358
|
-
- Passed `--no-context-files` to child
|
|
426
|
+
- Passed `--no-context-files` to child Selesai runs when an agent disables inherited project context, avoiding stale prompt-header parsing as Selesai's context block format changes. Thanks to @KorenKrita for #667.
|
|
359
427
|
|
|
360
428
|
## [0.37.1] - 2026-07-27
|
|
361
429
|
|
|
@@ -402,14 +470,14 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
402
470
|
- Added delegation v2 for extension-owned concurrent foreground leaves, with logical run/node ownership, exact per-attempt cancellation, explicit duplicate-node outcomes, literal or structured values, effective model/thinking metadata, detailed usage, and an exact zero-tool budget while preserving delegation v1 and the model-facing single-dispatch guard. Thanks to Jakub Neumann (@neumie) for #610.
|
|
403
471
|
- Added acknowledged `steer` support to the extension RPC for exact-child async orchestration without recovery replacement. Thanks to Daan Bosch (@daanbosch) for #607.
|
|
404
472
|
- Added a persistent below-editor FleetView with safe empty-editor navigation and a structured inspector for Markdown, code, tool calls, and compact or expanded tool results. Thanks to Rui Pu (@Zeppelinpp) for #587.
|
|
405
|
-
- Added `artifactDir` config to store subagent artifacts in the project,
|
|
473
|
+
- Added `artifactDir` config to store subagent artifacts in the project, Selesai session, or temp artifact directory while keeping project-local artifacts as the default. Thanks to WeZZard (@WeZZard) for #582.
|
|
406
474
|
- Added opt-in `agentContract: { version: 1 }` runs with explicit execution, acceptance, review, and effects projections, report-optional acceptance, observational file-mutation effects, generic `outputSchema` plumbing, and `gateOn` chain controls while keeping the current/default contract unchanged. Thanks to mapleluv (@mapleluvr) for #499.
|
|
407
|
-
- Replaced the flat `/subagents` admin model, thinking, and agent pickers with a searchable, bounded-scroll selector docked in place of the editor, matching
|
|
408
|
-
- Added `advisor` as an `oracle`-compatible bundled agent alias for users switching between Claude Code and
|
|
475
|
+
- Replaced the flat `/subagents` admin model, thinking, and agent pickers with a searchable, bounded-scroll selector docked in place of the editor, matching Selesai's built-in `/model` picker so the current selection no longer scrolls off screen when the option list is long. Thanks to Chanyeong Lim (@asp345) for #568.
|
|
476
|
+
- Added `advisor` as an `oracle`-compatible bundled agent alias for users switching between Claude Code and Selesai naming. Thanks to Serhii Chernenko (@serhii-chernenko) for #552.
|
|
409
477
|
- Show each subagent child’s resolved `[fresh]` or `[fork]` launch context in foreground results, async status, fleet, and widget surfaces, with `[mixed]` on aggregate headers when a run uses both modes.
|
|
410
478
|
|
|
411
479
|
### Fixed
|
|
412
|
-
- Kept explicit empty and MCP-only child tool allowlists from falling back to
|
|
480
|
+
- Kept explicit empty and MCP-only child tool allowlists from falling back to Selesai's default builtin tools. Thanks to @jstokke for #628.
|
|
413
481
|
- Kept completed Fleet inspector durations stable when legacy terminal status lacks an explicit end timestamp, preventing time-sensitive redraws from changing rendered snapshots.
|
|
414
482
|
- Deferred strict child tool availability diagnostics until after child extension startup hooks, so tools registered asynchronously by child-only extensions no longer falsely fail as unavailable. Thanks to ConjugativeIndicator (@CovetingEpiphany2152) for #567.
|
|
415
483
|
- Made parent-facing subagent tool descriptions lead with delegation and clarified that `action` is omitted for execution. Thanks to @donwellsav for #600.
|
|
@@ -424,23 +492,23 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
424
492
|
- Avoided scanning and reconciling every historical async run when `subagent_wait({ id })` targets an exact run, preventing supervisor-attention waits from being delayed until the child completes.
|
|
425
493
|
- Routed independent strict v1 extension delegation requests through a correlated concurrent-safe executor while preserving the one-foreground-call-per-turn guard for the ordinary model-facing tool and non-versioned prompt-template requests. Thanks to Nova (@bianyeyu) for #565.
|
|
426
494
|
- Mapped sparse parallel slash progress updates by child index so one child’s live tool/output state no longer appears on another chain placeholder. Thanks to Eli Stark (@white-hat) for #595.
|
|
427
|
-
- Retried transient Windows filesystem locks while creating async result directories and stopped destructively recreating shared async directories during startup access checks, so concurrent
|
|
495
|
+
- Retried transient Windows filesystem locks while creating async result directories and stopped destructively recreating shared async directories during startup access checks, so concurrent Selesai instances are less likely to lose completed async results to `EPERM` directory handles. Thanks to AiraNadih (@AiraNadih) for #566.
|
|
428
496
|
- Pruned broad agent and chain discovery roots so package-declared `.` scans no longer descend into `node_modules`, `.git`, Git submodules, or nested project roots during startup. Thanks to tupe12334 (@tupe12334) for #570 and shoehn (@shoehn) for narrowing the startup trace.
|
|
429
497
|
- Made `subagent_wait({ id })` wake when an async child is blocked in `contact_supervisor` for a supervisor decision, instead of waiting for completion or timeout. Thanks to @DrunkenDonkey80 for #581.
|
|
430
498
|
- Scoped async result delivery to the active session lease so stale watchers and recovered result files cannot wake or redeliver completions after reload, while retaining unaccepted result files for retry. Thanks to KawaiiNahida (@KawaiiNahida) for #588.
|
|
431
499
|
- Namespaced inherited relative agent output paths for foreground top-level parallel tasks so repeated builtin agents no longer collide before launch. Thanks to Artem Timofeev (@atimofeev) for #580.
|
|
432
|
-
- Use
|
|
433
|
-
- Bundled TypeBox as a production dependency so detached runners can always load `typebox/compile`, including managed extension installs where
|
|
434
|
-
- Updated the
|
|
500
|
+
- Use Selesai's native editor for `/subagents` system-prompt editing so terminal editors receive terminal ownership and cannot leave a stale waiting status. Thanks to Prodipta Guha (@proguha) for #576.
|
|
501
|
+
- Bundled TypeBox as a production dependency so detached runners can always load `typebox/compile`, including managed extension installs where Selesai's host package is not visible from the child process. Thanks to Matteo Collina (@mcollina) for #583.
|
|
502
|
+
- Updated the Selesai development SDK to 0.81.0 and passed the watchdog stream through the renamed `Agent.streamFunction` option, preventing watchdog reviews from terminating with `streamFunction is not a function`. Thanks to Wang Zixiong (@XWIlluDelu) for #574.
|
|
435
503
|
- Documented that relative chain `output` paths are chain-artifact paths under `{chain_dir}`, with persistent `chainDir` and absolute `output` paths as the supported ways to keep artifacts outside the temp run directory. Thanks to @dougEfresh for #529.
|
|
436
504
|
- Bounded main-watchdog repository signatures so startup and agent-end checks no longer recurse through nested Git worktrees or generated dependency trees, reducing slow starts in large repos. Thanks to @pompanonb for #551 and @markg85 for #555.
|
|
437
505
|
- Raised the child stdout line limit above Pi’s resized-image payload range so image OCR subagents no longer fail with `protocol_output_limit` on valid `read` tool image events. Thanks to @zmarty for #538.
|
|
438
506
|
- Wrote an explanatory failure stub to output artifacts when a child run ends before producing output, so advertised `_output.md` breadcrumbs are no longer empty. Thanks to Mattias Petter Johansson (@mpj) for #547.
|
|
439
|
-
- Routed main watchdog reviews through matching provider-scoped `streamSimple` handlers before falling back to the compat dispatcher, restoring custom-provider watchdog models on newer
|
|
507
|
+
- Routed main watchdog reviews through matching provider-scoped `streamSimple` handlers before falling back to the compat dispatcher, restoring custom-provider watchdog models on newer Selesai runtimes. Thanks to @alexei-led for #527.
|
|
440
508
|
- Kept async resume recovery descriptors from rejecting acceptance metadata written by earlier async runs, and now persist only the public acceptance input needed for safe revival. Thanks to Phil (@philliugithub) for #537.
|
|
441
509
|
- Made `subagent_wait({ id })` wake when a remembered detached foreground child reaches `needs_attention`, so headless parents can answer pending supervisor requests instead of waiting until timeout. Thanks to Mattias Petter Johansson (@mpj) for #554.
|
|
442
510
|
- Made `run-history.jsonl` and its agent directory owner-only where supported, redacted stored task prompts, and retained only a SHA-256 task hash for history correlation. Thanks to @avishkandi for #534.
|
|
443
|
-
- Registered the native child `intercom` fallback before strict tool-allowlist diagnostics run and stopped treating
|
|
511
|
+
- Registered the native child `intercom` fallback before strict tool-allowlist diagnostics run and stopped treating Selesai core tools as missing extension tools, preventing read-only scouts and workers from failing before execution when strict child tool allowlists are active.
|
|
444
512
|
- Kept async oracle review tasks with implementation vocabulary from triggering write-evidence acceptance contracts or the no-mutation implementation guard.
|
|
445
513
|
- Added the missing `context: "fork"` field to the fork-context example in the bundled `pi-subagents` skill. Thanks to Kier (@kierr) for #540.
|
|
446
514
|
- Resolved host-provided TypeBox compiler lookup for detached async runners and structured-output validation. Thanks to @nistaux for #526, 96tommykim (@96tommykim) for #545, and @git-geeky and @lukechen526 for reproduction and validation details.
|
|
@@ -457,11 +525,11 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
457
525
|
## [0.35.0] - 2026-07-17
|
|
458
526
|
|
|
459
527
|
### Fixed
|
|
460
|
-
- Updated
|
|
528
|
+
- Updated Selesai development packages and real-session SDK coverage to 0.80.10, removing known dependency audit findings. Thanks to dmg (@dmg-egg) for #520.
|
|
461
529
|
- `subagent({ action: "get" })` now honors `agentScope` for agent and chain details. Thanks to Kyle (@kylegl) for #519.
|
|
462
|
-
- Removed timer-driven foreground spinner redraws that repeatedly rendered the full
|
|
530
|
+
- Removed timer-driven foreground spinner redraws that repeatedly rendered the full Selesai TUI and could survive session shutdown; running indicators now advance only with real progress updates.
|
|
463
531
|
- Exposed cumulative spawn-budget usage in status and doctor output, preflighted declared static work before partial launch, and added bounded root-interactive additive grants without changing unlimited or compaction semantics. Thanks to Mati Gummá (@matigumma) for #495.
|
|
464
|
-
- Skipped optional global npm package discovery while
|
|
532
|
+
- Skipped optional global npm package discovery while Selesai is offline, avoiding `npm root -g` subprocesses during agent and skill discovery. Thanks to Rafiq Rashid (@rrvsh) for #506.
|
|
465
533
|
- Invalidated cached async status reads when a replacement changes file identity but reuses the same modification time, preventing steering and recovery from observing stale lifecycle state.
|
|
466
534
|
- Moved Pi-owned `@earendil-works/pi-tui` and `typebox` imports to optional wildcard peer dependencies while retaining exact dev versions for local and CI tests. Thanks to Alexei Ledenev (@alexei-led) for #510.
|
|
467
535
|
- Made steering pre-recovery acknowledgment and Windows async hard-kill regressions synchronize around their actual lifecycle boundaries instead of depending on CI scheduler or process-start timing.
|
|
@@ -483,9 +551,9 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
483
551
|
- Added acknowledged async steering: action `steer` returns a correlated request id and waits up to three seconds for child-Pi input acceptance, supports scheduled pending children, records a bounded steering ledger, and fail-closed single-run recovery after confirmed pause within a further 15-second bound. Chain, parallel, and nested runs report per-child partial/failure states without automatic interruption.
|
|
484
552
|
- Added a native, live-refreshing, inspection-only fleet opened by `/subagents-fleet` or `Ctrl+Alt+F`, with current-session foreground and recent async child navigation, transcript detail, and completed output/session paths. The textual status view remains available without a TUI, while stop, steer, and resume stay in explicit commands. Thanks to Jakub Neumann (@neumie) for #454 and Manfred Liiv (@manfredlift) for #412.
|
|
485
553
|
- Added `asyncWidget: false` to disable the above-editor background-run widget for companion footer/dashboard extensions, and exposed the workflow-level `goal` on `subagent:async-started` lifecycle events.
|
|
486
|
-
- Added agent-local `skillPath` discovery so custom agents can select private skills without publishing them to
|
|
554
|
+
- Added agent-local `skillPath` discovery so custom agents can select private skills without publishing them to Selesai's parent/global catalog. Relative paths resolve from the defining agent file, local matches take precedence, and missing or unreadable candidates fall back to normal discovery. Thanks to Kylegl (@kylegl) for #428.
|
|
487
555
|
- Added strict `acceptance` defaults in agent frontmatter and agent management. The default applies only to single-agent launches, explicit call values win, and chain/parallel acceptance remains task or step configuration. Thanks to ConjugativeIndicator (@CovetingEpiphany2152) for #453.
|
|
488
|
-
- Added canonical-session leases for direct child revival so independent parent processes cannot write the same persisted session concurrently. Lease ownership includes the revived/source run, parent session, runner and writer process identities, and host; a two-phase startup handshake rejects contention before
|
|
556
|
+
- Added canonical-session leases for direct child revival so independent parent processes cannot write the same persisted session concurrently. Lease ownership includes the revived/source run, parent session, runner and writer process identities, and host; a two-phase startup handshake rejects contention before Selesai starts, and stale recovery remains conservative. Thanks to Luke Parke (@LukasParke) for #446.
|
|
489
557
|
- Added single-agent launch defaults for `async`, `timeoutMs`, and `turnBudget` in agent frontmatter, with explicit tool-call values taking precedence. Thanks to ConjugativeIndicator (@CovetingEpiphany2152) for #410.
|
|
490
558
|
- Added `/subagents-stop` and `subagent({ action: "stop", id })` for current-session top-level async runs. The slash command opens a confirmation selector when no id is provided, falls back to exact commands without a TUI, routes scheduled jobs through `schedule-cancel`, and records manual stops as `stopped`/cancelled lifecycle events instead of timeouts. Thanks to Sean Seaman (@seans-leadsonline) for #407 and #408.
|
|
491
559
|
- Added an opt-in read-only subagent watchdog that reviews actual repo edits at safe agent-end boundaries, with visible warnings, main and child watchdog coordination, strong complementary model recommendations, changed-file TypeScript/JavaScript LSP diagnostics, `/subagents-watchdog` status/model commands, and agent-facing watchdog configuration actions. Thanks to can1357/oh-my-pi for the advisor/watchdog concept, and to apmantza/pi-lens, gjczone/pi-shazam, and can1357/oh-my-pi for LSP diagnostics patterns.
|
|
@@ -496,11 +564,11 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
496
564
|
- Documented `contact_supervisor` structured interview requests in the default child bridge instructions.
|
|
497
565
|
|
|
498
566
|
### Fixed
|
|
499
|
-
- Moved the published extension entrypoint to the package root so
|
|
567
|
+
- Moved the published extension entrypoint to the package root so Selesai displays the startup label as `pi-subagents` instead of an internal source path. Thanks to Ramin Hazegh (@rhazegh) for #475.
|
|
500
568
|
- Accepted empty optional `manualNotes` and `notes` strings in acceptance reports while retaining the `manual-notes` evidence requirement when configured. Thanks to Nick Tripp (@nicholastripp) for #474.
|
|
501
569
|
- Kept explicit child tool allowlists strict while surfacing actionable errors when named extension tools are requested without a loaded provider. Internal `structured_output` is now admitted automatically when an output schema is active, and direct and chained children share the same registry check. Thanks to DesertThief (@DesertThief) for #429 and Chris-Kode (@Chris-Kode) for confirming the structured-output case.
|
|
502
570
|
- Prevented model fallback retries for trailing child tool failures even when their details resemble provider outages, and retried provider streams that end without `finish_reason`. Thanks to 虚妄IlluDelu (@XWIlluDelu) for #436.
|
|
503
|
-
- Recognized
|
|
571
|
+
- Recognized Selesai's `max` thinking level in child model suffixes, Clarify selection, watchdog settings, and status formatting, while exposing it only when model metadata explicitly supports it. Thanks to mapleluv (@mapleluvr) for #423.
|
|
504
572
|
- Labeled every chain-clarification shortcut with its action, made the background state explicit, and kept primary actions in a separate footer without widening the fixed 84-column overlay. Thanks to GonzaloRocca (@gonzalonicolasr) for #430.
|
|
505
573
|
- Hardened acceptance reports so explicit empty changed-file and test arrays are treated as not applicable, required criteria are reflected in examples, known model-output variants normalize to one strict canonical shape, unknown or ambiguous values fail with exact diagnostics, and parsed reports plus ledgers persist in child metadata while normal output stays clean. Thanks to Nick Tripp (@nicholastripp) for #442, maxsturmb (@maxsturmb) for #452, and techmodv90 (@techmodv90) for #449 and #450.
|
|
506
574
|
- Shared task-intent classification between acceptance inference and the completion guard so read-only tasks with explicit no-edit wording do not receive impossible write-evidence gates, while scoped prohibitions still preserve later implementation clauses. Thanks to 虚妄IlluDelu (@XWIlluDelu) for #433.
|
|
@@ -511,13 +579,13 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
511
579
|
- Bounded live child JSONL lines and stderr tails in foreground and async runners, preserving split UTF-8 and final unterminated events while returning structured `protocol_output_limit` failures for oversized lines. Completion now honors `agent_end.willRetry` and prefers `agent_settled` without removing the legacy terminal-message fallback. Thanks to Luke Parke (@LukasParke) for #444 and #445.
|
|
512
580
|
- Made `subagent_wait({ id })` track remembered detached foreground runs, defer acceptance until the child exits, and wake the originating session with recovered output so parents do not launch duplicate replacements after supervisor coordination. Thanks to Ramin Hazegh (@rhazegh) for #456.
|
|
513
581
|
- Renamed the parent blocking tool from `wait` to `subagent_wait` with no legacy alias, avoiding startup conflicts with unrelated extension wait tools. Thanks to DesZhang (@DesZhang) for #437 and Nate Rutman (@nrutman) for confirming the conflict and clarifying the incompatible semantics.
|
|
514
|
-
- Reused the verified current or installed
|
|
582
|
+
- Reused the verified current or installed Selesai CLI on POSIX instead of resolving a potentially missing or different `pi` from `PATH`. Thanks to Luke Parke (@LukasParke) for #443.
|
|
515
583
|
- Preserved `{outputs.name}` as literal task text in async single runs while keeping named-output interpolation for real chains. Thanks to Tristan Storch (@tstorch) for #427.
|
|
516
584
|
- Recovered acceptance reports from child-written configured outputs, honoring file-only source precedence and surfacing malformed primary reports. Thanks to 虚妄IlluDelu (@XWIlluDelu) for #434.
|
|
517
585
|
- Isolated inherited output files for async parallel siblings and rejected duplicate resolved output paths before launch, preventing silent report loss. Thanks to basher83 (@basher83) for #420.
|
|
518
586
|
- Replaced raw chain-schema failures with actionable errors that name invalid properties, list allowed fields, and show valid examples. Thanks to Nicolas Marchildon (@elecnix) for #416 and #425.
|
|
519
587
|
- Hide lower-priority agent definitions from `subagent({ action: "list" })` when a higher-priority project or user agent shadows them. Thanks to Kylegl (@kylegl) for #415.
|
|
520
|
-
- Resolve the real
|
|
588
|
+
- Resolve the real Selesai CLI on Windows when pi-subagents runs inside an embedded SDK host instead of relaunching the host application's entry point. Thanks to Marc Kassubeck (@CompN3rd) for #413.
|
|
521
589
|
- Avoid rendering active subagent activity as `now ago`. Thanks to Viktor Chernodub (@chernodub) for #414.
|
|
522
590
|
- Preserve async resume model/thinking metadata for live, completed, and result-only child runs, and repair stale status metadata from final results. Thanks to BoxChen (@nishuzumi) for #403.
|
|
523
591
|
- Gate foreground `contact_supervisor`/intercom detaches on delivered supervisor handoff events, keep detached foreground runs visible through status/fleet, and mark detached placeholders as non-successful so missing explicit outputs are not mistaken for completed work.
|
|
@@ -542,20 +610,20 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
542
610
|
|
|
543
611
|
### Added
|
|
544
612
|
- Added optional `toolBudget` limits for child subagent tool calls. Runs, steps, and agents can set `{ soft?, hard, block? }`; the child runtime nudges at the soft limit and blocks configured tools after the hard limit so runaway browsing can still finish with final text. Thanks to Jürgen Schmied (@jschmied) for #379.
|
|
545
|
-
- Added a stable v1 in-process event-bus RPC for other
|
|
613
|
+
- Added a stable v1 in-process event-bus RPC for other Selesai extensions, with `ping`, `status`, async-only `spawn`, `interrupt`, and async `stop` over versioned request/reply envelopes.
|
|
546
614
|
- Added `toolDescriptionMode` with `full`, `compact`, and `custom` modes for the parent-facing `subagent` tool description. Compact mode reduces prompt bloat while keeping safety-critical orchestration guidance, and invalid custom descriptions fall back to full mode.
|
|
547
615
|
- Added an optional read-only subagent fleet/status view with `/subagents-fleet` and `subagent({ action: "status", view: "fleet" })`, plus `view: "transcript"` to tail active async child output/session artifacts.
|
|
548
616
|
- Added uniform per-child transcript artifacts (`<run>_<agent>_transcript.jsonl`) for foreground and async subagent runs, gated by `subagents.artifacts.includeTranscript` (default on). Each transcript is a versioned JSONL stream of child messages, tool starts/ends, and stdout/stderr lines with a byte cap and truncation marker.
|
|
549
|
-
- Added `subagent({ action: "steer", id, message, index? })` for non-terminal guidance to live async
|
|
617
|
+
- Added `subagent({ action: "steer", id, message, index? })` for non-terminal guidance to live async Selesai child sessions, with file-backed control requests, per-child steering inboxes, status/event visibility, and queued delivery for pending indexed async children when the runtime supports mid-run steering.
|
|
550
618
|
- Added an optional `turnBudget` (`maxTurns` with `graceTurns`) for foreground and async/background subagent runs. At the soft `maxTurns` limit the child is warned via its system prompt to wrap up; after `graceTurns` additional assistant turns the run is aborted and partial output is returned. `turnBudget`, `turnBudgetExceeded`, and `wrapUpRequested` propagate through results, async status, and nested summaries.
|
|
551
|
-
- Added optional scheduled subagent runs so callers can defer a subagent launch until a future time. `subagent({ action: "schedule", agent, task?, schedule: "+10m" | "2030-01-01T09:00:00Z", scheduleName? })` arms a one-shot timer that launches the run as a normal tracked async run once it fires, with `schedule-list`, `schedule-status`, and `schedule-cancel` management actions. Schedules are persisted per session and restored after a
|
|
619
|
+
- Added optional scheduled subagent runs so callers can defer a subagent launch until a future time. `subagent({ action: "schedule", agent, task?, schedule: "+10m" | "2030-01-01T09:00:00Z", scheduleName? })` arms a one-shot timer that launches the run as a normal tracked async run once it fires, with `schedule-list`, `schedule-status`, and `schedule-cancel` management actions. Schedules are persisted per session and restored after a Selesai restart; jobs missed by more than the configured lateness window are marked `missed` instead of firing late. The feature is opt-in and requires `{ "scheduledRuns": { "enabled": true } }` in `~/.selesai/agent/extensions/subagent/config.json`. Only schedule explicit delayed runs the user asked for. Thanks to @tintinweb for the concept.
|
|
552
620
|
- Added a real Pi-session E2E test lane with faux provider routing to verify parent-child subagent result delivery without network model calls.
|
|
553
621
|
- Hardened the `wait` tool's wake path so an event wake cancels its poll-interval fallback timer instead of letting both run, and so an already-aborted turn resolves immediately. Added a test that verifies an event wakes `wait` before the poll interval elapses.
|
|
554
622
|
- Added smart completion batching for async subagent notifications. Successful sibling completions that finish within a short window now arrive as a single grouped message instead of separate notifications; a hard max-wait cap prevents holding them indefinitely, and late-finishing siblings join a shorter straggler group. Failed and paused completions bypass batching and fire immediately so failure and attention signals are never delayed. The debounce window, max-wait cap, and straggler windows are configurable via `completionBatch` in `config.json`.
|
|
555
623
|
- Added `subagent({ action: "eject" })`, `disable`, `enable`, and `reset` management actions for bundled and custom agents. `eject` copies a builtin or package agent to user/project scope as an editable custom file that shadows the original; `disable`/`enable` toggle a reversible `agentOverrides.<name>.disabled` settings override without deleting the agent; `reset` removes the scope's custom agent file and/or settings override to restore the bundled default. All four accept `agentScope: "user" | "project"` (default `user`) and are blocked from child-safe fanout mode alongside `create`/`update`/`delete`.
|
|
556
624
|
- Added fuzzy model resolution so callers can specify models with provider separator variations, optional date-stamp parts, and case differences instead of exact `provider/modelId` strings. When `subagents.modelScope: { enforce: true, allow: [...] }` is configured, explicit caller-supplied out-of-scope models error while frontmatter/parent-inherited/fallback models warn. Inspired by @tintinweb's pi-subagents.
|
|
557
625
|
- Added a parent-side `wait` tool for detached async subagent runs. `wait()` returns when the next active run finishes or needs attention, `wait({ all: true })` drains all active runs, `wait({ id })` targets one run, and `wait({ timeoutMs })` caps the block. This lets background-launching skills and non-interactive `pi -p` runs keep going without sleep/status-polling loops or abandoned children. Thanks to RoboBryce (@robobryce) for #365.
|
|
558
|
-
- Added an opt-in `memory` frontmatter field for agent definitions so recurring custom agents can maintain role-specific durable memory (e.g. a security reviewer accumulating threat-model notes). `memory: { scope: "project" | "user", path: "<name>" }` resolves a safe `agent-memory/` directory, injects the first 200 lines of a `MEMORY.md` into the child system prompt, and falls back to a read-only memory block for agents without write tools. Memory lives under a dedicated namespace that does not conflict with
|
|
626
|
+
- Added an opt-in `memory` frontmatter field for agent definitions so recurring custom agents can maintain role-specific durable memory (e.g. a security reviewer accumulating threat-model notes). `memory: { scope: "project" | "user", path: "<name>" }` resolves a safe `agent-memory/` directory, injects the first 200 lines of a `MEMORY.md` into the child system prompt, and falls back to a read-only memory block for agents without write tools. Memory lives under a dedicated namespace that does not conflict with Selesai's parent/session/project memory system. Inspired by @tintinweb's pi-subagents.
|
|
559
627
|
- Added native supervisor coordination for child subagents. Children can use `contact_supervisor` without installing `pi-intercom`, and parent-side requests are scoped to the exact session id that spawned the child.
|
|
560
628
|
- Added native prompt workflow commands: `/prompt-workflow` runs a prompt template through a subagent, and `/chain-prompts` turns prompt templates into native subagent chain steps.
|
|
561
629
|
|
|
@@ -564,9 +632,9 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
564
632
|
- Tolerate execution-mode action aliases such as `single`, `parallel`, `PARALLEL`, and `tasks` when the matching execution fields are present, while preserving clear runtime errors for unknown management actions. Thanks to Artem Timofeev (@atimofeev) for #382.
|
|
565
633
|
- Removed companion-package recommendation messages from session start, `subagent({ action: "list" })`, and `/subagents-doctor`. Thanks to Mark Gaiser (@markg85) for #381.
|
|
566
634
|
- Recover detached foreground subagent results after intercom handoff so completed detached runs remain visible to status and resume paths. Thanks to Artem Timofeev (@atimofeev) for #384.
|
|
567
|
-
- Scope async subagent completion notifications to the exact owning
|
|
635
|
+
- Scope async subagent completion notifications to the exact owning Selesai session so another session in the same repo no longer receives result notices.
|
|
568
636
|
- Harden scheduled-run timestamp parsing and persisted store validation so ambiguous absolute times and corrupted job records fail clearly instead of being normalized or dropped.
|
|
569
|
-
- Derive live-detail and full-notification hints from
|
|
637
|
+
- Derive live-detail and full-notification hints from Selesai's configured expand key instead of hard-coding `Ctrl+O`. Thanks to Kylegl (@kylegl) for #364.
|
|
570
638
|
- Tolerate transient Windows `EPERM`/`EBUSY`/`EACCES` locks when atomically replacing async JSON files. Thanks to ThanhNT29Jacky (@ThanhNT29Jacky) for #380.
|
|
571
639
|
- Hardened the async timeout integration test to wait for the mock child to spawn before asserting the timeout result, fixing a race where the timeout could fire before the child existed.
|
|
572
640
|
|
|
@@ -580,7 +648,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
580
648
|
- Added `totalCost` rollups to foreground single, parallel, and chain run details, including nested foreground subagent costs and compact progress display. Thanks to Clark Everson (@gr3enarr0w) for #345.
|
|
581
649
|
- Added `globalConcurrencyLimit` to cap simultaneously running subagent tasks across parallel groups in a single run. Thanks to Clark Everson (@gr3enarr0w) for #349.
|
|
582
650
|
- Added stable v1 async lifecycle artifact metadata in `status.json`, `events.jsonl`, and result JSON so observability and workflow gates can correlate subagent runs without scraping terminal output. Thanks to Clark Everson (@gr3enarr0w) for #350.
|
|
583
|
-
- Added `SELESAI_SUBAGENT_PI_BINARY` to let wrappers launch child agents through an explicit
|
|
651
|
+
- Added `SELESAI_SUBAGENT_PI_BINARY` to let wrappers launch child agents through an explicit Selesai binary instead of resolving `pi` from `PATH`. Thanks to David Barroso (@dbarrosop) for #341.
|
|
584
652
|
- Added `worktreeBaseDir` and `SELESAI_SUBAGENTS_WORKTREE_DIR` so worktree isolation can use a stable trusted base directory. Thanks to Matt Robenolt (@mattrobenolt) for #185.
|
|
585
653
|
- Added `singleRunOutputBaseDir` so single-agent relative outputs can be routed to a configured artifact directory. Thanks to Oleksii Nikiforov (@NikiforovAll) for #173.
|
|
586
654
|
- Added `maxSubagentSpawnsPerSession` and `SELESAI_SUBAGENT_MAX_SPAWNS_PER_SESSION` to cap total subagent launches in one session. Thanks to @eightHundreds for #239.
|
|
@@ -591,12 +659,12 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
591
659
|
- Detach foreground subagent runs immediately when a child starts a blocking `contact_supervisor` or `intercom.ask` call, avoiding parent/child intercom deadlocks. Thanks to huarkiou (@huarkiou) for #335.
|
|
592
660
|
- Made child boundary prompt editing instructions tool-agnostic so Codex-style adapters are not told to call unavailable `edit`/`write` tools. Thanks to Artem Timofeev (@atimofeev) for #338.
|
|
593
661
|
- Recursively interrupt active async parallel children and nested async descendants when pausing a background run. Thanks to Vicary (@vicary) for #355.
|
|
594
|
-
- Avoid runtime peer imports from detached async runners while still forwarding the
|
|
662
|
+
- Avoid runtime peer imports from detached async runners while still forwarding the Selesai package root when available. Thanks to @aurbina83 for #352 and @huangkun3251 for #342.
|
|
595
663
|
- Fall back to PATH `node` for async runners when the current Node executable path is stale or deleted. Thanks to Richard Hao (@0xRichardH) for #347.
|
|
596
664
|
- Retry fallback models when a zero-exit subagent attempt produces no output, including background async runs, preserve structured-output-only completions, and pre-warm forked session files for parallel children. Thanks to Clark Everson (@gr3enarr0w) for #344.
|
|
597
665
|
- Preserve explicit empty companion suggestion surfaces and keep global companion suggestions disabled when writing package dismissal state.
|
|
598
666
|
- Include bounded async runner stderr tails when stale-run reconciliation marks a startup crash failed. Thanks to Salem Sayed (@salemsayed) for #340.
|
|
599
|
-
- Persist forked child session files when
|
|
667
|
+
- Persist forked child session files when Selesai returns a branch path before writing it to disk. Thanks to @trisforrestcam for #174.
|
|
600
668
|
- Pass explicit `thinking: off` through to child model arguments as a `:off` suffix. Thanks to Thomas Dietert (@tdietert) for #147.
|
|
601
669
|
- Sanitize Anthropic signed `thinking` / `redacted_thinking` blocks out of forked child sessions and force child thinking off so fork-context subagents survive signed-thinking transcripts after branching or compaction. Thanks to Thomas Dietert (@tdietert) for #147.
|
|
602
670
|
- Restore queued and running detached async jobs into the widget after restarting Pi. Thanks to Vicary (@vicary) for #362.
|
|
@@ -609,7 +677,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
609
677
|
- Added subagent profile commands and provider model catalog generation for quota and quality model profiles. Thanks to tencnivel (@tencnivel) for #333.
|
|
610
678
|
|
|
611
679
|
### Fixed
|
|
612
|
-
- Discover `pi-intercom` installations created by `--extension npm:pi-intercom` under
|
|
680
|
+
- Discover `pi-intercom` installations created by `--extension npm:pi-intercom` under Selesai's temporary npm extension cache. Thanks to loss-and-quick (@loss-and-quick) for #336.
|
|
613
681
|
- Made async subagent interrupt, steer, and stop requests portable across platforms that do not support Unix signals. Thanks to AeonDave (@AeonDave) for #332.
|
|
614
682
|
- Hardened profile commands by probing models without tools, rejecting unsafe profile/provider path tokens, and resolving short model IDs and thinking suffixes against the current registry.
|
|
615
683
|
- Limited inline `/chain` acceptance values to levels expressible in slash syntax and kept completion disabled inside shared `--` tasks with literal parentheses.
|
|
@@ -618,15 +686,15 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
618
686
|
|
|
619
687
|
### Added
|
|
620
688
|
- Added `subagents.disableThinking` so bundled builtin agents can drop thinking suffix defaults for providers that do not accept them. Thanks to Joshua Harding (@jhstatewide) for #212.
|
|
621
|
-
- Discover nested grouped skills such as `.
|
|
622
|
-
- Follow
|
|
689
|
+
- Discover nested grouped skills such as `.pi/skills/group/name/SKILL.md` so subagents match the host runtime's recursive skill lookup. Thanks to Weaxs (@Weaxs) for #262.
|
|
690
|
+
- Follow Selesai's configured project config directory for project-local agents, chains, skills, packages, settings, direct MCP config, and intercom package discovery instead of hardcoding `.pi`, while retaining `.pi` as the fallback for older Pi versions.
|
|
623
691
|
|
|
624
692
|
### Changed
|
|
625
693
|
- Hardened npm installs by tracking `package-lock.json`, pinning direct dependencies, and using `npm ci --ignore-scripts` in CI and release workflows. Thanks to Modestas Vainius (@modax) for #234.
|
|
626
694
|
- List configured subagent skills by name, description, and file path instead of inlining full skill bodies, and ensure tool-restricted children can read those skill files on demand. Thanks to Ruben Paz (@Istar-Eldritch) for #183.
|
|
627
695
|
|
|
628
696
|
### Fixed
|
|
629
|
-
- Resolve the async result watcher directory with `fs.realpathSync.native()` before `fs.watch()` so Windows profiles with 8.3 temp paths do not crash
|
|
697
|
+
- Resolve the async result watcher directory with `fs.realpathSync.native()` before `fs.watch()` so Windows profiles with 8.3 temp paths do not crash Selesai when async subagent results arrive. Thanks to kerushidao (@kerushidao) for #254.
|
|
630
698
|
- Accept structured acceptance reports emitted in JSON-family fences when the fenced body has the acceptance-report shape. Thanks to Suleiman Tawil (@stawils) for #253.
|
|
631
699
|
- Report field-level acceptance-report validation errors instead of a generic parse failure, and clarify array element types in the acceptance prompt. Thanks to Whisperfall (@Whisperfall) for #264 and josephkEA (@josephkEA) for the follow-up reproduction.
|
|
632
700
|
- Simplified the public `acceptance` and chain tool schemas so Kimi/Moonshot-style parsers can load `subagent`, while runtime validation still rejects malformed acceptance config and dynamic fanout steps. Thanks to Sergio Agosti (@sergio-agosti) for #249.
|
|
@@ -653,14 +721,14 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
653
721
|
- Interrupt live async children before delivering `resume` follow-up messages so intercom nudges reach workers that are stuck mid-turn more reliably.
|
|
654
722
|
- Reject appended chain steps with duplicate reserved output names or unknown named-output references before they are queued.
|
|
655
723
|
- Ignore legacy `.agents/skills` files during agent discovery so skill definitions are not registered as subagents. Thanks to chyax98 (@chyax98) for #257.
|
|
656
|
-
- Launch detached async runners through Node when
|
|
724
|
+
- Launch detached async runners through Node when Selesai itself is not the Node executable. Thanks to Tetsuya.dev (@tetsuya-dev-jp) for #273.
|
|
657
725
|
- Preserve the slash command requester context when bridge requests launch subagents. Thanks to Victor Sumner (@vsumner) for #268.
|
|
658
726
|
- Trim repeated nested `subagent` tool schema descriptions so provider payloads stay compact while retaining top-level parameter guidance. Thanks to Thomas Mustier (@tmustier) for #250.
|
|
659
727
|
|
|
660
728
|
## [0.29.0] - 2026-06-19
|
|
661
729
|
|
|
662
730
|
### Added
|
|
663
|
-
- Added package-provided agent and chain discovery from installed
|
|
731
|
+
- Added package-provided agent and chain discovery from installed Selesai packages and package settings, including read-only management behavior, package source counts in doctor output, nested-cwd project package discovery, and package definitions that remain below user/project overrides. Thanks to Fabian Jocks (@iamfj) for #278.
|
|
664
732
|
- Added `SELESAI_SUBAGENT_EXTRA_AGENT_DIRS` and `PI_INTERCOM_EXTENSION_DIR` overrides so bundled agents and `pi-intercom` can be loaded from read-only package locations. Thanks to David Barroso (@dbarrosop) for #288.
|
|
665
733
|
|
|
666
734
|
### Fixed
|
|
@@ -722,8 +790,8 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
722
790
|
### Fixed
|
|
723
791
|
- Treat provider-coerced single-run `output: "false"` the same as boolean `false`, preventing literal `false` output files in foreground and async runs.
|
|
724
792
|
- Include selected direct MCP tool names in explicit child `--tools` allowlists when metadata cache/config resolution is available.
|
|
725
|
-
- Honor `
|
|
726
|
-
- Hide nested child
|
|
793
|
+
- Honor `PI_CODING_AGENT_DIR` for runtime config, agent/chain/settings discovery, skills, run history, artifact cleanup, and intercom defaults.
|
|
794
|
+
- Hide nested child Selesai process windows on Windows for both foreground and background subagent runs.
|
|
727
795
|
- 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.
|
|
728
796
|
- 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.
|
|
729
797
|
- Declare `@earendil-works/pi-tui` as a runtime dependency so packaged installs can load the extension without relying on dev dependencies or optional peers.
|
|
@@ -747,7 +815,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
747
815
|
## [0.24.1] - 2026-05-10
|
|
748
816
|
|
|
749
817
|
### Changed
|
|
750
|
-
- Migrated
|
|
818
|
+
- Migrated Selesai package imports and package metadata to the `@earendil-works/*` scope, switched async TypeScript execution discovery to upstream `jiti`, and hardened forked-session creation to use the public `SessionManager.open()` path.
|
|
751
819
|
|
|
752
820
|
## [0.24.0] - 2026-05-03
|
|
753
821
|
|
|
@@ -785,10 +853,10 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
785
853
|
- Detect `pi-intercom` when installed through the documented `pi install npm:pi-intercom` package flow, instead of only checking the legacy local extension path.
|
|
786
854
|
|
|
787
855
|
### Changed
|
|
788
|
-
- Store and discover saved chain workflows from dedicated chain directories: user chains in `~/.selesai/agent/chains/**/*.chain.md` and project chains in `.
|
|
789
|
-
- Retry foreground subagent fallback models when
|
|
856
|
+
- Store and discover saved chain workflows from dedicated chain directories: user chains in `~/.selesai/agent/chains/**/*.chain.md` and project chains in `.pi/chains/**/*.chain.md`.
|
|
857
|
+
- Retry foreground subagent fallback models when Selesai reports a retryable provider error, such as 429/quota, even if the child process exits successfully.
|
|
790
858
|
- 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.
|
|
791
|
-
- Render async subagent widgets through an adaptive component so active parallel agent rows fit without
|
|
859
|
+
- Render async subagent widgets through an adaptive component so active parallel agent rows fit without Selesai's fixed string-widget truncation marker.
|
|
792
860
|
- 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.
|
|
793
861
|
|
|
794
862
|
## [0.22.0] - 2026-05-02
|
|
@@ -799,7 +867,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
799
867
|
|
|
800
868
|
### Changed
|
|
801
869
|
- 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.
|
|
802
|
-
- Hide unsupported thinking levels in subagent clarify and agent-manager pickers when
|
|
870
|
+
- Hide unsupported thinking levels in subagent clarify and agent-manager pickers when Selesai exposes per-model thinking metadata.
|
|
803
871
|
- Updated builtin agent prompts, README, and bundled skill docs to prefer `contact_supervisor` for blocked decisions and avoid child-side routine completion handoffs.
|
|
804
872
|
- Teach reviewer agents that repo-local `progress.md` files are intentional scratch files that should remain untracked and covered by `.gitignore`.
|
|
805
873
|
|
|
@@ -811,7 +879,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
811
879
|
### Fixed
|
|
812
880
|
- 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.
|
|
813
881
|
- Scoped `/subagents-status` to async runs launched from the current pi session instead of showing prior or unrelated sessions.
|
|
814
|
-
- Declared the
|
|
882
|
+
- Declared the Selesai 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.
|
|
815
883
|
- Made prompt-runtime extension path assertions portable on Windows.
|
|
816
884
|
|
|
817
885
|
## [0.21.4] - 2026-05-01
|
|
@@ -822,7 +890,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
822
890
|
- 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.
|
|
823
891
|
|
|
824
892
|
### Fixed
|
|
825
|
-
- Marked
|
|
893
|
+
- Marked Selesai runtime peer dependencies as optional so npm package installs do not auto-install duplicate Selesai packages or emit unrelated transitive dependency warnings.
|
|
826
894
|
|
|
827
895
|
## [0.21.3] - 2026-04-30
|
|
828
896
|
|
|
@@ -990,7 +1058,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
990
1058
|
- 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.
|
|
991
1059
|
|
|
992
1060
|
### Fixed
|
|
993
|
-
- Migrated extension tool schemas from `@sinclair/typebox` to `typebox` 1.x so packaged installs follow
|
|
1061
|
+
- Migrated extension tool schemas from `@sinclair/typebox` to `typebox` 1.x so packaged installs follow Selesai's current extension runtime contract.
|
|
994
1062
|
|
|
995
1063
|
### Changed
|
|
996
1064
|
- Moved TypeBox from `peerDependencies` to a real `dependencies` entry so `pi install` production installs keep the schema package available at runtime.
|
|
@@ -1033,7 +1101,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
1033
1101
|
## [0.16.1] - 2026-04-16
|
|
1034
1102
|
|
|
1035
1103
|
### Changed
|
|
1036
|
-
- Parallel subagent startup no longer applies any worker-start stagger in `mapConcurrent()`. `pi-subagents` now relies on
|
|
1104
|
+
- Parallel subagent startup no longer applies any worker-start stagger in `mapConcurrent()`. `pi-subagents` now relies on Selesai core's settings/auth lock retry behavior instead of carrying its own startup-delay workaround.
|
|
1037
1105
|
|
|
1038
1106
|
## [0.16.0] - 2026-04-16
|
|
1039
1107
|
|
|
@@ -1051,8 +1119,8 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
1051
1119
|
## [0.15.0] - 2026-04-16
|
|
1052
1120
|
|
|
1053
1121
|
### Added
|
|
1054
|
-
- Added `systemPromptMode` so subagents can replace
|
|
1055
|
-
- Added `inheritProjectContext` and `inheritSkills` so child runs can keep or strip inherited project instruction files (`AGENTS.md`, `CLAUDE.md`, etc.) and
|
|
1122
|
+
- Added `systemPromptMode` so subagents can replace Selesai's base prompt with `--system-prompt` instead of always appending with `--append-system-prompt`, shipping the core of issue `#85` from @isvlasov.
|
|
1123
|
+
- Added `inheritProjectContext` and `inheritSkills` so child runs can keep or strip inherited project instruction files (`AGENTS.md`, `CLAUDE.md`, etc.) and Selesai's discovered skills block.
|
|
1056
1124
|
|
|
1057
1125
|
### Changed
|
|
1058
1126
|
- Builtin subagents now default to `systemPromptMode: replace`, with builtin `delegate` staying on `append`.
|
|
@@ -1060,7 +1128,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
1060
1128
|
- 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.
|
|
1061
1129
|
|
|
1062
1130
|
### Fixed
|
|
1063
|
-
- Cross-platform tests now avoid machine-specific
|
|
1131
|
+
- Cross-platform tests now avoid machine-specific Selesai install paths, align homedir-sensitive settings discovery on Windows CI, and use deterministic async config-write failure fixtures.
|
|
1064
1132
|
- 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.
|
|
1065
1133
|
- 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.
|
|
1066
1134
|
- 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.
|
|
@@ -1318,7 +1386,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
1318
1386
|
- `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.
|
|
1319
1387
|
- 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.
|
|
1320
1388
|
- 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.
|
|
1321
|
-
- Skills from globally-installed npm packages (via `pi install npm:...`) are now discoverable by subagents. Previously only scanned local `.
|
|
1389
|
+
- 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.
|
|
1322
1390
|
- **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.
|
|
1323
1391
|
- **Windows compatibility**: Suppressed flashing console windows when spawning async runner processes (`windowsHide: true`).
|
|
1324
1392
|
- **Windows compatibility**: Fixed pi CLI resolution in async runner by passing `piPackageRoot` through to `getPiSpawnCommand`.
|
|
@@ -1387,14 +1455,14 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
1387
1455
|
- Async execution now respects agent `extensions` sandbox settings, matching sync behavior.
|
|
1388
1456
|
- Single-mode `output` now resolves explicit paths correctly: absolute paths are used directly, and relative paths resolve against `cwd`.
|
|
1389
1457
|
- 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.
|
|
1390
|
-
-
|
|
1458
|
+
- Selesai 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.
|
|
1391
1459
|
- Sync JSONL artifact capture now streams lines directly to disk with backpressure handling, preventing unbounded memory growth in long or parallel runs.
|
|
1392
1460
|
- Execution now defaults `agentScope` to `both`, aligning run behavior with management `list` so project agents shown in discovery execute without explicit scope overrides.
|
|
1393
1461
|
- Async completion notifications now dedupe at source and notify layers, eliminating duplicate/triple "Background task completed" messages.
|
|
1394
1462
|
- Async notifications now standardize on canonical `subagent:started` and `subagent:complete` events (legacy enhanced event emissions removed).
|
|
1395
1463
|
|
|
1396
1464
|
### Changed
|
|
1397
|
-
- Reworked `skills.ts` to resolve skills through
|
|
1465
|
+
- Reworked `skills.ts` to resolve skills through Selesai core skill loading with explicit project-first precedence and support for project/user package and settings skill paths.
|
|
1398
1466
|
- Skill discovery now normalizes and prioritizes collisions by source so project-scoped skills consistently win over user-scoped skills.
|
|
1399
1467
|
- Documentation now references `<tmpdir>` instead of hardcoded `/tmp` paths for cross-platform clarity.
|
|
1400
1468
|
|
|
@@ -1528,7 +1596,7 @@ Selesai vendors pi-subagents 0.48.0 and layers its own branding and additions on
|
|
|
1528
1596
|
- Multi-select with space bar
|
|
1529
1597
|
- Fuzzy search by name or description
|
|
1530
1598
|
- Shows skill source (project/user) and description
|
|
1531
|
-
- Project skills (`.
|
|
1599
|
+
- Project skills (`.pi/skills/`) override user skills (`~/.selesai/agent/skills/`)
|
|
1532
1600
|
- **Skill display** - Skills shown in TUI, progress tracking, summary, artifacts, and async status
|
|
1533
1601
|
- **Parallel task skills** - Each parallel task can specify its own skills via `skill` parameter
|
|
1534
1602
|
|