21.0.0 (2026-08-30)
⚠ BREAKING CHANGES
- pi-subagents:
WorkspacePrepareContextno longer carriesinvocation. AWorkspaceProviderthat readctx.invocationmust drop the read; there is no replacement field. The value was a UI display snapshot -modelNamewas a lowercased display string, andundefinedwhenever it matched the parent's model - so it never carried usable per-call facts. If a provider needs one, open an issue naming the fact: the seam will grow a purpose-built field (isBackground,model,maxTurns), not the display snapshot. - pi-subagents: an agent .md that sets model, thinking, max_turns, inherit_context, or run_in_background no longer overrides a subagent tool call that names the same field. Add
locked: trueto the agent's frontmatter to restore the previous behavior for every field the file sets, orlocked: [model, thinking]to hold only some. A field named in the list form is withheld from callers even when the file supplies no value of its own.
Bug Fixes
- pi-subagents: honor subagent tool parameters over agent frontmatter unless the agent locks the field (832d261), closes #829
- pi-subagents: reject an unrecognized thinking level instead of silently disabling thinking (d1bc031)
- pi-subagents: report a locked field that discarded a subagent parameter (c0f9ccf), closes #829
- pi-subagents: report an unknown agent type on background spawns (7c2a518), closes #829
Documentation
- pi-subagents: clarify what modelFromParams reports under locked fields (45da58b), closes #829
- pi-subagents: correct which spawn options agent frontmatter fills (f25d283), closes #829
- pi-subagents: document locked-field precedence and the corrected thinking levels (86e59a6)
Code Refactoring
- pi-subagents: drop the unread invocation field from the workspace seam (4942e09)