@jopqior/pi-subagents 1.0.0

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.
Files changed (110) hide show
  1. package/CHANGELOG.md +2705 -0
  2. package/LICENSE +21 -0
  3. package/README.md +503 -0
  4. package/dist/public.d.ts +331 -0
  5. package/dist/settings.d.ts +82 -0
  6. package/docs/architecture/architecture.md +1566 -0
  7. package/docs/architecture/client-server-opportunities.md +127 -0
  8. package/docs/architecture/history/phase-1-api-boundary.md +8 -0
  9. package/docs/architecture/history/phase-10-structural-decomposition.md +141 -0
  10. package/docs/architecture/history/phase-11-closure-to-class.md +100 -0
  11. package/docs/architecture/history/phase-12-complexity-test-fixtures.md +55 -0
  12. package/docs/architecture/history/phase-13-remaining-smells.md +88 -0
  13. package/docs/architecture/history/phase-14-strip-policy.md +49 -0
  14. package/docs/architecture/history/phase-15-domain-model-evolution.md +73 -0
  15. package/docs/architecture/history/phase-16-invert-dependencies.md +144 -0
  16. package/docs/architecture/history/phase-17-core-consolidation.md +214 -0
  17. package/docs/architecture/history/phase-18-reconsider-ui.md +166 -0
  18. package/docs/architecture/history/phase-19-implement-ui-decisions.md +282 -0
  19. package/docs/architecture/history/phase-2-remove-scheduling.md +9 -0
  20. package/docs/architecture/history/phase-20-result-delivery.md +245 -0
  21. package/docs/architecture/history/phase-21-classification-model-boundary.md +107 -0
  22. package/docs/architecture/history/phase-3-remove-rpc-groupjoin.md +11 -0
  23. package/docs/architecture/history/phase-4-implement-service.md +8 -0
  24. package/docs/architecture/history/phase-5-decompose-index.md +42 -0
  25. package/docs/architecture/history/phase-7-encapsulation.md +173 -0
  26. package/docs/architecture/history/phase-8-testability.md +103 -0
  27. package/docs/architecture/history/phase-9-observation-ctx.md +122 -0
  28. package/docs/comparison-with-upstream.md +77 -0
  29. package/docs/configuration.md +364 -0
  30. package/docs/decisions/0001-deferred-patches.md +80 -0
  31. package/docs/decisions/0002-extensions-on-a-minimal-core.md +125 -0
  32. package/docs/decisions/0003-publish-bundled-type-declarations.md +71 -0
  33. package/docs/decisions/0004-reconsider-ui-direction.md +279 -0
  34. package/docs/decisions/0005-subagent-record-admission-policy.md +106 -0
  35. package/docs/decisions/0006-inherited-prompt-is-identity-only.md +104 -0
  36. package/docs/decisions/0007-transcript-viewer-is-not-an-overlay.md +228 -0
  37. package/docs/decisions/0008-inherited-region-is-shared-parts.md +81 -0
  38. package/docs/decisions/0009-portable-inheritance-is-provider-scoped.md +116 -0
  39. package/package.json +91 -0
  40. package/src/config/agent-types.ts +135 -0
  41. package/src/config/custom-agents.ts +151 -0
  42. package/src/config/default-agents.ts +121 -0
  43. package/src/config/invocation-config.ts +167 -0
  44. package/src/config/thinking-level.ts +58 -0
  45. package/src/debug.ts +14 -0
  46. package/src/handlers/index.ts +3 -0
  47. package/src/handlers/interrupt.ts +58 -0
  48. package/src/handlers/lifecycle.ts +71 -0
  49. package/src/handlers/widget-events.ts +49 -0
  50. package/src/index.ts +292 -0
  51. package/src/layered-settings.ts +105 -0
  52. package/src/lifecycle/child-lifecycle.ts +115 -0
  53. package/src/lifecycle/child-shutdown.ts +105 -0
  54. package/src/lifecycle/concurrency-limiter.ts +55 -0
  55. package/src/lifecycle/create-subagent-session.ts +335 -0
  56. package/src/lifecycle/parent-snapshot.ts +119 -0
  57. package/src/lifecycle/run-listeners.ts +37 -0
  58. package/src/lifecycle/selection-scope.ts +116 -0
  59. package/src/lifecycle/spawn-selection.ts +259 -0
  60. package/src/lifecycle/subagent-manager.ts +546 -0
  61. package/src/lifecycle/subagent-session.ts +347 -0
  62. package/src/lifecycle/subagent-state.ts +404 -0
  63. package/src/lifecycle/subagent.ts +885 -0
  64. package/src/lifecycle/turn-limits.ts +13 -0
  65. package/src/lifecycle/usage.ts +60 -0
  66. package/src/lifecycle/workspace-bracket.ts +76 -0
  67. package/src/lifecycle/workspace.ts +46 -0
  68. package/src/observation/composite-subagent-observer.ts +74 -0
  69. package/src/observation/notification.ts +430 -0
  70. package/src/observation/outcome-delivery.ts +239 -0
  71. package/src/observation/record-observer.ts +78 -0
  72. package/src/observation/renderer.ts +161 -0
  73. package/src/observation/subagent-events-observer.ts +148 -0
  74. package/src/runtime.ts +137 -0
  75. package/src/service/service-adapter.ts +201 -0
  76. package/src/service/service.ts +246 -0
  77. package/src/session/ask-parent-tool.ts +69 -0
  78. package/src/session/content-items.ts +53 -0
  79. package/src/session/context.ts +80 -0
  80. package/src/session/conversation.ts +49 -0
  81. package/src/session/env.ts +40 -0
  82. package/src/session/model-resolver.ts +126 -0
  83. package/src/session/notify-parent-tool.ts +83 -0
  84. package/src/session/package-exclusions.ts +75 -0
  85. package/src/session/prompts.ts +231 -0
  86. package/src/session/provider-inheritance.ts +56 -0
  87. package/src/session/selection-catalogue.ts +143 -0
  88. package/src/session/session-config.ts +202 -0
  89. package/src/session/session-dir.ts +38 -0
  90. package/src/settings.ts +447 -0
  91. package/src/tools/agent-tool.ts +305 -0
  92. package/src/tools/background-spawner.ts +83 -0
  93. package/src/tools/foreground-runner.ts +159 -0
  94. package/src/tools/get-result-renderer.ts +119 -0
  95. package/src/tools/get-result-report.ts +84 -0
  96. package/src/tools/get-result-tool.ts +192 -0
  97. package/src/tools/helpers.ts +118 -0
  98. package/src/tools/result-renderer.ts +153 -0
  99. package/src/tools/spawn-config.ts +192 -0
  100. package/src/tools/steer-tool.ts +109 -0
  101. package/src/types.ts +143 -0
  102. package/src/ui/agent-widget.ts +333 -0
  103. package/src/ui/bounded-lines.ts +45 -0
  104. package/src/ui/display.ts +180 -0
  105. package/src/ui/glyphs.ts +62 -0
  106. package/src/ui/session-navigation.ts +150 -0
  107. package/src/ui/session-navigator.ts +255 -0
  108. package/src/ui/subagents-settings.ts +179 -0
  109. package/src/ui/transcript-content.ts +374 -0
  110. package/src/ui/widget-renderer.ts +301 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,2705 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.0] (2026-09-12)
9
+
10
+ First `@jopqior/pi-subagents` release.
11
+ Independent version line; upstream baseline `@gotgenes/pi-subagents` 21.7.0.
12
+
13
+ ### Features
14
+
15
+ * **pi-subagents:** publish this fork as `@jopqior/pi-subagents`, with spawn-selection from the fork's issue 1.
16
+ Runtime `Symbol.for` keys remain `@gotgenes/pi-subagents:*`.
17
+
18
+ ## [21.7.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.6.0...pi-subagents-v21.7.0) (2026-09-11)
19
+
20
+
21
+ ### Features
22
+
23
+ * **pi-subagents:** show subagent results compactly, expandable with Ctrl+O ([46dc3f0](https://github.com/gotgenes/pi-packages/commit/46dc3f0e98fa19821be68c52aaba9b326ba0fba4)), closes [#636](https://github.com/gotgenes/pi-packages/issues/636)
24
+
25
+ ### Documentation
26
+
27
+ * **pi-subagents:** document the compact result presentation ([b5a4a86](https://github.com/gotgenes/pi-packages/commit/b5a4a86a4df6d3bae7e346f5bf8caecb759dd945))
28
+
29
+ ## [21.6.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.5.1...pi-subagents-v21.6.0) (2026-09-11)
30
+
31
+
32
+ ### Features
33
+
34
+ * **pi-subagents:** let an extension resume a subagent through the service ([0e15734](https://github.com/gotgenes/pi-packages/commit/0e157344ac5a6b00ded9db6228a8437d185ba8ba)), closes [#885](https://github.com/gotgenes/pi-packages/issues/885)
35
+ * **pi-subagents:** emit an event when a subagent resume starts ([315640c](https://github.com/gotgenes/pi-packages/commit/315640c2d7c783a97543d47a568d6d44d76d6499)), closes [#832](https://github.com/gotgenes/pi-packages/issues/832)
36
+
37
+ ### Bug Fixes
38
+
39
+ * **pi-subagents:** refuse to resume an agent that is still running ([5853ec0](https://github.com/gotgenes/pi-packages/commit/5853ec07430234cc4ff3bb3b994fe951bc6432c5)), closes [#896](https://github.com/gotgenes/pi-packages/issues/896)
40
+
41
+ ### Documentation
42
+
43
+ * **pi-subagents:** document the service resume door and the resuming event ([1ac3bd0](https://github.com/gotgenes/pi-packages/commit/1ac3bd0ae8fa9e991505a90071d0889279c1dfe9))
44
+
45
+ ## [21.5.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.5.0...pi-subagents-v21.5.1) (2026-09-10)
46
+
47
+
48
+ ### Bug Fixes
49
+
50
+ * **pi-subagents:** deliver each mid-run update once, on the channel that can reach the parent ([673c265](https://github.com/gotgenes/pi-packages/commit/673c2651b798d64217b201cddf0ee2e33d6e3976)), closes [#903](https://github.com/gotgenes/pi-packages/issues/903)
51
+
52
+ ### Documentation
53
+
54
+ * **pi-subagents:** state where a mid-run update lands ([e00026a](https://github.com/gotgenes/pi-packages/commit/e00026a3a63e810ddf7a3e5d8329ae9917211f9b)), closes [#903](https://github.com/gotgenes/pi-packages/issues/903)
55
+
56
+ ## [21.5.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.4.7...pi-subagents-v21.5.0) (2026-09-08)
57
+
58
+
59
+ ### Features
60
+
61
+ * **pi-subagents:** inherit only portable prompt parts on a re-homing provider ([dba4899](https://github.com/gotgenes/pi-packages/commit/dba48999a8f6eaf7b76a3d471e9b7ddebe1eb35a)), closes [#883](https://github.com/gotgenes/pi-packages/issues/883), closes [#884](https://github.com/gotgenes/pi-packages/issues/884)
62
+
63
+ ### Documentation
64
+
65
+ * **pi-subagents:** document provider-scoped portable prompt inheritance ([8f98318](https://github.com/gotgenes/pi-packages/commit/8f983184d94cd08406954c296a67fd3cbbd58701)), closes [#883](https://github.com/gotgenes/pi-packages/issues/883), closes [#884](https://github.com/gotgenes/pi-packages/issues/884)
66
+
67
+ ## [21.4.7](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.4.6...pi-subagents-v21.4.7) (2026-09-08)
68
+
69
+
70
+ ### Bug Fixes
71
+
72
+ * **pi-subagents:** stop telling a child to use tools it does not have ([e3f31b3](https://github.com/gotgenes/pi-packages/commit/e3f31b3e3cf75714d7d5b5fa520301ff34734637)), closes [#890](https://github.com/gotgenes/pi-packages/issues/890)
73
+
74
+ ### Documentation
75
+
76
+ * record that the inherited region is shared parts, not shared bytes ([#890](https://github.com/gotgenes/pi-packages/issues/890)) ([5755a9a](https://github.com/gotgenes/pi-packages/commit/5755a9a8ea34bf5c7e08a4cb8abc988c12eb3a59))
77
+ * correct the sub-agent bridge description and the header-match residual ([#890](https://github.com/gotgenes/pi-packages/issues/890)) ([b0db764](https://github.com/gotgenes/pi-packages/commit/b0db764e0ffa484eb18bad2883710e77d93ec99b)), closes [#890](https://github.com/gotgenes/pi-packages/issues/890)
78
+
79
+ ## [21.4.6](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.4.5...pi-subagents-v21.4.6) (2026-09-08)
80
+
81
+
82
+ ### Bug Fixes
83
+
84
+ * **pi-subagents:** report a child run whose failed compaction erased the turn error ([8333fc6](https://github.com/gotgenes/pi-packages/commit/8333fc6468958e4d90ff71651cddb1acc2929186)), closes [#898](https://github.com/gotgenes/pi-packages/issues/898)
85
+ * **pi-subagents:** keep reporting a failed turn when a later call runs no turn ([c3a5348](https://github.com/gotgenes/pi-packages/commit/c3a5348553acc3608224f3760566ea72b907c076)), closes [#898](https://github.com/gotgenes/pi-packages/issues/898)
86
+
87
+ ## [21.4.5](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.4.4...pi-subagents-v21.4.5) (2026-09-07)
88
+
89
+
90
+ ### Bug Fixes
91
+
92
+ * **pi-subagents:** stop rendering an empty subagent result as nothing ([e6f4a8d](https://github.com/gotgenes/pi-packages/commit/e6f4a8d1443d8840c44fb88c7af23d9c8e38ad5b)), closes [#889](https://github.com/gotgenes/pi-packages/issues/889)
93
+ * **pi-subagents:** fail a child run whose provider errored ([3d29780](https://github.com/gotgenes/pi-packages/commit/3d29780b9485d88c183e7b5a0e6cfe9891c901c0)), closes [#889](https://github.com/gotgenes/pi-packages/issues/889)
94
+ * **pi-subagents:** fail a resumed child run whose provider errored ([7851905](https://github.com/gotgenes/pi-packages/commit/7851905d8b2a5f76d5ce20f36abd58c9c7a27fa8)), closes [#889](https://github.com/gotgenes/pi-packages/issues/889)
95
+ * **pi-subagents:** name the transcript when a foreground agent fails ([75712e0](https://github.com/gotgenes/pi-packages/commit/75712e0d2867ec9d8e95d7f050a4c7ae9dc19ecd)), closes [#889](https://github.com/gotgenes/pi-packages/issues/889)
96
+
97
+ ## [21.4.4](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.4.3...pi-subagents-v21.4.4) (2026-09-07)
98
+
99
+
100
+ ### Bug Fixes
101
+
102
+ * **pi-subagents:** report an unanswerable question without naming a resume ([fba1f81](https://github.com/gotgenes/pi-packages/commit/fba1f8150e1c253d7a73ea92c61aed92390af599)), closes [#878](https://github.com/gotgenes/pi-packages/issues/878)
103
+
104
+ ### Documentation
105
+
106
+ * **pi-subagents:** record what a result promises about resuming ([48cb44a](https://github.com/gotgenes/pi-packages/commit/48cb44a2390de9aec0118d148971d92fc1bf4c8c)), closes [#878](https://github.com/gotgenes/pi-packages/issues/878)
107
+ * **pi-subagents:** qualify the ask-back module's resume promise ([b9a39b7](https://github.com/gotgenes/pi-packages/commit/b9a39b75a4ae8d288ea8534bcdabb56fe7d069a7)), closes [#878](https://github.com/gotgenes/pi-packages/issues/878)
108
+
109
+ ## [21.4.3](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.4.2...pi-subagents-v21.4.3) (2026-09-06)
110
+
111
+
112
+ ### Bug Fixes
113
+
114
+ * **pi-subagents:** deliver a child's update with the result when its parent is blocked ([d36bfcf](https://github.com/gotgenes/pi-packages/commit/d36bfcf1d9f13e5dbf2dd82ffa01d370f49c2f48)), closes [#872](https://github.com/gotgenes/pi-packages/issues/872)
115
+
116
+ ### Documentation
117
+
118
+ * **pi-subagents:** state the update channel's rationale as claim-based ([450470d](https://github.com/gotgenes/pi-packages/commit/450470d598cd944f87b72b04ae6bf0f7d5a8b968)), closes [#872](https://github.com/gotgenes/pi-packages/issues/872)
119
+
120
+ ## [21.4.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.4.1...pi-subagents-v21.4.2) (2026-09-05)
121
+
122
+
123
+ ### Bug Fixes
124
+
125
+ * **pi-subagents:** resolve tools: none to no tools ([a4a2eae](https://github.com/gotgenes/pi-packages/commit/a4a2eae9e8ec7e5725b765083b4ceadde84975cd)), closes [#871](https://github.com/gotgenes/pi-packages/issues/871)
126
+
127
+ ## [21.4.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.4.0...pi-subagents-v21.4.1) (2026-09-05)
128
+
129
+
130
+ ### Bug Fixes
131
+
132
+ * **pi-subagents:** tell the parent where a failed child's work was saved ([cf71b16](https://github.com/gotgenes/pi-packages/commit/cf71b161e8d83b2ddf9255ab57e4fdc3f8a3fd7e)), closes [#870](https://github.com/gotgenes/pi-packages/issues/870)
133
+ * **pi-subagents:** announce where a late-disposed child's work was saved ([3747d66](https://github.com/gotgenes/pi-packages/commit/3747d667a98efe175e471eb1afe8a9ec3cc1b388)), closes [#870](https://github.com/gotgenes/pi-packages/issues/870)
134
+
135
+ ## [21.4.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.3.0...pi-subagents-v21.4.0) (2026-09-03)
136
+
137
+
138
+ ### Features
139
+
140
+ * **pi-subagents:** give the session transcript four more rows of its own ([243bdb2](https://github.com/gotgenes/pi-packages/commit/243bdb21b680b80e1763417cfd78885b0f4c6c39)), closes [#733](https://github.com/gotgenes/pi-packages/issues/733)
141
+ * **pi-subagents:** size the session transcript pane to its content ([d0dfe78](https://github.com/gotgenes/pi-packages/commit/d0dfe7860644ed3c032aa2b6efafe122026bf778)), closes [#733](https://github.com/gotgenes/pi-packages/issues/733)
142
+
143
+ ### Bug Fixes
144
+
145
+ * **pi-subagents:** stop the session transcript viewer painting into scrollback ([fdb8eb2](https://github.com/gotgenes/pi-packages/commit/fdb8eb2baeee06b35d0451603407f15f68641306)), closes [#733](https://github.com/gotgenes/pi-packages/issues/733)
146
+
147
+ ## [21.3.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.2.2...pi-subagents-v21.3.0) (2026-09-03)
148
+
149
+
150
+ ### Features
151
+
152
+ * **pi-subagents:** let a child ask its parent a question with a tool ([fc0200c](https://github.com/gotgenes/pi-packages/commit/fc0200c1464a6e124a9a3eebb48dde15032c79f9)), closes [#858](https://github.com/gotgenes/pi-packages/issues/858)
153
+ * **pi-subagents:** let a running background child send its parent an update ([805d73d](https://github.com/gotgenes/pi-packages/commit/805d73deb33510a9e976fa4c8608e3d8582afac9)), closes [#858](https://github.com/gotgenes/pi-packages/issues/858)
154
+
155
+ ### Bug Fixes
156
+
157
+ * **pi-subagents:** keep a child's session alive while its question is unanswered ([21a66b9](https://github.com/gotgenes/pi-packages/commit/21a66b9ab7cfe0389c8af853b469cafd02d0dca3)), closes [#858](https://github.com/gotgenes/pi-packages/issues/858)
158
+
159
+ ### Documentation
160
+
161
+ * **pi-subagents:** document the child-to-parent tools and narrow the tool-widening boundary ([617f30d](https://github.com/gotgenes/pi-packages/commit/617f30dd39bc11534c27c20ccaea775dd6493bde)), closes [#858](https://github.com/gotgenes/pi-packages/issues/858)
162
+
163
+ ## [21.2.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.2.1...pi-subagents-v21.2.2) (2026-09-02)
164
+
165
+
166
+ ### Bug Fixes
167
+
168
+ * **pi-subagents:** keep a question-ending child's workspace alive for its resume ([88572ef](https://github.com/gotgenes/pi-packages/commit/88572eff8ad195a685c14b5af49c9e5dd72a5ad5)), closes [#857](https://github.com/gotgenes/pi-packages/issues/857)
169
+ * **pi-subagents:** refuse a resume into a workspace that no longer exists ([369e397](https://github.com/gotgenes/pi-packages/commit/369e3970c9acacd6674313fc6907256060553453)), closes [#857](https://github.com/gotgenes/pi-packages/issues/857)
170
+
171
+ ## [21.2.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.2.0...pi-subagents-v21.2.1) (2026-09-02)
172
+
173
+
174
+ ### Bug Fixes
175
+
176
+ * **pi-subagents:** tear the agent widget down on session shutdown ([a9a7a63](https://github.com/gotgenes/pi-packages/commit/a9a7a6302880aa3b405585ca3784ff56eecc0477)), closes [#849](https://github.com/gotgenes/pi-packages/issues/849)
177
+
178
+ ### Documentation
179
+
180
+ * **pi-permission-system:** record the fact-shaping inheritance rule (ADR 0012) ([dbdd9f1](https://github.com/gotgenes/pi-packages/commit/dbdd9f19f29a1a67d282fdc050a71b462021eb56))
181
+
182
+ ### Miscellaneous Chores
183
+
184
+ * upgrade lint tooling and pin rumdl below the MD013 reflow regression ([0ee1ad8](https://github.com/gotgenes/pi-packages/commit/0ee1ad886815e6e50d99f66050fbbcf5a9f0319a)), closes [#866](https://github.com/gotgenes/pi-packages/issues/866)
185
+ * upgrade fallow to 3.22.0 ([1b2a562](https://github.com/gotgenes/pi-packages/commit/1b2a5620bf5d7f1014676b47e58df8b43ff00496)), closes [#866](https://github.com/gotgenes/pi-packages/issues/866)
186
+
187
+ <!-- Entries below this point were generated by release-please, which this
188
+ repository used until 2026-09. Some record releases made in the
189
+ packages' predecessor repositories, before the monorepo existed. See
190
+ docs/decisions/0002-git-cliff-release-automation.md. -->
191
+
192
+ ## [21.2.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.1.0...pi-subagents-v21.2.0) (2026-09-01)
193
+
194
+
195
+ ### Features
196
+
197
+ * **pi-subagents:** let a subagent ask its parent a question it can answer ([81863e4](https://github.com/gotgenes/pi-packages/commit/81863e414e2cc1f3f6cea1f15083e5dc4c33da53)), closes [#465](https://github.com/gotgenes/pi-packages/issues/465)
198
+
199
+
200
+ ### Bug Fixes
201
+
202
+ * **pi-subagents:** ignore a marker a subagent quotes inline when asking nothing ([2888c0f](https://github.com/gotgenes/pi-packages/commit/2888c0fda6db3054df7802290de25ab55372a9b2)), closes [#465](https://github.com/gotgenes/pi-packages/issues/465)
203
+ * **pi-subagents:** keep question parsing linear on heavily quoted results ([c902c9a](https://github.com/gotgenes/pi-packages/commit/c902c9aaa419ac565e6abfc1e30e2ff22c591a42)), closes [#465](https://github.com/gotgenes/pi-packages/issues/465)
204
+ * **pi-subagents:** report foreground subagent completions to lifecycle observers ([b85253c](https://github.com/gotgenes/pi-packages/commit/b85253c0e5dfe6483ae4dfb0f1e075557a35f39e)), closes [#465](https://github.com/gotgenes/pi-packages/issues/465)
205
+ * **pi-subagents:** report terminal status consistently across every result carrier ([27cf361](https://github.com/gotgenes/pi-packages/commit/27cf361b26483ec389c8a73cc0666c148ff500db)), closes [#465](https://github.com/gotgenes/pi-packages/issues/465)
206
+
207
+ ## [21.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.0.3...pi-subagents-v21.1.0) (2026-08-31)
208
+
209
+
210
+ ### Features
211
+
212
+ * **pi-subagents:** emit the bound announcement once a child binds its extensions ([6beb934](https://github.com/gotgenes/pi-packages/commit/6beb9345ee411eebdaed38a55f368bdcc6779034)), closes [#792](https://github.com/gotgenes/pi-packages/issues/792)
213
+
214
+
215
+ ### Documentation
216
+
217
+ * **pi-subagents:** note the unguarded-child warning under excludedExtensionPackages ([013a306](https://github.com/gotgenes/pi-packages/commit/013a30629c0d69be3cd78d1db5d2f5510b221c27)), closes [#792](https://github.com/gotgenes/pi-packages/issues/792)
218
+
219
+ ## [21.0.3](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.0.2...pi-subagents-v21.0.3) (2026-08-31)
220
+
221
+
222
+ ### Bug Fixes
223
+
224
+ * **pi-subagents:** include the agent ID in foreground and resumed subagent results ([1794aa6](https://github.com/gotgenes/pi-packages/commit/1794aa6cb6352d5d1789546706297ec5d89d7b2d)), closes [#798](https://github.com/gotgenes/pi-packages/issues/798)
225
+
226
+ ## [21.0.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.0.1...pi-subagents-v21.0.2) (2026-08-31)
227
+
228
+
229
+ ### Bug Fixes
230
+
231
+ * **pi-subagents:** render the agent widget in sessions with no model tool call ([82bd707](https://github.com/gotgenes/pi-packages/commit/82bd707cbe93d59f1207968349058711dc368e7f)), closes [#827](https://github.com/gotgenes/pi-packages/issues/827)
232
+
233
+ ## [21.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v21.0.0...pi-subagents-v21.0.1) (2026-08-30)
234
+
235
+
236
+ ### Bug Fixes
237
+
238
+ * **pi-subagents:** give a subagent one skills catalogue and one working-directory claim ([610a4e9](https://github.com/gotgenes/pi-packages/commit/610a4e9ace48cc0bb9a91367e468867172403ea0))
239
+ * **pi-subagents:** keep a quoted skills catalogue from misplacing the inherited cut ([49f3e46](https://github.com/gotgenes/pi-packages/commit/49f3e46b3b673f60105679ab5e4a30c65c75ef78)), closes [#801](https://github.com/gotgenes/pi-packages/issues/801)
240
+
241
+
242
+ ### Documentation
243
+
244
+ * **pi-subagents:** document how a child's system prompt is assembled ([b3b96bf](https://github.com/gotgenes/pi-packages/commit/b3b96bfc8c22a501ba14f7a8672ccb59ee951c9e))
245
+
246
+ ## [21.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v20.1.0...pi-subagents-v21.0.0) (2026-08-30)
247
+
248
+
249
+ ### ⚠ BREAKING CHANGES
250
+
251
+ * **pi-subagents:** `WorkspacePrepareContext` no longer carries `invocation`. A `WorkspaceProvider` that read `ctx.invocation` must drop the read; there is no replacement field. The value was a UI display snapshot - `modelName` was a lowercased display string, and `undefined` whenever 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.
252
+ * **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: true` to the agent's frontmatter to restore the previous behavior for every field the file sets, or `locked: [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.
253
+
254
+ ### Bug Fixes
255
+
256
+ * **pi-subagents:** honor subagent tool parameters over agent frontmatter unless the agent locks the field ([832d261](https://github.com/gotgenes/pi-packages/commit/832d261501000b847f193a91c359ddc7c1437ccf)), closes [#829](https://github.com/gotgenes/pi-packages/issues/829)
257
+ * **pi-subagents:** reject an unrecognized thinking level instead of silently disabling thinking ([d1bc031](https://github.com/gotgenes/pi-packages/commit/d1bc03162050d1bc7ca8b9eebe9ab54dca768cfa))
258
+ * **pi-subagents:** report a locked field that discarded a subagent parameter ([c0f9ccf](https://github.com/gotgenes/pi-packages/commit/c0f9ccfddbe63aa9bb543cb226e44769a37732fd)), closes [#829](https://github.com/gotgenes/pi-packages/issues/829)
259
+ * **pi-subagents:** report an unknown agent type on background spawns ([7c2a518](https://github.com/gotgenes/pi-packages/commit/7c2a518afde41e803f03a3406ecf43531acec74e)), closes [#829](https://github.com/gotgenes/pi-packages/issues/829)
260
+
261
+
262
+ ### Documentation
263
+
264
+ * **pi-subagents:** clarify what modelFromParams reports under locked fields ([45da58b](https://github.com/gotgenes/pi-packages/commit/45da58b755948ee06255be90ab4d0eaffb4fb3d8)), closes [#829](https://github.com/gotgenes/pi-packages/issues/829)
265
+ * **pi-subagents:** correct which spawn options agent frontmatter fills ([f25d283](https://github.com/gotgenes/pi-packages/commit/f25d28392d3a98b684753b3cd005f10f062b6cc6)), closes [#829](https://github.com/gotgenes/pi-packages/issues/829)
266
+ * **pi-subagents:** document locked-field precedence and the corrected thinking levels ([86e59a6](https://github.com/gotgenes/pi-packages/commit/86e59a6f2b0c358e8f48697efd6aece757367e17))
267
+
268
+
269
+ ### Code Refactoring
270
+
271
+ * **pi-subagents:** drop the unread invocation field from the workspace seam ([4942e09](https://github.com/gotgenes/pi-packages/commit/4942e094adfba104e711b8f4bada2d27ffa8e3e3))
272
+
273
+ ## [20.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v20.0.1...pi-subagents-v20.1.0) (2026-08-29)
274
+
275
+
276
+ ### Features
277
+
278
+ * **pi-subagents:** report turn count, background mode, turn limit, and transcript path in agent snapshots ([ad59849](https://github.com/gotgenes/pi-packages/commit/ad598497949682b36188eec23a9b44010cec8e20)), closes [#830](https://github.com/gotgenes/pi-packages/issues/830)
279
+
280
+
281
+ ### Bug Fixes
282
+
283
+ * **pi-subagents:** stop agent snapshots from aliasing live token totals ([d7278f8](https://github.com/gotgenes/pi-packages/commit/d7278f89b8294f7cf6b95ba77d724fde0fa45914)), closes [#830](https://github.com/gotgenes/pi-packages/issues/830)
284
+
285
+
286
+ ### Documentation
287
+
288
+ * **pi-subagents:** document the public agent-snapshot contract ([df6132c](https://github.com/gotgenes/pi-packages/commit/df6132c1f9d3166a79472b5228db914bee3ad3b2)), closes [#830](https://github.com/gotgenes/pi-packages/issues/830)
289
+
290
+ ## [20.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v20.0.0...pi-subagents-v20.0.1) (2026-08-29)
291
+
292
+
293
+ ### Bug Fixes
294
+
295
+ * **pi-subagents:** enforce disabled-agent rejection for SDK-spawned agents ([7b202e9](https://github.com/gotgenes/pi-packages/commit/7b202e9bc13dd930db3fa268cb37050364b517e0)), closes [#724](https://github.com/gotgenes/pi-packages/issues/724)
296
+ * **pi-subagents:** scope SDK-spawned child sessions to their parent ([0731bad](https://github.com/gotgenes/pi-packages/commit/0731badaf894ce79aecd8a954a9eadfc741ff2ea)), closes [#724](https://github.com/gotgenes/pi-packages/issues/724)
297
+ * **pi-subagents:** show SDK-spawned background agents in the widget ([8e19739](https://github.com/gotgenes/pi-packages/commit/8e197396399c15ad44c75a700a88f8676717613e)), closes [#724](https://github.com/gotgenes/pi-packages/issues/724)
298
+
299
+
300
+ ### Documentation
301
+
302
+ * **pi-subagents:** document the SDK spawn contract and the manager's registry edge ([4bbd4b5](https://github.com/gotgenes/pi-packages/commit/4bbd4b583d15c788321198cd31e780ecf7d8dd19)), closes [#724](https://github.com/gotgenes/pi-packages/issues/724)
303
+
304
+ ## [20.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.3.5...pi-subagents-v20.0.0) (2026-08-29)
305
+
306
+
307
+ ### ⚠ BREAKING CHANGES
308
+
309
+ * **pi-subagents:** @earendil-works/pi-coding-agent must now be >=0.81.0, narrowed from >=0.80.5. Replaying a native provider registration needs ModelRegistry.getRegisteredNativeProvider() and the registerProvider(provider) overload, and 0.81.0 is the first release carrying both; 0.80.8 through 0.80.10 expose neither, and 0.80.5 through 0.80.7 lack the modelRuntime session option and the public ModelRegistry constructor as well. Run `pi update --self` to upgrade, or stay on @gotgenes/pi-subagents 19.3.5.
310
+
311
+ ### Bug Fixes
312
+
313
+ * **pi-subagents:** inherit runtime-registered providers in child sessions ([f805ffc](https://github.com/gotgenes/pi-packages/commit/f805ffc4a6ae1849c4d396cd7697f09ea38b6ec6))
314
+
315
+
316
+ ### Documentation
317
+
318
+ * **pi-subagents:** document provider inheritance in child sessions ([f3afdf4](https://github.com/gotgenes/pi-packages/commit/f3afdf46e1897731aaf7e6e1b2c1dba66031ac13)), closes [#812](https://github.com/gotgenes/pi-packages/issues/812)
319
+
320
+ ## [19.3.5](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.3.4...pi-subagents-v19.3.5) (2026-08-21)
321
+
322
+
323
+ ### Documentation
324
+
325
+ * **pi-subagents:** record the loading-asymmetry condition and cite the adapter convention ([d12ee41](https://github.com/gotgenes/pi-packages/commit/d12ee41b5aca6dbe29bc325ba34b2c1a2c669f93)), closes [#789](https://github.com/gotgenes/pi-packages/issues/789)
326
+
327
+ ## [19.3.4](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.3.3...pi-subagents-v19.3.4) (2026-08-19)
328
+
329
+
330
+ ### Bug Fixes
331
+
332
+ * **pi-subagents:** drop the redundant tool-name prefix from promptSnippet ([#778](https://github.com/gotgenes/pi-packages/issues/778)) ([403d5e9](https://github.com/gotgenes/pi-packages/commit/403d5e9ab8423825ba3742aa4897a3c4e586eec6))
333
+
334
+ ## [19.3.3](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.3.2...pi-subagents-v19.3.3) (2026-08-19)
335
+
336
+
337
+ ### Documentation
338
+
339
+ * condense scope sections and move them below the usage material ([#775](https://github.com/gotgenes/pi-packages/issues/775)) ([99f5829](https://github.com/gotgenes/pi-packages/commit/99f58298962baac5bdfe5d3cc02dca0ca9b32395))
340
+ * **pi-subagents:** document scope and non-goals ([#775](https://github.com/gotgenes/pi-packages/issues/775)) ([24ecb31](https://github.com/gotgenes/pi-packages/commit/24ecb311d5a0760e70857a99e966b0bdf88ded02))
341
+
342
+ ## [19.3.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.3.1...pi-subagents-v19.3.2) (2026-08-13)
343
+
344
+
345
+ ### Bug Fixes
346
+
347
+ * **pi-subagents:** make the child recursion guard durable across tool refreshes ([ba16f63](https://github.com/gotgenes/pi-packages/commit/ba16f6347ee51fc8ffdc0626e858bdef093495ef)), closes [#725](https://github.com/gotgenes/pi-packages/issues/725)
348
+ * **pi-subagents:** parse a YAML sequence tools field without re-splitting entries ([8ddeef3](https://github.com/gotgenes/pi-packages/commit/8ddeef38f230dd8b1fe67faae3930c448bffc32f)), closes [#725](https://github.com/gotgenes/pi-packages/issues/725)
349
+
350
+
351
+ ### Documentation
352
+
353
+ * **pi-subagents:** document the child tool allowlist contract ([aa12605](https://github.com/gotgenes/pi-packages/commit/aa126058217e897ab29a12f420a2ce76150a91b8)), closes [#725](https://github.com/gotgenes/pi-packages/issues/725)
354
+ * **pi-subagents:** extract the configuration reference into docs/configuration.md ([1c49ab9](https://github.com/gotgenes/pi-packages/commit/1c49ab977bdfe14ce39140d6a0b293e2085930f0)), closes [#725](https://github.com/gotgenes/pi-packages/issues/725)
355
+
356
+ ## [19.3.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.3.0...pi-subagents-v19.3.1) (2026-08-13)
357
+
358
+
359
+ ### Bug Fixes
360
+
361
+ * **pi-subagents:** add bounded child session_shutdown emitter ([e7ffc31](https://github.com/gotgenes/pi-packages/commit/e7ffc31c7afaa068d7e8343dc21b6a5d7fc623f4)), closes [#709](https://github.com/gotgenes/pi-packages/issues/709)
362
+ * **pi-subagents:** await child session teardown in Subagent ([c398853](https://github.com/gotgenes/pi-packages/commit/c398853536f8fedae55ac043174410f455c18c99)), closes [#709](https://github.com/gotgenes/pi-packages/issues/709)
363
+ * **pi-subagents:** await child teardown across the manager ([6266416](https://github.com/gotgenes/pi-packages/commit/6266416a495b152605ba228885d22c31c2e36885)), closes [#709](https://github.com/gotgenes/pi-packages/issues/709)
364
+ * **pi-subagents:** await manager teardown on session lifecycle events ([53cb0f1](https://github.com/gotgenes/pi-packages/commit/53cb0f128015ff0d4d9f12869c752e7e32cf8f08)), closes [#709](https://github.com/gotgenes/pi-packages/issues/709)
365
+ * **pi-subagents:** emit session_shutdown before disposing a child session ([886caa4](https://github.com/gotgenes/pi-packages/commit/886caa4f40c727d61a2f552118452f527436e7d3)), closes [#709](https://github.com/gotgenes/pi-packages/issues/709)
366
+
367
+
368
+ ### Documentation
369
+
370
+ * **pi-subagents:** document the child session shutdown contract ([bfe8162](https://github.com/gotgenes/pi-packages/commit/bfe816219e73b353776965c538172f691f857385)), closes [#709](https://github.com/gotgenes/pi-packages/issues/709)
371
+
372
+ ## [19.3.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.2.2...pi-subagents-v19.3.0) (2026-08-13)
373
+
374
+
375
+ ### Features
376
+
377
+ * **pi-subagents:** add package-extension exclusion transform ([4b167d6](https://github.com/gotgenes/pi-packages/commit/4b167d680c79973ab61c690c6c784c30241cd8e8))
378
+ * **pi-subagents:** exclude configured package extensions from children ([f847ebf](https://github.com/gotgenes/pi-packages/commit/f847ebfebe8942ca64146fc50530d3e682819edb))
379
+ * **pi-subagents:** read excludedExtensionPackages from layered settings ([f83e706](https://github.com/gotgenes/pi-packages/commit/f83e7066306ba3beaaf85f0822b0213246c8c31e))
380
+
381
+
382
+ ### Bug Fixes
383
+
384
+ * **pi-subagents:** preserve excludedExtensionPackages across settings writes ([ad07c0f](https://github.com/gotgenes/pi-packages/commit/ad07c0f8c70fadc81f73847e14326ef1825d5954))
385
+
386
+
387
+ ### Documentation
388
+
389
+ * **pi-subagents:** document excludedExtensionPackages ([36fb61c](https://github.com/gotgenes/pi-packages/commit/36fb61ce128ff4e1b0bf60c264963fc0bb9f6eac))
390
+
391
+ ## [19.2.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.2.1...pi-subagents-v19.2.2) (2026-08-10)
392
+
393
+
394
+ ### Bug Fixes
395
+
396
+ * **pi-subagents:** scroll the session preview at the width it renders at ([9bdee3c](https://github.com/gotgenes/pi-packages/commit/9bdee3c5f542679363e86b389af179aa82fb4580)), closes [#670](https://github.com/gotgenes/pi-packages/issues/670) [#689](https://github.com/gotgenes/pi-packages/issues/689)
397
+
398
+
399
+ ### Performance Improvements
400
+
401
+ * **pi-subagents:** make session-preview paint and scroll viewport-bound ([f5f1fcc](https://github.com/gotgenes/pi-packages/commit/f5f1fcc41bfd6def44aa26d388aa70b06b3c1b53)), closes [#689](https://github.com/gotgenes/pi-packages/issues/689)
402
+ * **pi-subagents:** settle session-preview messages incrementally ([316ddb1](https://github.com/gotgenes/pi-packages/commit/316ddb16143914bf160c438b1d8b2cabda4d9805)), closes [#689](https://github.com/gotgenes/pi-packages/issues/689)
403
+ * **pi-subagents:** update only the live message on session-preview deltas ([14d3022](https://github.com/gotgenes/pi-packages/commit/14d3022ee3b34372daabe16de3c5b54dafc2049a)), closes [#689](https://github.com/gotgenes/pi-packages/issues/689)
404
+
405
+ ## [19.2.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.2.0...pi-subagents-v19.2.1) (2026-07-28)
406
+
407
+
408
+ ### Bug Fixes
409
+
410
+ * **pi-subagents:** make escapeXml attribute-safe by escaping quotes ([b6ab6bb](https://github.com/gotgenes/pi-packages/commit/b6ab6bbe43c79d55b86c5c2a6d58adc7ad24d94d))
411
+ * **pi-subagents:** replace turn glyph that overflows its monospace cell ([8a54b9c](https://github.com/gotgenes/pi-packages/commit/8a54b9cabac1d2535e865a9a46ddb8f6845e21aa)), closes [#669](https://github.com/gotgenes/pi-packages/issues/669) [#681](https://github.com/gotgenes/pi-packages/issues/681)
412
+
413
+ ## [19.2.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.1.0...pi-subagents-v19.2.0) (2026-07-28)
414
+
415
+
416
+ ### Features
417
+
418
+ * **pi-subagents:** add the ESC abort-all toggle to /subagents:settings ([#664](https://github.com/gotgenes/pi-packages/issues/664)) ([3e85ae9](https://github.com/gotgenes/pi-packages/commit/3e85ae92d8383c9c26f5d78153f2ba21a521c104))
419
+ * **pi-subagents:** gate ESC abort-all on the interrupt policy ([#664](https://github.com/gotgenes/pi-packages/issues/664)) ([64ec124](https://github.com/gotgenes/pi-packages/commit/64ec124fd9b9b61b71f893e7b5d76ac557287123))
420
+ * **pi-subagents:** persist the abortAllOnInterrupt setting ([#664](https://github.com/gotgenes/pi-packages/issues/664)) ([c371881](https://github.com/gotgenes/pi-packages/commit/c3718814a0398b9f9bd56dbd9bbe0d4c223bf5f8))
421
+
422
+
423
+ ### Documentation
424
+
425
+ * **pi-subagents:** document the abortAllOnInterrupt setting ([#664](https://github.com/gotgenes/pi-packages/issues/664)) ([68e47c4](https://github.com/gotgenes/pi-packages/commit/68e47c4447c04474b369f146f12b7521c37a6066))
426
+
427
+ ## [19.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.0.1...pi-subagents-v19.1.0) (2026-07-28)
428
+
429
+
430
+ ### Features
431
+
432
+ * **pi-subagents:** add a stopQueued transition to SubagentState ([f7d48a9](https://github.com/gotgenes/pi-packages/commit/f7d48a9a9485f7a3db730485af81fcff50734d1a)), closes [#665](https://github.com/gotgenes/pi-packages/issues/665)
433
+ * **pi-subagents:** fire the terminal observer from Subagent.stopQueued ([0100cb6](https://github.com/gotgenes/pi-packages/commit/0100cb61d1fe2543358bb5bdbd51643381037f84)), closes [#665](https://github.com/gotgenes/pi-packages/issues/665)
434
+
435
+
436
+ ### Bug Fixes
437
+
438
+ * **pi-subagents:** emit terminal lifecycle when a queued agent is stopped ([a4fda3d](https://github.com/gotgenes/pi-packages/commit/a4fda3db09dfd37979bcbaa2328c1ac44027d391)), closes [#665](https://github.com/gotgenes/pi-packages/issues/665)
439
+ * **pi-subagents:** report a never-started agent honestly in get_subagent_result ([210d521](https://github.com/gotgenes/pi-packages/commit/210d5212d73b12c86f2f7c148e7e27629e4c1482))
440
+ * **pi-subagents:** stop nudging a session that is shutting down ([d69419b](https://github.com/gotgenes/pi-packages/commit/d69419b116cd3cc431f09df08147094c09241ccf))
441
+ * **pi-subagents:** tell the truth in a stopped-while-queued notification ([b4fe2b8](https://github.com/gotgenes/pi-packages/commit/b4fe2b8f6f6a9e5f1f366369e4f55a5121fe4da7)), closes [#665](https://github.com/gotgenes/pi-packages/issues/665)
442
+
443
+
444
+ ### Documentation
445
+
446
+ * **pi-subagents:** document the stopped-while-queued lifecycle ([15719f4](https://github.com/gotgenes/pi-packages/commit/15719f48af67548e18f985a0814cb16a1cfa9b2c))
447
+
448
+ ## [19.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v19.0.0...pi-subagents-v19.0.1) (2026-07-27)
449
+
450
+
451
+ ### Bug Fixes
452
+
453
+ * **pi-subagents:** end a get_subagent_result wait on parent interrupt ([#662](https://github.com/gotgenes/pi-packages/issues/662)) ([97abfa1](https://github.com/gotgenes/pi-packages/commit/97abfa1d5467e18fa7e14ebb0d7a4f784b114e8c))
454
+ * **pi-subagents:** honor wait:true for queued agents ([#662](https://github.com/gotgenes/pi-packages/issues/662)) ([fb298c6](https://github.com/gotgenes/pi-packages/commit/fb298c6ce66bff9e974a59f8d5c070f7c245c5ea))
455
+ * **pi-subagents:** track the live resume in the Subagent promise getter ([#662](https://github.com/gotgenes/pi-packages/issues/662)) ([ceb8234](https://github.com/gotgenes/pi-packages/commit/ceb8234ef4205ddd6c9d9cee46c5875156bcadf1))
456
+
457
+ ## [19.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v18.1.2...pi-subagents-v19.0.0) (2026-07-27)
458
+
459
+
460
+ ### ⚠ BREAKING CHANGES
461
+
462
+ * **pi-subagents:** @gotgenes/pi-subagents now requires @earendil-works/pi-coding-agent >= 0.80.5, raised from >= 0.75.0. Nudge delivery is gated on the agent_settled lifecycle event, which Pi added in 0.80.4 and first published to npm in 0.80.5 (0.80.4 was tagged but never published). On an older host the event never fires and completion nudges would never be delivered. Upgrade Pi to 0.80.5 or newer.
463
+
464
+ ### Bug Fixes
465
+
466
+ * **pi-subagents:** gate completion nudges on the parent turn boundary ([#661](https://github.com/gotgenes/pi-packages/issues/661)) ([8f7f387](https://github.com/gotgenes/pi-packages/commit/8f7f387dc38d181589acaa5016e0a8810cbac825))
467
+
468
+ ## [18.1.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v18.1.1...pi-subagents-v18.1.2) (2026-07-25)
469
+
470
+
471
+ ### Bug Fixes
472
+
473
+ * **pi-subagents:** strip the inherited parent cwd footer from child prompts ([449078d](https://github.com/gotgenes/pi-packages/commit/449078d035f287ad0d7c5b7b6d5db9d00bf35f69)), closes [#640](https://github.com/gotgenes/pi-packages/issues/640)
474
+
475
+
476
+ ### Documentation
477
+
478
+ * **pi-subagents:** record the inherited cwd-footer strip ([f4764d5](https://github.com/gotgenes/pi-packages/commit/f4764d5f00110da8df3a39c3524a5446b0a5b86e)), closes [#640](https://github.com/gotgenes/pi-packages/issues/640)
479
+
480
+ ## [18.1.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v18.1.0...pi-subagents-v18.1.1) (2026-07-23)
481
+
482
+
483
+ ### Bug Fixes
484
+
485
+ * **pi-subagents:** add subagents:resumed observer channel ([#466](https://github.com/gotgenes/pi-packages/issues/466)) ([021ad39](https://github.com/gotgenes/pi-packages/commit/021ad396c7d9d83037cb3327c5a71e17bb67a0cc))
486
+ * **pi-subagents:** route resume termination through completion observer ([#466](https://github.com/gotgenes/pi-packages/issues/466)) ([58f2543](https://github.com/gotgenes/pi-packages/commit/58f25431689059ebd706af54d4daf7990278ca42))
487
+
488
+
489
+ ### Documentation
490
+
491
+ * **pi-subagents:** document subagents:resumed and land Phase 21 Step 2 ([#466](https://github.com/gotgenes/pi-packages/issues/466)) ([a404e9c](https://github.com/gotgenes/pi-packages/commit/a404e9cbe935a31f4a5c0ff5a820cb5e3d64a807))
492
+
493
+ ## [18.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v18.0.3...pi-subagents-v18.1.0) (2026-07-20)
494
+
495
+
496
+ ### Features
497
+
498
+ * **pi-subagents:** add consumption state to SubagentState ([#617](https://github.com/gotgenes/pi-packages/issues/617)) ([ed96647](https://github.com/gotgenes/pi-packages/commit/ed966475ecb042bdd2c6c217cc376f67a6358c5a))
499
+ * **pi-subagents:** add session-retention settings ([#617](https://github.com/gotgenes/pi-packages/issues/617)) ([aef24eb](https://github.com/gotgenes/pi-packages/commit/aef24eb23757eaba553310530222517b776fb3c7))
500
+ * **pi-subagents:** add Subagent.releaseSession with outputFile capture ([#617](https://github.com/gotgenes/pi-packages/issues/617)) ([d9e7871](https://github.com/gotgenes/pi-packages/commit/d9e7871ae8cf72c7e93a5a8a6904e7cad21ffaa9))
501
+
502
+
503
+ ### Bug Fixes
504
+
505
+ * **pi-subagents:** honest messages and transcript pointer for released sessions ([#617](https://github.com/gotgenes/pi-packages/issues/617)) ([4b9e7d7](https://github.com/gotgenes/pi-packages/commit/4b9e7d786d072f0b37a09a30c287f6e181a5430c))
506
+ * **pi-subagents:** mark foreground and resume returns consumed ([#617](https://github.com/gotgenes/pi-packages/issues/617)) ([a9c7e92](https://github.com/gotgenes/pi-packages/commit/a9c7e9222f5a6010c06cb1a522f77740760c28ba))
507
+ * **pi-subagents:** move consumed-result tracking from notification layer to domain ([#617](https://github.com/gotgenes/pi-packages/issues/617)) ([0cedaad](https://github.com/gotgenes/pi-packages/commit/0cedaad5b95c7bd5c8843a50f3bc4ed76a00c98e))
508
+ * **pi-subagents:** retain records and release sessions via consumption-aware sweep ([#617](https://github.com/gotgenes/pi-packages/issues/617)) ([0136408](https://github.com/gotgenes/pi-packages/commit/013640874b5e3ed62d068d9478840c6c02a745e0))
509
+
510
+
511
+ ### Documentation
512
+
513
+ * **pi-subagents:** refresh stale evicted-descriptor comments ([#617](https://github.com/gotgenes/pi-packages/issues/617)) ([fb3e4fc](https://github.com/gotgenes/pi-packages/commit/fb3e4fca2983ce7f79b43067cca5325f10a2aaaa))
514
+ * **pi-subagents:** update architecture, README, and skill for consumption-aware retention ([#617](https://github.com/gotgenes/pi-packages/issues/617)) ([a4bd166](https://github.com/gotgenes/pi-packages/commit/a4bd166c244c92708d71533173a5b879d8badcb5))
515
+
516
+ ## [18.0.3](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v18.0.2...pi-subagents-v18.0.3) (2026-07-15)
517
+
518
+
519
+ ### Bug Fixes
520
+
521
+ * **pi-subagents:** omit empty Default agents section header ([a29c324](https://github.com/gotgenes/pi-packages/commit/a29c32498caa4e29f0cc3292d5a6be4f4126c5f8)), closes [#594](https://github.com/gotgenes/pi-packages/issues/594)
522
+ * **pi-subagents:** source subagent guideline copy from agent config ([a2b41a6](https://github.com/gotgenes/pi-packages/commit/a2b41a665586a271b6453b89dabec0bd94be394c)), closes [#594](https://github.com/gotgenes/pi-packages/issues/594)
523
+
524
+ ## [18.0.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v18.0.1...pi-subagents-v18.0.2) (2026-07-14)
525
+
526
+
527
+ ### Documentation
528
+
529
+ * **pi-subagents:** drop NotificationState from architecture and skill after result-delivery extraction ([99dae2c](https://github.com/gotgenes/pi-packages/commit/99dae2cd631ed41b5ef2ea0565660d72eb4e788f))
530
+
531
+ ## [18.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v18.0.0...pi-subagents-v18.0.1) (2026-06-24)
532
+
533
+
534
+ ### Documentation
535
+
536
+ * **pi-subagents:** refresh README for /subagents:settings and /subagents:sessions ([#470](https://github.com/gotgenes/pi-packages/issues/470)) ([945341f](https://github.com/gotgenes/pi-packages/commit/945341fc5527a2e9371d261e0eb1340d09b72f31))
537
+
538
+ ## [18.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v17.5.0...pi-subagents-v18.0.0) (2026-06-23)
539
+
540
+
541
+ ### ⚠ BREAKING CHANGES
542
+
543
+ * **pi-subagents:** The /agents command is removed. Its responsibilities are now served by: /subagents:settings (configure concurrency and turn limits), /subagents:sessions (read-only session transcript viewing), and the always-on background widget (running-agent visibility).
544
+ * **pi-subagents:** the /subagents-settings and /subagent-sessions commands are renamed to /subagents:settings and /subagents:sessions.
545
+
546
+ ### Features
547
+
548
+ * **pi-subagents:** dissolve /agents and remove the conversation-viewer subtree ([cb813f2](https://github.com/gotgenes/pi-packages/commit/cb813f2c5fac7c0b5fa62eecf7f0665671382c1c))
549
+ * **pi-subagents:** namespace commands under subagents: ([23bf99e](https://github.com/gotgenes/pi-packages/commit/23bf99e8662a2b89b2816a14e5f2801fd6c74159))
550
+
551
+ ## [17.5.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v17.4.0...pi-subagents-v17.5.0) (2026-06-23)
552
+
553
+
554
+ ### Features
555
+
556
+ * **pi-subagents:** add file-snapshot transcript source ([06a9ee3](https://github.com/gotgenes/pi-packages/commit/06a9ee39b5f529f770c39cf8d8bdcefd1511bb7d))
557
+ * **pi-subagents:** retain evicted-agent descriptors in the manager ([3128e2a](https://github.com/gotgenes/pi-packages/commit/3128e2a44b94be9b976b74d24cf5127ca0944074))
558
+ * **pi-subagents:** source evicted-agent transcripts from disk in /subagent-sessions ([b4da762](https://github.com/gotgenes/pi-packages/commit/b4da762b0574b49e028518c62e7b2f11acaf1ad4))
559
+
560
+ ## [17.4.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v17.3.0...pi-subagents-v17.4.0) (2026-06-23)
561
+
562
+
563
+ ### Features
564
+
565
+ * add getToolDefinition accessor on subagent record ([#462](https://github.com/gotgenes/pi-packages/issues/462)) ([e0bfdac](https://github.com/gotgenes/pi-packages/commit/e0bfdacec33120d0f52e6294f3676f4776aee4af))
566
+ * expose getToolDefinition on the transcript source seam ([#462](https://github.com/gotgenes/pi-packages/issues/462)) ([669f5ff](https://github.com/gotgenes/pi-packages/commit/669f5ff71523122ebb011adc6875b54d7001d53a))
567
+ * render /subagent-sessions transcript with Pi per-entry components ([#462](https://github.com/gotgenes/pi-packages/issues/462)) ([b832a43](https://github.com/gotgenes/pi-packages/commit/b832a437c97378f701033ef8e98c6f7805d7e7a8))
568
+
569
+ ## [17.3.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v17.2.0...pi-subagents-v17.3.0) (2026-06-22)
570
+
571
+
572
+ ### Features
573
+
574
+ * add /subagent-sessions read-only navigation command ([#445](https://github.com/gotgenes/pi-packages/issues/445)) ([341385c](https://github.com/gotgenes/pi-packages/commit/341385cf1f0c9f5ae1d3035c5b3b34bc3e636c92))
575
+ * add subagent session selection and live transcript source ([#445](https://github.com/gotgenes/pi-packages/issues/445)) ([7173647](https://github.com/gotgenes/pi-packages/commit/71736478c37af2c6ceaebc3ce0ee5a85e75ab1cb))
576
+ * add typed agentMessages accessor on subagent record ([#445](https://github.com/gotgenes/pi-packages/issues/445)) ([3bd49e3](https://github.com/gotgenes/pi-packages/commit/3bd49e37feea2cca52c706f7e765b8ae934ab9fe))
577
+
578
+ ## [17.2.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v17.1.0...pi-subagents-v17.2.0) (2026-06-20)
579
+
580
+
581
+ ### Features
582
+
583
+ * shrink agent widget to background runs only ([#444](https://github.com/gotgenes/pi-packages/issues/444)) ([76463b4](https://github.com/gotgenes/pi-packages/commit/76463b47227961226dbce5efb70a71d596fe092e))
584
+
585
+
586
+ ### Documentation
587
+
588
+ * note background-only widget in README and roadmap ([#444](https://github.com/gotgenes/pi-packages/issues/444)) ([437332f](https://github.com/gotgenes/pi-packages/commit/437332fa4a1fbb2f0a0358495454847bc597ae13))
589
+
590
+ ## [17.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v17.0.1...pi-subagents-v17.1.0) (2026-06-20)
591
+
592
+
593
+ ### Features
594
+
595
+ * add SubagentsSettingsHandler for focused settings command ([#447](https://github.com/gotgenes/pi-packages/issues/447)) ([cae804d](https://github.com/gotgenes/pi-packages/commit/cae804d1be7ac437ad7344035b5d99cd1424e0c0))
596
+ * register /subagents-settings command ([#447](https://github.com/gotgenes/pi-packages/issues/447)) ([7735a38](https://github.com/gotgenes/pi-packages/commit/7735a38db2658fd9faca6388ac4bc712fa8e5a86))
597
+
598
+ ## [17.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v17.0.0...pi-subagents-v17.0.1) (2026-06-20)
599
+
600
+
601
+ ### Bug Fixes
602
+
603
+ * **pi-subagents:** exclude disabled agents from the subagent tool description ([#448](https://github.com/gotgenes/pi-packages/issues/448)) ([9a43414](https://github.com/gotgenes/pi-packages/commit/9a43414b3e15f0c978db9d468b737b13b801fdb2))
604
+ * **pi-subagents:** return an error when spawning a disabled agent type ([#448](https://github.com/gotgenes/pi-packages/issues/448)) ([0e0225e](https://github.com/gotgenes/pi-packages/commit/0e0225e167596217dc7b1d99dd6269600d65326b))
605
+
606
+ ## [17.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.6.0...pi-subagents-v17.0.0) (2026-06-18)
607
+
608
+
609
+ ### ⚠ BREAKING CHANGES
610
+
611
+ * SUBAGENT_EVENTS.ACTIVITY ("subagents:activity") is removed. It was never emitted, so no consumer could act on it, and there is no replacement — the activity tier was removed in Phase 18. Consumers should subscribe to the now-declared FAILED, COMPACTED, CREATED, and STEERED channels instead.
612
+
613
+ ### Features
614
+
615
+ * reconcile SUBAGENT_EVENTS with emitted channels ([#425](https://github.com/gotgenes/pi-packages/issues/425)) ([ba0c48b](https://github.com/gotgenes/pi-packages/commit/ba0c48b294123c1498db2040b1037adcd7ad4e4e))
616
+
617
+ ## [16.6.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.5.0...pi-subagents-v16.6.0) (2026-06-17)
618
+
619
+
620
+ ### Features
621
+
622
+ * read widget activity off subagent records ([#421](https://github.com/gotgenes/pi-packages/issues/421)) ([df09e03](https://github.com/gotgenes/pi-packages/commit/df09e03d122c391212507c4c5d8436cd4a0561ba))
623
+
624
+ ## [16.5.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.4.0...pi-subagents-v16.5.0) (2026-06-17)
625
+
626
+
627
+ ### Features
628
+
629
+ * accumulate live activity in record-observer ([#420](https://github.com/gotgenes/pi-packages/issues/420)) ([c75e7cf](https://github.com/gotgenes/pi-packages/commit/c75e7cf20e44116743fc847238b4364a1edda25a))
630
+ * add live-activity fields to SubagentState ([#420](https://github.com/gotgenes/pi-packages/issues/420)) ([713f19a](https://github.com/gotgenes/pi-packages/commit/713f19aa13306b6c41dc54f3ddfa73fcdfc65427))
631
+ * expose live-activity getters on Subagent ([#420](https://github.com/gotgenes/pi-packages/issues/420)) ([6438d6c](https://github.com/gotgenes/pi-packages/commit/6438d6ca0fdb25b1dfeffa0f76a1eae8630f0cce))
632
+
633
+ ## [16.4.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.3.1...pi-subagents-v16.4.0) (2026-06-16)
634
+
635
+
636
+ ### Features
637
+
638
+ * **pi-subagents:** add loadLayeredSettings layered config loader ([2eeba78](https://github.com/gotgenes/pi-packages/commit/2eeba78230bd4537fa568641d4a77a6f1824271c))
639
+ * **pi-subagents:** export loadLayeredSettings via ./settings subpath ([cefe7f6](https://github.com/gotgenes/pi-packages/commit/cefe7f6b7a9133cd0bbcc523ac8b34e48fce0a58))
640
+
641
+ ## [16.3.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.3.0...pi-subagents-v16.3.1) (2026-06-16)
642
+
643
+
644
+ ### Documentation
645
+
646
+ * reframe pi-subagents positioning away from "Claude Code-style" ([c8d380d](https://github.com/gotgenes/pi-packages/commit/c8d380d440a4ae29f9173673523337cf667fb3da))
647
+
648
+ ## [16.3.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.2.2...pi-subagents-v16.3.0) (2026-06-16)
649
+
650
+
651
+ ### Features
652
+
653
+ * self-seed finished agents in AgentWidget.update ([#377](https://github.com/gotgenes/pi-packages/issues/377)) ([fd99a29](https://github.com/gotgenes/pi-packages/commit/fd99a297f70ce4c1c078fd486be042f691fe5a79))
654
+
655
+
656
+ ### Documentation
657
+
658
+ * **pi-subagents:** drop removed memory, skills, isolation surfaces ([7cf20ee](https://github.com/gotgenes/pi-packages/commit/7cf20eebf109c979a864000cd8b9d84a13d0df90))
659
+
660
+ ## [16.2.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.2.1...pi-subagents-v16.2.2) (2026-06-15)
661
+
662
+
663
+ ### Documentation
664
+
665
+ * **pi-subagents:** replace fork notice with upstream comparison ([513df4d](https://github.com/gotgenes/pi-packages/commit/513df4d6149178c5c8074cf07d8ad248c50d4c47))
666
+
667
+ ## [16.2.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.2.0...pi-subagents-v16.2.1) (2026-06-15)
668
+
669
+
670
+ ### Bug Fixes
671
+
672
+ * restore at-spawn promise for queued subagents ([#374](https://github.com/gotgenes/pi-packages/issues/374)) ([4f08c6c](https://github.com/gotgenes/pi-packages/commit/4f08c6c37814b5386a23cd60479efc39c4b22612))
673
+
674
+ ## [16.2.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.1.1...pi-subagents-v16.2.0) (2026-06-14)
675
+
676
+
677
+ ### Features
678
+
679
+ * encapsulate Subagent.start(), promise, and notification ([#374](https://github.com/gotgenes/pi-packages/issues/374)) ([048b4a0](https://github.com/gotgenes/pi-packages/commit/048b4a0a859ec83e1c73c1386484a747e37ba224))
680
+
681
+ ## [16.1.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.1.0...pi-subagents-v16.1.1) (2026-06-14)
682
+
683
+
684
+ ### Bug Fixes
685
+
686
+ * abort all subagents on parent interrupt ([#403](https://github.com/gotgenes/pi-packages/issues/403)) ([0c951d3](https://github.com/gotgenes/pi-packages/commit/0c951d3da27123a61c95a7f9a07ddb4cf5ed7e89))
687
+
688
+ ## [16.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v16.0.0...pi-subagents-v16.1.0) (2026-06-14)
689
+
690
+
691
+ ### Features
692
+
693
+ * **pi-subagents:** add ConcurrencyLimiter ([#381](https://github.com/gotgenes/pi-packages/issues/381)) ([26f4203](https://github.com/gotgenes/pi-packages/commit/26f420337094d81d39bcc3e0522e12262c7767b7))
694
+
695
+ ## [16.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v15.0.2...pi-subagents-v16.0.0) (2026-06-14)
696
+
697
+
698
+ ### ⚠ BREAKING CHANGES
699
+
700
+ * replace-mode subagents (built-in Explore/Plan and any custom prompt_mode: replace agent) now inherit the parent system prompt as their base instead of a thin standalone header. The custom prompt is appended last and retains full control; the <sub_agent_context> bridge and <agent_instructions> wrapper are still omitted in replace mode.
701
+
702
+ ### Performance Improvements
703
+
704
+ * include parent system prompt in replace mode ([#400](https://github.com/gotgenes/pi-packages/issues/400)) ([1cc25cf](https://github.com/gotgenes/pi-packages/commit/1cc25cf0106cbfe3015ceb69a820c745c07038e2))
705
+
706
+
707
+ ### Documentation
708
+
709
+ * describe replace-mode parent inheritance ([#400](https://github.com/gotgenes/pi-packages/issues/400)) ([6b6e61d](https://github.com/gotgenes/pi-packages/commit/6b6e61d649582c26d2c36edf67dfd1e35d87a802))
710
+
711
+ ## [15.0.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v15.0.1...pi-subagents-v15.0.2) (2026-06-12)
712
+
713
+
714
+ ### Miscellaneous Chores
715
+
716
+ * **deps:** bump Pi SDK to 0.79.1 ([#370](https://github.com/gotgenes/pi-packages/issues/370)) ([704f3b3](https://github.com/gotgenes/pi-packages/commit/704f3b3457ceb12b9df9efffe7a56812a5667d5d))
717
+ * **deps:** bump rollup to 4.61.1 ([#370](https://github.com/gotgenes/pi-packages/issues/370)) ([250b729](https://github.com/gotgenes/pi-packages/commit/250b7296093b091297c57463693eaa2db59d5fe3))
718
+
719
+ ## [15.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v15.0.0...pi-subagents-v15.0.1) (2026-06-10)
720
+
721
+
722
+ ### Miscellaneous Chores
723
+
724
+ * **deps:** bump pnpm to 11.5.2 and fallow to 2.91.0 ([b34cef4](https://github.com/gotgenes/pi-packages/commit/b34cef4df692dbb279c859d56be49894d63c0c45))
725
+ * **deps:** bump tooling dependencies to latest minor/patch ([8b9105d](https://github.com/gotgenes/pi-packages/commit/8b9105d4011816fe8085dfed3a3b9d7bc9918c56))
726
+
727
+ ## [15.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v14.0.1...pi-subagents-v15.0.0) (2026-06-09)
728
+
729
+
730
+ ### ⚠ BREAKING CHANGES
731
+
732
+ * **pi-subagents:** Custom agents in .pi/agents/*.md that omit the prompt_mode frontmatter key now default to append instead of replace, so they inherit the parent system prompt (AGENTS.md / CLAUDE.md / skills). Add `prompt_mode: replace` explicitly to restore the previous standalone-prompt behavior.
733
+
734
+ ### Bug Fixes
735
+
736
+ * **pi-subagents:** default custom agents to append prompt mode ([#360](https://github.com/gotgenes/pi-packages/issues/360)) ([e3a3c96](https://github.com/gotgenes/pi-packages/commit/e3a3c9623eb0448a005f436c7c8a98504ceaf6e9))
737
+
738
+
739
+ ### Documentation
740
+
741
+ * **pi-subagents:** note custom agents default to append prompt mode ([#360](https://github.com/gotgenes/pi-packages/issues/360)) ([9d6038c](https://github.com/gotgenes/pi-packages/commit/9d6038c515dd1b6681bf47d9cbff090da70cf014))
742
+
743
+ ## [14.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v14.0.0...pi-subagents-v14.0.1) (2026-06-03)
744
+
745
+
746
+ ### Documentation
747
+
748
+ * standardize and correct package READMEs ([4c270ad](https://github.com/gotgenes/pi-packages/commit/4c270adac97ca816fa1889a879d1d4fe19cdd464))
749
+
750
+ ## [14.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v13.2.2...pi-subagents-v14.0.0) (2026-06-01)
751
+
752
+
753
+ ### ⚠ BREAKING CHANGES
754
+
755
+ * **pi-subagents:** the subagents:child:session-created payload no longer includes sessionDir or agentName; it now carries sessionId (string) and parentSessionId (optional string). The subagents:child:disposed payload no longer includes sessionDir; it now carries sessionId (string). External subscribers reading sessionDir or agentName from these two events must update to use sessionId instead.
756
+
757
+ ### Bug Fixes
758
+
759
+ * **pi-subagents:** carry child session id on session-created/disposed lifecycle events ([af94672](https://github.com/gotgenes/pi-packages/commit/af946723df7a4c7b2e65aa2e732085abb0019c7e))
760
+
761
+ ## [13.2.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v13.2.1...pi-subagents-v13.2.2) (2026-06-01)
762
+
763
+
764
+ ### Documentation
765
+
766
+ * use ADR-NNNN with links docs-wide ([c6b6431](https://github.com/gotgenes/pi-packages/commit/c6b6431c004f324931f23be46cf2e47e8fdac919))
767
+
768
+ ## [13.2.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v13.2.0...pi-subagents-v13.2.1) (2026-05-30)
769
+
770
+
771
+ ### Documentation
772
+
773
+ * **pi-subagents:** refresh permission-integration and architecture sections ([#267](https://github.com/gotgenes/pi-packages/issues/267)) ([4096f83](https://github.com/gotgenes/pi-packages/commit/4096f83c343250b4d2cb5a522bbb140e1e023ed3))
774
+
775
+ ## [13.2.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v13.1.0...pi-subagents-v13.2.0) (2026-05-30)
776
+
777
+
778
+ ### Features
779
+
780
+ * add delegate methods to SubagentSession for session encapsulation ([#277](https://github.com/gotgenes/pi-packages/issues/277)) ([038e906](https://github.com/gotgenes/pi-packages/commit/038e906312b00d18ff617caf68bce980db70a243))
781
+ * add session-encapsulation methods to Agent ([#277](https://github.com/gotgenes/pi-packages/issues/277)) ([03b4382](https://github.com/gotgenes/pi-packages/commit/03b43820aa7bd4ab4f9a4cd15ae09a1217c317d4))
782
+
783
+ ## [13.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v13.0.0...pi-subagents-v13.1.0) (2026-05-30)
784
+
785
+
786
+ ### Features
787
+
788
+ * add createSubagentSession factory ([62c319d](https://github.com/gotgenes/pi-packages/commit/62c319d6703a6f58a829f372b609daea36170987))
789
+ * add SubagentSession with turn-loop and disposal behavior ([69f8f4b](https://github.com/gotgenes/pi-packages/commit/69f8f4bf78431be990a9eb6fbe592e59cc313912))
790
+ * dissolve the runner; Agent drives SubagentSession directly ([fbe71b0](https://github.com/gotgenes/pi-packages/commit/fbe71b02759551e60b4e22e96bb28299e444feb2))
791
+
792
+ ## [13.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v12.1.0...pi-subagents-v13.0.0) (2026-05-30)
793
+
794
+
795
+ ### ⚠ BREAKING CHANGES
796
+
797
+ * the `skills:` custom-agent frontmatter key and skill preloading are removed; children always load the parent's skills.
798
+ * the `extensions:` custom-agent frontmatter key is removed; children always load the parent's extensions.
799
+ * `SpawnOptions.isolated` and the `isolated:` custom-agent frontmatter key are removed. Children always load the parent's extensions.
800
+
801
+ ### Features
802
+
803
+ * always inherit extensions; make the recursion guard unconditional ([#264](https://github.com/gotgenes/pi-packages/issues/264)) ([3cc682e](https://github.com/gotgenes/pi-packages/commit/3cc682ec401167f922a1f892f6260a10f9fa99f2))
804
+ * always inherit skills; remove noSkills and the skill-preload path ([#264](https://github.com/gotgenes/pi-packages/issues/264)) ([93266ff](https://github.com/gotgenes/pi-packages/commit/93266ff4a204d154b357efac57912330fad240be))
805
+ * remove isolated from the subagent spawn API and lifecycle ([#264](https://github.com/gotgenes/pi-packages/issues/264)) ([d08f340](https://github.com/gotgenes/pi-packages/commit/d08f34066ea472d850423e67349b7a623ca72f42))
806
+
807
+ ## [12.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v12.0.0...pi-subagents-v12.1.0) (2026-05-29)
808
+
809
+
810
+ ### Features
811
+
812
+ * export WorkspaceProvider collaborator types by name ([#272](https://github.com/gotgenes/pi-packages/issues/272)) ([1ff4697](https://github.com/gotgenes/pi-packages/commit/1ff4697a3033be445340d18af005a5d34fb5934d))
813
+
814
+ ## [12.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v11.6.0...pi-subagents-v12.0.0) (2026-05-29)
815
+
816
+
817
+ ### ⚠ BREAKING CHANGES
818
+
819
+ * SubagentRecord no longer carries worktreeResult, and the core no longer creates git worktrees. Worktree isolation moves to @gotgenes/pi-subagents-worktrees.
820
+ * the Agent tool no longer accepts isolation: "worktree", and SubagentsService.SpawnOptions no longer has an isolation field. Install @gotgenes/pi-subagents-worktrees and list the agent in worktreeAgents instead.
821
+
822
+ ### Features
823
+
824
+ * drop the isolation spawn axis from the subagents API ([2ff8970](https://github.com/gotgenes/pi-packages/commit/2ff897059feec67a49af7e3f54e0e4828faa2521))
825
+ * remove git worktree isolation from the subagents core ([2e81044](https://github.com/gotgenes/pi-packages/commit/2e81044221562c528d1fb296f356f60d81af0661))
826
+
827
+ ## [11.6.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v11.5.0...pi-subagents-v11.6.0) (2026-05-29)
828
+
829
+
830
+ ### Features
831
+
832
+ * **pi-subagents:** publish bundled type declarations and fix stale exports path ([8eda6f6](https://github.com/gotgenes/pi-packages/commit/8eda6f6611a12c60d99a5069f352abd634997e67))
833
+
834
+ ## [11.5.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v11.4.0...pi-subagents-v11.5.0) (2026-05-29)
835
+
836
+
837
+ ### Features
838
+
839
+ * add WorkspaceProvider registration seam to subagents service ([51a9970](https://github.com/gotgenes/pi-packages/commit/51a99701db214c11f08251e9ed5549d01c4d5839))
840
+ * consult workspace provider for child cwd and disposal ([32eeffc](https://github.com/gotgenes/pi-packages/commit/32eeffc1cc31bc7e403c25cdd116e2b351be4527))
841
+
842
+ ## [11.4.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v11.3.0...pi-subagents-v11.4.0) (2026-05-29)
843
+
844
+
845
+ ### Features
846
+
847
+ * add child-execution lifecycle event publisher ([4d27c13](https://github.com/gotgenes/pi-packages/commit/4d27c130b4782b7fffb9b61a37e151f8500c55ea))
848
+ * emit child-execution lifecycle events and retire permission-bridge ([c8daee4](https://github.com/gotgenes/pi-packages/commit/c8daee4bcf21f6720d9dbc164282fb6a04e552b1))
849
+
850
+ ## [11.3.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v11.2.0...pi-subagents-v11.3.0) (2026-05-29)
851
+
852
+
853
+ ### Features
854
+
855
+ * **pi-subagents:** add WorktreeIsolation collaborator ([ee7ab73](https://github.com/gotgenes/pi-packages/commit/ee7ab73a53f8643b5887856c33d53786a5a5a9cc))
856
+
857
+ ## [11.2.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v11.1.0...pi-subagents-v11.2.0) (2026-05-28)
858
+
859
+
860
+ ### Features
861
+
862
+ * add Agent.resume() with internal observer lifecycle ([6cffb47](https://github.com/gotgenes/pi-packages/commit/6cffb47079e385b0ccd12e358c12357291be2ef0))
863
+
864
+
865
+ ### Bug Fixes
866
+
867
+ * release abort-signal listener when worktree setup fails ([ce2cac6](https://github.com/gotgenes/pi-packages/commit/ce2cac6788ffc90316f759e40e4df29576a70128))
868
+
869
+ ## [11.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v11.0.1...pi-subagents-v11.1.0) (2026-05-28)
870
+
871
+
872
+ ### Features
873
+
874
+ * **pi-subagents:** add ConcurrencyQueue class ([#230](https://github.com/gotgenes/pi-packages/issues/230)) ([9fff9b7](https://github.com/gotgenes/pi-packages/commit/9fff9b7fc318ad8bf5ac3a218ee7bf1c5e11104b))
875
+
876
+
877
+ ### Documentation
878
+
879
+ * **pi-subagents:** update architecture for ConcurrencyQueue extraction ([#230](https://github.com/gotgenes/pi-packages/issues/230)) ([4bd69e1](https://github.com/gotgenes/pi-packages/commit/4bd69e16164132400c7e0f9e4ecfd9f41842247a))
880
+
881
+ ## [11.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v11.0.0...pi-subagents-v11.0.1) (2026-05-28)
882
+
883
+
884
+ ### Documentation
885
+
886
+ * **retro:** add retro notes for issue [#229](https://github.com/gotgenes/pi-packages/issues/229) ([13e9873](https://github.com/gotgenes/pi-packages/commit/13e9873f6dc3e8522cd6359085f86c99507e9db9))
887
+
888
+ ## [11.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v10.2.1...pi-subagents-v11.0.0) (2026-05-28)
889
+
890
+
891
+ ### ⚠ BREAKING CHANGES
892
+
893
+ * AgentSpawnConfig.onSessionCreated is replaced by AgentSpawnConfig.observer (AgentLifecycleObserver). Callers that used onSessionCreated must use observer.onSessionCreated instead.
894
+
895
+ ### Features
896
+
897
+ * add Agent.run() encapsulating full execution lifecycle ([#229](https://github.com/gotgenes/pi-packages/issues/229)) ([780cb72](https://github.com/gotgenes/pi-packages/commit/780cb72ea7a6981ee283a9de791d5fb65cabaa28))
898
+ * add AgentLifecycleObserver interface ([#229](https://github.com/gotgenes/pi-packages/issues/229)) ([c0f08a4](https://github.com/gotgenes/pi-packages/commit/c0f08a40ce36afa3a7876345709db56e192a893b))
899
+ * AgentManager.spawn() creates complete Agent, deletes startAgent ([#229](https://github.com/gotgenes/pi-packages/issues/229)) ([4d83c6d](https://github.com/gotgenes/pi-packages/commit/4d83c6d583df905054066ed841a67795753928d4))
900
+ * expand AgentInit with run-config, deps, and self-created AbortController ([#229](https://github.com/gotgenes/pi-packages/issues/229)) ([e522f23](https://github.com/gotgenes/pi-packages/commit/e522f23232e4b447ffa39e36a19cf70c7e5cbaae))
901
+
902
+
903
+ ### Documentation
904
+
905
+ * mark Phase 15 Step 4 complete, update architecture ([#229](https://github.com/gotgenes/pi-packages/issues/229)) ([29b0da8](https://github.com/gotgenes/pi-packages/commit/29b0da8435aaa5be51fc073612fc09d9a22004bc))
906
+ * plan Agent born complete — Agent.run() absorbs startAgent ([#229](https://github.com/gotgenes/pi-packages/issues/229)) ([c1588b5](https://github.com/gotgenes/pi-packages/commit/c1588b58ae697d22db1bf30b8997e5502626c33b))
907
+ * **retro:** add planning stage notes for issue [#229](https://github.com/gotgenes/pi-packages/issues/229) ([21243d5](https://github.com/gotgenes/pi-packages/commit/21243d564691daab5dcddff23809a82db56c0660))
908
+ * **retro:** add retro notes for issue [#231](https://github.com/gotgenes/pi-packages/issues/231) ([249cce0](https://github.com/gotgenes/pi-packages/commit/249cce0e1c7642d8c85da67e8f3c92f210735e7b))
909
+ * **retro:** add TDD stage notes for issue [#229](https://github.com/gotgenes/pi-packages/issues/229) ([047cd9e](https://github.com/gotgenes/pi-packages/commit/047cd9e2816f6a25d93bbba33fc93b228989f272))
910
+
911
+ ## [10.2.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v10.2.0...pi-subagents-v10.2.1) (2026-05-27)
912
+
913
+
914
+ ### Documentation
915
+
916
+ * **pi-subagents:** renumber Phase 15 steps to match execution order ([598bb65](https://github.com/gotgenes/pi-packages/commit/598bb653ac8b63756e8c00dfcf19d3167e2dbc37))
917
+ * **pi-subagents:** revise Phase 15 roadmap for Agent-born-complete vision ([e04583e](https://github.com/gotgenes/pi-packages/commit/e04583e75bfc1314674a6f3181762a26733fb830))
918
+ * plan push exec/registry relay deps to runner construction ([#231](https://github.com/gotgenes/pi-packages/issues/231)) ([646b4d5](https://github.com/gotgenes/pi-packages/commit/646b4d5085e0f7d36a397b43b3b46e0537c3141f))
919
+ * **retro:** add planning stage notes for issue [#231](https://github.com/gotgenes/pi-packages/issues/231) ([dc0daee](https://github.com/gotgenes/pi-packages/commit/dc0daee634c17cf2a40336e27f551bfa2ce0e249))
920
+ * **retro:** add retro notes for issue [#228](https://github.com/gotgenes/pi-packages/issues/228) ([d5b563b](https://github.com/gotgenes/pi-packages/commit/d5b563b6484cbd6a89cd7e9e87ebd431aed128fc))
921
+ * **retro:** add TDD stage notes for issue [#231](https://github.com/gotgenes/pi-packages/issues/231) ([28094ae](https://github.com/gotgenes/pi-packages/commit/28094ae812141ea1c93a22be50ed29d31b7a979a))
922
+ * update architecture for runner self-contained ([#231](https://github.com/gotgenes/pi-packages/issues/231)) ([80dd339](https://github.com/gotgenes/pi-packages/commit/80dd339d7dee9b312b52af2b74756c5748619a49))
923
+
924
+ ## [10.2.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v10.1.0...pi-subagents-v10.2.0) (2026-05-27)
925
+
926
+
927
+ ### Features
928
+
929
+ * **pi-subagents:** add run lifecycle methods to Agent ([2a378f1](https://github.com/gotgenes/pi-packages/commit/2a378f1c82e977bdfee25931ab449757e364d589))
930
+
931
+
932
+ ### Documentation
933
+
934
+ * **pi-subagents:** update architecture for async startAgent ([941eb10](https://github.com/gotgenes/pi-packages/commit/941eb109e71e4c51d5bb37a2a46ffc12f618d949))
935
+ * plan async startAgent and RunHandle dissolution ([#228](https://github.com/gotgenes/pi-packages/issues/228)) ([647adf8](https://github.com/gotgenes/pi-packages/commit/647adf853fec63ea53afd63bc8204c89a6194bbe))
936
+ * **retro:** add planning stage notes for issue [#228](https://github.com/gotgenes/pi-packages/issues/228) ([8dd9f8a](https://github.com/gotgenes/pi-packages/commit/8dd9f8ab7082c08e424b1b4a9557253af2ce584b))
937
+ * **retro:** add retro notes for issue [#227](https://github.com/gotgenes/pi-packages/issues/227) ([78a4d64](https://github.com/gotgenes/pi-packages/commit/78a4d645f524465c64bf0b6ba1bcca37858e8721))
938
+ * **retro:** add TDD stage notes for issue [#228](https://github.com/gotgenes/pi-packages/issues/228) ([ab497c5](https://github.com/gotgenes/pi-packages/commit/ab497c57723666d0635a0a08f9eecc06576da549))
939
+
940
+ ## [10.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v10.0.1...pi-subagents-v10.1.0) (2026-05-27)
941
+
942
+
943
+ ### Features
944
+
945
+ * **pi-subagents:** add abort() to AgentRecord ([bbc9dc7](https://github.com/gotgenes/pi-packages/commit/bbc9dc779d2ff845680f6de34d0ef33c10cdf124))
946
+ * **pi-subagents:** add setupWorktree() to AgentRecord ([1786fdb](https://github.com/gotgenes/pi-packages/commit/1786fdb939d3e858d6453b71a43b9fb3c3346a88))
947
+ * **pi-subagents:** add steer buffering to AgentRecord ([a22d8c7](https://github.com/gotgenes/pi-packages/commit/a22d8c77e8074e1fe9f396305267380d9f3558b3))
948
+
949
+
950
+ ### Bug Fixes
951
+
952
+ * **pi-subagents:** remove unused AgentInit/AgentStatus re-exports from types.ts ([6789cb7](https://github.com/gotgenes/pi-packages/commit/6789cb72e26eefd54da4ff6ee5dd847c4fa78385))
953
+
954
+
955
+ ### Documentation
956
+
957
+ * **pi-subagents:** archive Phase 14, advance to Phase 15 ([a8147fb](https://github.com/gotgenes/pi-packages/commit/a8147fb3f6be9af6d73089bbb42b40080e8e04a7))
958
+ * **pi-subagents:** update architecture for Agent rename ([#227](https://github.com/gotgenes/pi-packages/issues/227)) ([f9afc88](https://github.com/gotgenes/pi-packages/commit/f9afc88dcc21213abe453baa032563ff37499ca9))
959
+ * plan evolve AgentRecord into Agent with behavior ([#227](https://github.com/gotgenes/pi-packages/issues/227)) ([d56ff97](https://github.com/gotgenes/pi-packages/commit/d56ff97408063de6467149dc332e35d4078dd137))
960
+ * replace \n with &lt;br/&gt; in Mermaid node labels ([3312a45](https://github.com/gotgenes/pi-packages/commit/3312a4559100cf9ae923f67819653b5a99fceb12))
961
+ * **retro:** add planning stage notes for issue [#227](https://github.com/gotgenes/pi-packages/issues/227) ([ccd9788](https://github.com/gotgenes/pi-packages/commit/ccd9788ac619ae9f0380cb4b0c0b632efb0faf68))
962
+ * **retro:** add retro notes for issue [#239](https://github.com/gotgenes/pi-packages/issues/239) ([58a19a1](https://github.com/gotgenes/pi-packages/commit/58a19a1e65d93c753ef7ba9c24e34d4ebb6f172d))
963
+ * **retro:** add TDD stage notes for issue [#227](https://github.com/gotgenes/pi-packages/issues/227) ([66cf314](https://github.com/gotgenes/pi-packages/commit/66cf314aa4bef736a689d547e75e8bede1757f85))
964
+
965
+ ## [10.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v10.0.0...pi-subagents-v10.0.1) (2026-05-27)
966
+
967
+
968
+ ### Documentation
969
+
970
+ * mark Phase 14 Step 3 complete in architecture ([fb374ba](https://github.com/gotgenes/pi-packages/commit/fb374ba5829945a4d2f71d8a611bc5128cdd3bf1))
971
+ * plan collapse filterActiveTools to recursion guard ([#239](https://github.com/gotgenes/pi-packages/issues/239)) ([411b22e](https://github.com/gotgenes/pi-packages/commit/411b22ef8186e5fe73bfa81672edfe473ad9d76a))
972
+ * **retro:** add planning stage notes for issue [#239](https://github.com/gotgenes/pi-packages/issues/239) ([c0383b1](https://github.com/gotgenes/pi-packages/commit/c0383b1d9333b70d61a80b75cd1e6e2724d91ad3))
973
+ * **retro:** add retro notes for issue [#242](https://github.com/gotgenes/pi-packages/issues/242) ([69c8cc2](https://github.com/gotgenes/pi-packages/commit/69c8cc269f6dfd6552aecb6d073ea86bb22267dd))
974
+ * **retro:** add TDD stage notes for issue [#239](https://github.com/gotgenes/pi-packages/issues/239) ([f4098a0](https://github.com/gotgenes/pi-packages/commit/f4098a084564dd75bd683449a2aa3926ae36cba3))
975
+
976
+ ## [10.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v9.0.1...pi-subagents-v10.0.0) (2026-05-27)
977
+
978
+
979
+ ### ⚠ BREAKING CHANGES
980
+
981
+ * The tool name changes from "Agent" to "subagent". Any AGENTS.md files, prompt templates, or custom agent configs that reference the tool by name will need updating.
982
+
983
+ ### Features
984
+
985
+ * rename Agent tool to subagent ([#242](https://github.com/gotgenes/pi-packages/issues/242)) ([8b1c310](https://github.com/gotgenes/pi-packages/commit/8b1c310d8fd2d797b0d116fdaf2d4b28ea5b41ce))
986
+
987
+
988
+ ### Documentation
989
+
990
+ * **pi-subagents:** add Phase 14 Step 4 — rename Agent tool to subagent ([#242](https://github.com/gotgenes/pi-packages/issues/242)) ([2a3cd9f](https://github.com/gotgenes/pi-packages/commit/2a3cd9f25dce042a77d28da1d17a6d8c7870dddf))
991
+ * plan rename Agent tool to subagent ([#242](https://github.com/gotgenes/pi-packages/issues/242)) ([41fe2a4](https://github.com/gotgenes/pi-packages/commit/41fe2a4033a49b39fbbe3938580c6afaeefa9d47))
992
+ * **retro:** add planning stage notes for issue [#242](https://github.com/gotgenes/pi-packages/issues/242) ([6211bed](https://github.com/gotgenes/pi-packages/commit/6211bede3cde8e283b05ed81cc1652e2e370cd9b))
993
+ * **retro:** add TDD stage notes for issue [#242](https://github.com/gotgenes/pi-packages/issues/242) ([7ec9ead](https://github.com/gotgenes/pi-packages/commit/7ec9eadc3544a4c73ce1d3e491cc29da3fddbe16))
994
+ * update tool name references after Agent → subagent rename ([#242](https://github.com/gotgenes/pi-packages/issues/242)) ([0b6774d](https://github.com/gotgenes/pi-packages/commit/0b6774dbe049320bb7919f1f09c6f4c090eb91c5))
995
+
996
+ ## [9.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v9.0.0...pi-subagents-v9.0.1) (2026-05-27)
997
+
998
+
999
+ ### Documentation
1000
+
1001
+ * **retro:** add retro notes for issue [#238](https://github.com/gotgenes/pi-packages/issues/238) ([84f2e49](https://github.com/gotgenes/pi-packages/commit/84f2e49c1c7a28e83ca556f377d7e3f970b8a5d2))
1002
+
1003
+ ## [9.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v8.0.0...pi-subagents-v9.0.0) (2026-05-27)
1004
+
1005
+
1006
+ ### ⚠ BREAKING CHANGES
1007
+
1008
+ * extensions field in agent frontmatter no longer supports a comma-separated allowlist. Values like `extensions: pi-github-tools, colgrep` are coerced to `true` (inherit all). Users who relied on per-extension filtering should migrate to `permission:` frontmatter in pi-permission-system.
1009
+
1010
+ ### Features
1011
+
1012
+ * narrow extensions type from union to boolean ([90350ab](https://github.com/gotgenes/pi-packages/commit/90350abef259f5494990c5796a005f2edba2163d))
1013
+
1014
+
1015
+ ### Documentation
1016
+
1017
+ * mark Phase 14 Step 2 complete in architecture ([fc8bc57](https://github.com/gotgenes/pi-packages/commit/fc8bc57788a3ade9ec2f74200973e5a811c48bb3))
1018
+ * plan remove extensions filtering ([#238](https://github.com/gotgenes/pi-packages/issues/238)) ([1f4046a](https://github.com/gotgenes/pi-packages/commit/1f4046a84a308e80472425b5ca9e83263ecc310a))
1019
+ * **retro:** add planning stage notes for issue [#238](https://github.com/gotgenes/pi-packages/issues/238) ([b2ce842](https://github.com/gotgenes/pi-packages/commit/b2ce842dcc999fd48f6aeb67c6d464750d6d87aa))
1020
+ * **retro:** add retro notes for issue [#237](https://github.com/gotgenes/pi-packages/issues/237) ([6be215e](https://github.com/gotgenes/pi-packages/commit/6be215e6f4d9307f94b5bb61c024292a8eb77469))
1021
+ * **retro:** add TDD stage notes for issue [#238](https://github.com/gotgenes/pi-packages/issues/238) ([87256db](https://github.com/gotgenes/pi-packages/commit/87256dbd97ba4a69267f2091896d959bef9ff9df))
1022
+ * simplify extensions field to boolean in README ([b4028d7](https://github.com/gotgenes/pi-packages/commit/b4028d7c203fce792238acb147709ad3c3d4d28e))
1023
+
1024
+ ## [8.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.8.1...pi-subagents-v8.0.0) (2026-05-27)
1025
+
1026
+
1027
+ ### ⚠ BREAKING CHANGES
1028
+
1029
+ * The `disallowed_tools` frontmatter field is no longer supported. Users should migrate to pi-permission-system's `permission:`
1030
+
1031
+ ### Features
1032
+
1033
+ * remove disallowedTools from AgentConfig ([6044552](https://github.com/gotgenes/pi-packages/commit/6044552db68180bf8a151c0f64c13f264f3dacb9))
1034
+
1035
+
1036
+ ### Documentation
1037
+
1038
+ * add Phase 14 issue links, anemic-model and lifecycle-object smells to discovery skill ([9831176](https://github.com/gotgenes/pi-packages/commit/983117652937dce08e61a6cf7624e35ccf8a0dcb))
1039
+ * mark Phase 14 Step 1 complete in architecture ([d24e3dd](https://github.com/gotgenes/pi-packages/commit/d24e3dd5c664e63a372f399f9e325f1bdf877022))
1040
+ * **pi-subagents:** add Phase 14 issue links ([#237](https://github.com/gotgenes/pi-packages/issues/237), [#238](https://github.com/gotgenes/pi-packages/issues/238), [#239](https://github.com/gotgenes/pi-packages/issues/239)) ([b152a75](https://github.com/gotgenes/pi-packages/commit/b152a75dcd6596468c5c0aeca1b36ac33216dfa8))
1041
+ * **pi-subagents:** add target architecture vision and renumber phases 14-17 ([f7e5315](https://github.com/gotgenes/pi-packages/commit/f7e5315bbfb088d7a40637deead1811691dec1bd))
1042
+ * **pi-subagents:** archive Phase 13, update metrics for Phase 14 ([9d473db](https://github.com/gotgenes/pi-packages/commit/9d473db1b0e420fa52ce9d09bea7afff75331e58))
1043
+ * plan removal of disallowed_tools ([#237](https://github.com/gotgenes/pi-packages/issues/237)) ([9cb600c](https://github.com/gotgenes/pi-packages/commit/9cb600cad9c8cc7b1081b021f039b0f36b9f9a44))
1044
+ * remove disallowed_tools from README and add migration note ([9b3905f](https://github.com/gotgenes/pi-packages/commit/9b3905fbaa81db47633c0c8edf21ed3b766d5507))
1045
+ * **retro:** add planning stage notes for issue [#237](https://github.com/gotgenes/pi-packages/issues/237) ([85460dd](https://github.com/gotgenes/pi-packages/commit/85460dd72949d7da83eaf9ed2196ff5c41d92f7f))
1046
+ * **retro:** add retro notes for issue [#219](https://github.com/gotgenes/pi-packages/issues/219) ([2d92af5](https://github.com/gotgenes/pi-packages/commit/2d92af577c0cfb71c575a5c334df2347840b4a8d))
1047
+ * **retro:** add TDD stage notes for issue [#237](https://github.com/gotgenes/pi-packages/issues/237) ([f334538](https://github.com/gotgenes/pi-packages/commit/f3345383a76975f09c0ee689edcb5df286b76fc7))
1048
+
1049
+ ## [7.8.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.8.0...pi-subagents-v7.8.1) (2026-05-26)
1050
+
1051
+
1052
+ ### Documentation
1053
+
1054
+ * plan reduce test duplication — top 3 clone families ([#219](https://github.com/gotgenes/pi-packages/issues/219)) ([c941b1b](https://github.com/gotgenes/pi-packages/commit/c941b1b3c047f6895eb57da3291b75082a2b99a3))
1055
+ * **retro:** add planning stage notes for issue [#219](https://github.com/gotgenes/pi-packages/issues/219) ([5122f7c](https://github.com/gotgenes/pi-packages/commit/5122f7cd666873abbbb6b6880fffb1e751beb9b5))
1056
+ * **retro:** add retro notes for issue [#218](https://github.com/gotgenes/pi-packages/issues/218) ([ef9187b](https://github.com/gotgenes/pi-packages/commit/ef9187ba8521d10212bd992cbfcf3d853886938b))
1057
+ * **retro:** add TDD stage notes for issue [#219](https://github.com/gotgenes/pi-packages/issues/219) ([975f94e](https://github.com/gotgenes/pi-packages/commit/975f94e5e868310765029050490098b335a67e1e))
1058
+
1059
+ ## [7.8.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.7.0...pi-subagents-v7.8.0) (2026-05-26)
1060
+
1061
+
1062
+ ### Features
1063
+
1064
+ * inject agentDir into SettingsManager and loadSettings to remove SDK dependency ([7dcb986](https://github.com/gotgenes/pi-packages/commit/7dcb9868c8ac52c86a3eac0b6fc6648c8d57fc7c))
1065
+ * wire agentDir from SDK boundary in index.ts ([#218](https://github.com/gotgenes/pi-packages/issues/218)) ([17e9fc5](https://github.com/gotgenes/pi-packages/commit/17e9fc5f7880ae92168a6bb30e6fbc82748b7b2a))
1066
+
1067
+
1068
+ ### Documentation
1069
+
1070
+ * plan push SDK boundary in settings.ts ([#218](https://github.com/gotgenes/pi-packages/issues/218)) ([19f7cd6](https://github.com/gotgenes/pi-packages/commit/19f7cd6ddfa28290f7e61e6273d966c946868cf6))
1071
+ * **retro:** add planning stage notes for issue [#218](https://github.com/gotgenes/pi-packages/issues/218) ([80be50e](https://github.com/gotgenes/pi-packages/commit/80be50e1b6ddf19f743010bd4c3cdf232d901cf1))
1072
+ * **retro:** add retro notes for issue [#217](https://github.com/gotgenes/pi-packages/issues/217) ([2140655](https://github.com/gotgenes/pi-packages/commit/21406555e34fbe0d41f48206e3208e1cb7326633))
1073
+ * **retro:** add TDD stage notes for issue [#218](https://github.com/gotgenes/pi-packages/issues/218) ([86b4f94](https://github.com/gotgenes/pi-packages/commit/86b4f946d7498e96dbb2b4c513d0ea6331fc5f8c))
1074
+
1075
+ ## [7.7.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.6.0...pi-subagents-v7.7.0) (2026-05-26)
1076
+
1077
+
1078
+ ### Features
1079
+
1080
+ * extract writeAgentFile overwrite-guard function ([#217](https://github.com/gotgenes/pi-packages/issues/217)) ([141df78](https://github.com/gotgenes/pi-packages/commit/141df784ea5cf6c5286a1a6e9861daa259fa4e1c))
1081
+
1082
+
1083
+ ### Documentation
1084
+
1085
+ * add Phase 14 roadmap — Agent domain model, scheduling extraction ([#227](https://github.com/gotgenes/pi-packages/issues/227)–[#232](https://github.com/gotgenes/pi-packages/issues/232)) ([089d9e0](https://github.com/gotgenes/pi-packages/commit/089d9e0becde693c2795ca590d987a4d2b169edc))
1086
+ * plan extract overwrite guard from UI ([#217](https://github.com/gotgenes/pi-packages/issues/217)) ([89de32c](https://github.com/gotgenes/pi-packages/commit/89de32c6a1bbb84fb0e252fecaa6edf79dc9b5b3))
1087
+ * **retro:** add planning stage notes for issue [#217](https://github.com/gotgenes/pi-packages/issues/217) ([b1a854f](https://github.com/gotgenes/pi-packages/commit/b1a854f18ad133542c5f3e3ab4400ed753ba7c8c))
1088
+ * **retro:** add retro notes for issue [#216](https://github.com/gotgenes/pi-packages/issues/216) ([dcb86ea](https://github.com/gotgenes/pi-packages/commit/dcb86eace93d2f68acf39d6f0b8e7d64aaf982d1))
1089
+ * **retro:** add TDD stage notes for issue [#217](https://github.com/gotgenes/pi-packages/issues/217) ([7305a28](https://github.com/gotgenes/pi-packages/commit/7305a281f89258d8898fb13f02ba051b58513a71))
1090
+ * update architecture for writeAgentFile extraction ([#217](https://github.com/gotgenes/pi-packages/issues/217)) ([298a819](https://github.com/gotgenes/pi-packages/commit/298a8196de5b8dc507bb08ead57a6c712a50c3f0))
1091
+
1092
+ ## [7.6.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.5.1...pi-subagents-v7.6.0) (2026-05-26)
1093
+
1094
+
1095
+ ### Features
1096
+
1097
+ * add WorktreeState.performCleanup for self-cleanup ([#216](https://github.com/gotgenes/pi-packages/issues/216)) ([ad0583a](https://github.com/gotgenes/pi-packages/commit/ad0583a9c26b6782af2a55ea86e72f3c3474ebe7))
1098
+
1099
+
1100
+ ### Documentation
1101
+
1102
+ * plan decompose startAgent via RunHandle lifecycle object ([#216](https://github.com/gotgenes/pi-packages/issues/216)) ([2689571](https://github.com/gotgenes/pi-packages/commit/268957175c2aaa03da98c99778c6ff67e0bf45e3))
1103
+ * **retro:** add planning stage notes for issue [#216](https://github.com/gotgenes/pi-packages/issues/216) ([06daa19](https://github.com/gotgenes/pi-packages/commit/06daa1923d75aae8aec1ddd492486c951e50a23f))
1104
+ * **retro:** add retro notes for issue [#215](https://github.com/gotgenes/pi-packages/issues/215) ([57f7cf9](https://github.com/gotgenes/pi-packages/commit/57f7cf9139ce3d77f2ec91541bc67cd78c57bdb8))
1105
+ * **retro:** add TDD stage notes for issue [#216](https://github.com/gotgenes/pi-packages/issues/216) ([4001da1](https://github.com/gotgenes/pi-packages/commit/4001da1faecc15d2c2c92e7fd69788d908ef5ad8))
1106
+ * update architecture doc for [#216](https://github.com/gotgenes/pi-packages/issues/216) RunHandle decomposition ([8ad4a2a](https://github.com/gotgenes/pi-packages/commit/8ad4a2a2d25acdf7f2cd544f6b3cd3949edbc471))
1107
+
1108
+ ## [7.5.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.5.0...pi-subagents-v7.5.1) (2026-05-26)
1109
+
1110
+
1111
+ ### Documentation
1112
+
1113
+ * plan decompose buildParentContext ([#215](https://github.com/gotgenes/pi-packages/issues/215)) ([9103609](https://github.com/gotgenes/pi-packages/commit/910360991b50c320927c1457bfef6b7cb5624b7b))
1114
+ * **retro:** add planning stage notes for issue [#215](https://github.com/gotgenes/pi-packages/issues/215) ([5c534d5](https://github.com/gotgenes/pi-packages/commit/5c534d5efb640ef1d72d6ccf7bf2e15ac2acf755))
1115
+ * **retro:** add TDD stage notes for issue [#215](https://github.com/gotgenes/pi-packages/issues/215) ([79064d0](https://github.com/gotgenes/pi-packages/commit/79064d072c36c2f92013dbfba58ce1de1ab01bce))
1116
+
1117
+ ## [7.5.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.4.0...pi-subagents-v7.5.0) (2026-05-26)
1118
+
1119
+
1120
+ ### Features
1121
+
1122
+ * add permission bridge for cross-extension registration ([#101](https://github.com/gotgenes/pi-packages/issues/101)) ([1827720](https://github.com/gotgenes/pi-packages/commit/18277203f7ee10e56f90a0d4db587a4aa95376ab))
1123
+ * register child sessions with permission system ([#101](https://github.com/gotgenes/pi-packages/issues/101)) ([0487828](https://github.com/gotgenes/pi-packages/commit/04878286d7da6660362360482fb916b1b3743ce3))
1124
+
1125
+
1126
+ ### Bug Fixes
1127
+
1128
+ * resolve pre-existing lint errors in pi-autoformat and pi-permission-system ([68fd516](https://github.com/gotgenes/pi-packages/commit/68fd516e33ddbb9a5e37ef19e949ee9ecdc37252))
1129
+
1130
+
1131
+ ### Documentation
1132
+
1133
+ * document permission-bridge in architecture ([#101](https://github.com/gotgenes/pi-packages/issues/101)) ([d0120ab](https://github.com/gotgenes/pi-packages/commit/d0120abdf049e2aeba14ba75071ed55b24e23dbe))
1134
+ * update subagent integration docs for native permission bridge ([#101](https://github.com/gotgenes/pi-packages/issues/101)) ([0bd456b](https://github.com/gotgenes/pi-packages/commit/0bd456befa8ea6918e74f4393d844868795edc77))
1135
+
1136
+ ## [7.4.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.3.2...pi-subagents-v7.4.0) (2026-05-25)
1137
+
1138
+
1139
+ ### Features
1140
+
1141
+ * add model attribution to formatAssistantMessage ([76f2ada](https://github.com/gotgenes/pi-packages/commit/76f2adaa6bad9d1a3b15a3ba208b3ab96e07ecd1))
1142
+ * add model attribution to getAgentConversation ([c186c37](https://github.com/gotgenes/pi-packages/commit/c186c370b975e5ef6596d9a3d7719c720a580640))
1143
+
1144
+
1145
+ ### Documentation
1146
+
1147
+ * **retro:** add retro notes for issue [#214](https://github.com/gotgenes/pi-packages/issues/214) ([7e39c96](https://github.com/gotgenes/pi-packages/commit/7e39c96563517661c1c8c7f250402115b232a097))
1148
+
1149
+ ## [7.3.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.3.1...pi-subagents-v7.3.2) (2026-05-25)
1150
+
1151
+
1152
+ ### Documentation
1153
+
1154
+ * mark Phase 13 Step 1 complete ([8d62590](https://github.com/gotgenes/pi-packages/commit/8d62590aeded8aba25df96ea2fbba6581572eaf7))
1155
+ * **pi-subagents:** link Phase 13 issues [#214](https://github.com/gotgenes/pi-packages/issues/214)–[#219](https://github.com/gotgenes/pi-packages/issues/219) in architecture roadmap ([636a1e5](https://github.com/gotgenes/pi-packages/commit/636a1e500319b9ce1007c0a571dd13199cdd2606))
1156
+ * **pi-subagents:** propose Phase 13 improvement roadmap ([caf2a53](https://github.com/gotgenes/pi-packages/commit/caf2a5376c69744db1743a9362096e764d9524b1))
1157
+ * plan convert remaining closure factories to classes ([#214](https://github.com/gotgenes/pi-packages/issues/214)) ([2225920](https://github.com/gotgenes/pi-packages/commit/222592007e2ce29d5e6d5678a303f6cb781dae39))
1158
+ * **retro:** add planning stage notes for issue [#214](https://github.com/gotgenes/pi-packages/issues/214) ([3072e61](https://github.com/gotgenes/pi-packages/commit/3072e618f08080065ef9f3c7520ff44e8dbc84b4))
1159
+ * **retro:** add retro notes for issue [#208](https://github.com/gotgenes/pi-packages/issues/208) ([1436396](https://github.com/gotgenes/pi-packages/commit/1436396d71e79cbbf519877e9dc899000ebd0001))
1160
+ * **retro:** add TDD stage notes for issue [#214](https://github.com/gotgenes/pi-packages/issues/214) ([201e1eb](https://github.com/gotgenes/pi-packages/commit/201e1ebbaba66e0d83cc006ef77b711c22fb1bb8))
1161
+
1162
+ ## [7.3.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.3.0...pi-subagents-v7.3.1) (2026-05-25)
1163
+
1164
+
1165
+ ### Bug Fixes
1166
+
1167
+ * add parameter type annotations to shared test fixture factories ([2953adc](https://github.com/gotgenes/pi-packages/commit/2953adc5761dd4aa2d3c592ea5f8856161e01e3a))
1168
+
1169
+
1170
+ ### Documentation
1171
+
1172
+ * plan extract shared test fixtures ([#208](https://github.com/gotgenes/pi-packages/issues/208)) ([22fafed](https://github.com/gotgenes/pi-packages/commit/22fafed860134f00f1b5d6cb7c87fa42be7dcf09))
1173
+ * **retro:** add planning stage notes for issue [#208](https://github.com/gotgenes/pi-packages/issues/208) ([aaa9d5d](https://github.com/gotgenes/pi-packages/commit/aaa9d5d0a4654b2ebb25a7ad4d11a3a54db7c206))
1174
+ * **retro:** add retro notes for issue [#207](https://github.com/gotgenes/pi-packages/issues/207) ([3b97a5c](https://github.com/gotgenes/pi-packages/commit/3b97a5c5b3fbb98a78ba280fbdbbdf55f61d82fc))
1175
+ * **retro:** add TDD stage notes for issue [#208](https://github.com/gotgenes/pi-packages/issues/208) ([65d0606](https://github.com/gotgenes/pi-packages/commit/65d0606167e531518bd8de4d33f91c6080e21723))
1176
+ * update Phase 12 Step 4 to reference test/helpers/ ([8e9e406](https://github.com/gotgenes/pi-packages/commit/8e9e406bfe12487f67363b223d037664f842acce))
1177
+
1178
+ ## [7.3.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.2.8...pi-subagents-v7.3.0) (2026-05-25)
1179
+
1180
+
1181
+ ### Features
1182
+
1183
+ * extract assembleWidgetState from agent-widget update ([c63fdac](https://github.com/gotgenes/pi-packages/commit/c63fdacdb184f989598ebafbf595cc9c01c9d3a0))
1184
+
1185
+
1186
+ ### Documentation
1187
+
1188
+ * plan decompose update in agent-widget.ts ([#207](https://github.com/gotgenes/pi-packages/issues/207)) ([5ae2e74](https://github.com/gotgenes/pi-packages/commit/5ae2e74385753cd8e68504f767539aff019e5d08))
1189
+ * plan decompose update in agent-widget.ts ([#207](https://github.com/gotgenes/pi-packages/issues/207)) ([fb30d98](https://github.com/gotgenes/pi-packages/commit/fb30d98fc0fcc2c3cd6f016b78251cdb4caf6d96))
1190
+ * **retro:** add planning stage notes for issue [#207](https://github.com/gotgenes/pi-packages/issues/207) ([1624d2d](https://github.com/gotgenes/pi-packages/commit/1624d2d4aef5fee77db319940de7e2a3e93a8a27))
1191
+ * **retro:** add planning stage notes for issue [#207](https://github.com/gotgenes/pi-packages/issues/207) ([931ff0e](https://github.com/gotgenes/pi-packages/commit/931ff0ea3810d87a35f49b3b671d1ef4d88d55f7))
1192
+ * **retro:** add TDD stage notes for issue [#207](https://github.com/gotgenes/pi-packages/issues/207) ([770940a](https://github.com/gotgenes/pi-packages/commit/770940a3ff5c6b7ddd84ac35a4352ffc6c7c189e))
1193
+ * update complexity hotspots after widget decomposition ([5848a17](https://github.com/gotgenes/pi-packages/commit/5848a173158f13fa58ccd357edf9a310559f92e1))
1194
+
1195
+ ## [7.2.8](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.2.7...pi-subagents-v7.2.8) (2026-05-25)
1196
+
1197
+
1198
+ ### Performance Improvements
1199
+
1200
+ * remove &lt;inherited_system_prompt&gt; wrapper to maximise KV cache reuse ([#180](https://github.com/gotgenes/pi-packages/issues/180)) ([f35e7b1](https://github.com/gotgenes/pi-packages/commit/f35e7b1b4309f91656677932c201d762c4be5cf3))
1201
+
1202
+
1203
+ ### Documentation
1204
+
1205
+ * **retro:** add retro notes for issue [#206](https://github.com/gotgenes/pi-packages/issues/206) ([f439057](https://github.com/gotgenes/pi-packages/commit/f439057bd42edc018df8ddd94783f8a9c89968e0))
1206
+
1207
+ ## [7.2.7](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.2.6...pi-subagents-v7.2.7) (2026-05-25)
1208
+
1209
+
1210
+ ### Documentation
1211
+
1212
+ * plan decompose showAgentDetail ([#206](https://github.com/gotgenes/pi-packages/issues/206)) ([fe575a0](https://github.com/gotgenes/pi-packages/commit/fe575a0f2727bdcdaa4dd977f7b2db4d6cb6e9f3))
1213
+ * **retro:** add planning stage notes for issue [#206](https://github.com/gotgenes/pi-packages/issues/206) ([057bbb6](https://github.com/gotgenes/pi-packages/commit/057bbb666b8d1c89d70936a837fc028512368fcc))
1214
+ * **retro:** add retro notes for issue [#205](https://github.com/gotgenes/pi-packages/issues/205) ([b9abe3b](https://github.com/gotgenes/pi-packages/commit/b9abe3ba050468d71015eb77262afb4093c8289f))
1215
+ * **retro:** add TDD stage notes for issue [#206](https://github.com/gotgenes/pi-packages/issues/206) ([88fdfc2](https://github.com/gotgenes/pi-packages/commit/88fdfc222950ce63e0a8f9273d3bff234ffa0538))
1216
+ * update complexity table after showAgentDetail decomposition ([8d8a396](https://github.com/gotgenes/pi-packages/commit/8d8a396bbfbe0e4d86dc37aceb53df613868bd26))
1217
+
1218
+ ## [7.2.6](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.2.5...pi-subagents-v7.2.6) (2026-05-25)
1219
+
1220
+
1221
+ ### Documentation
1222
+
1223
+ * archive Phase 11 to history, add Phase 11 to refactoring table ([2c617f2](https://github.com/gotgenes/pi-packages/commit/2c617f2c752ea935d55878ba58fce997985086b5))
1224
+ * plan decompose renderWidgetLines ([#205](https://github.com/gotgenes/pi-packages/issues/205)) ([88d09cd](https://github.com/gotgenes/pi-packages/commit/88d09cdad53bc3f215c069b8d6da6a44e10b5af7))
1225
+ * **retro:** add planning stage notes for issue [#205](https://github.com/gotgenes/pi-packages/issues/205) ([14afc1f](https://github.com/gotgenes/pi-packages/commit/14afc1ff82d61828fdac9373f31cb68ebfc1a2e7))
1226
+ * **retro:** add retro notes for issue [#196](https://github.com/gotgenes/pi-packages/issues/196) ([cfc7d94](https://github.com/gotgenes/pi-packages/commit/cfc7d94f72b120a4550f73e2d1cf00822db759c2))
1227
+ * **retro:** add TDD stage notes for issue [#205](https://github.com/gotgenes/pi-packages/issues/205) ([a676078](https://github.com/gotgenes/pi-packages/commit/a6760789898435e5b552941124de6f32be21407e))
1228
+
1229
+ ## [7.2.5](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.2.4...pi-subagents-v7.2.5) (2026-05-25)
1230
+
1231
+
1232
+ ### Documentation
1233
+
1234
+ * mark Phase 11 Layer 3 and Layer 4 complete ([bf71795](https://github.com/gotgenes/pi-packages/commit/bf71795649a5b3c14a2b3ff16b2109d131a0ed32))
1235
+ * plan convert AgentRunner and AgentsMenuHandler to classes ([#196](https://github.com/gotgenes/pi-packages/issues/196)) ([cd0bd1f](https://github.com/gotgenes/pi-packages/commit/cd0bd1fdec0c87655bdb38f8243084df807b676a))
1236
+ * **retro:** add planning stage notes for issue [#196](https://github.com/gotgenes/pi-packages/issues/196) ([677d4bf](https://github.com/gotgenes/pi-packages/commit/677d4bf6619f13eba8d17181efab04cc67e47bbd))
1237
+ * **retro:** add TDD stage notes for issue [#196](https://github.com/gotgenes/pi-packages/issues/196) ([72d24ba](https://github.com/gotgenes/pi-packages/commit/72d24ba56b8dc7668ff350ad3f0ba027b996d26e))
1238
+
1239
+ ## [7.2.4](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.2.3...pi-subagents-v7.2.4) (2026-05-25)
1240
+
1241
+
1242
+ ### Documentation
1243
+
1244
+ * **retro:** add retro notes for issue [#195](https://github.com/gotgenes/pi-packages/issues/195) ([d591201](https://github.com/gotgenes/pi-packages/commit/d591201e0dcf88a73cfd2843c9f4eb5ec9b0e9b6))
1245
+
1246
+ ## [7.2.3](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.2.2...pi-subagents-v7.2.3) (2026-05-25)
1247
+
1248
+
1249
+ ### Bug Fixes
1250
+
1251
+ * enforce fallow dead-code gate in CI ([#195](https://github.com/gotgenes/pi-packages/issues/195)) ([b1bd734](https://github.com/gotgenes/pi-packages/commit/b1bd734e1d2f5921521bebb1735db8f8c402b53b))
1252
+
1253
+ ## [7.2.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.2.1...pi-subagents-v7.2.2) (2026-05-25)
1254
+
1255
+
1256
+ ### Bug Fixes
1257
+
1258
+ * remove unused AgentSession import and over-annotated mock return type in get-result-tool ([c3bc590](https://github.com/gotgenes/pi-packages/commit/c3bc59015e766d961422f4a7ecd23643c4cabefd))
1259
+
1260
+
1261
+ ### Documentation
1262
+
1263
+ * mark [#195](https://github.com/gotgenes/pi-packages/issues/195) tool factory conversions complete in architecture roadmap ([cb5562b](https://github.com/gotgenes/pi-packages/commit/cb5562b57ef613ab0c1e136c9d9712c71e831bcd))
1264
+ * plan convert tool factories to classes ([#195](https://github.com/gotgenes/pi-packages/issues/195)) ([ec916c2](https://github.com/gotgenes/pi-packages/commit/ec916c22a9d5f3453fba5784e3d2f5ecdc68740d))
1265
+ * **retro:** add planning stage notes for issue [#195](https://github.com/gotgenes/pi-packages/issues/195) ([2ca0c96](https://github.com/gotgenes/pi-packages/commit/2ca0c964f8e73b0b0247daf9834986a9344be060))
1266
+ * **retro:** add retro notes for issue [#194](https://github.com/gotgenes/pi-packages/issues/194) ([d7d973f](https://github.com/gotgenes/pi-packages/commit/d7d973f88ca48cf1a19b24bd396ef15a606a98bc))
1267
+ * **retro:** add TDD stage notes for issue [#195](https://github.com/gotgenes/pi-packages/issues/195) ([921b1f8](https://github.com/gotgenes/pi-packages/commit/921b1f8e500baf9b2fffeb140336d4561bdaebf1))
1268
+
1269
+ ## [7.2.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.2.0...pi-subagents-v7.2.1) (2026-05-25)
1270
+
1271
+
1272
+ ### Documentation
1273
+
1274
+ * mark Layer 2 done and update health metrics in architecture doc ([ad00426](https://github.com/gotgenes/pi-packages/commit/ad00426f0f29ceff0915033419fdc2f1b53755b0))
1275
+ * plan align tool interfaces for structural typing ([#194](https://github.com/gotgenes/pi-packages/issues/194)) ([36e56b0](https://github.com/gotgenes/pi-packages/commit/36e56b08351893e3c2d63569e7cfa140c172e20b))
1276
+ * **retro:** add planning stage notes for issue [#194](https://github.com/gotgenes/pi-packages/issues/194) ([63a5763](https://github.com/gotgenes/pi-packages/commit/63a5763ed2bf4c2a6e2e9a19fdcdce71a2a9905a))
1277
+ * **retro:** add retro notes for issue [#193](https://github.com/gotgenes/pi-packages/issues/193) ([8987f90](https://github.com/gotgenes/pi-packages/commit/8987f907e00bb70429782c947a2afbdb1db5faa9))
1278
+ * **retro:** add TDD stage notes for issue [#194](https://github.com/gotgenes/pi-packages/issues/194) ([f692323](https://github.com/gotgenes/pi-packages/commit/f69232395882c07d6d95273e08021b94800f0e43))
1279
+
1280
+ ## [7.2.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.1.0...pi-subagents-v7.2.0) (2026-05-25)
1281
+
1282
+
1283
+ ### Features
1284
+
1285
+ * SubagentRuntime stores typed SessionContext and owns context queries ([#193](https://github.com/gotgenes/pi-packages/issues/193)) ([4ca5319](https://github.com/gotgenes/pi-packages/commit/4ca531934e36c37c7cbc8fef8314a483e7dec479))
1286
+
1287
+
1288
+ ### Documentation
1289
+
1290
+ * mark Phase 11 Layer 1 complete, update metrics ([#193](https://github.com/gotgenes/pi-packages/issues/193)) ([32233ed](https://github.com/gotgenes/pi-packages/commit/32233ed89f27dca854ce858978c3acc029b1e801))
1291
+ * plan SubagentRuntime owns context queries ([#193](https://github.com/gotgenes/pi-packages/issues/193)) ([6ea475a](https://github.com/gotgenes/pi-packages/commit/6ea475af94f8456c1d665adcd007dd2833ab7a4b))
1292
+ * **retro:** add planning stage notes for issue [#193](https://github.com/gotgenes/pi-packages/issues/193) ([7da6d5a](https://github.com/gotgenes/pi-packages/commit/7da6d5abac82bdea0cbdbc8677dda04d38a7887d))
1293
+ * **retro:** add retro notes for issue [#192](https://github.com/gotgenes/pi-packages/issues/192) ([1223de4](https://github.com/gotgenes/pi-packages/commit/1223de4a68d4514eb504c5c95d64fb35500d286b))
1294
+ * **retro:** add TDD stage notes for issue [#193](https://github.com/gotgenes/pi-packages/issues/193) ([3950b81](https://github.com/gotgenes/pi-packages/commit/3950b81228a3db57eb4c24236fa7d75c638a335a))
1295
+
1296
+ ## [7.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v7.0.0...pi-subagents-v7.1.0) (2026-05-24)
1297
+
1298
+
1299
+ ### Features
1300
+
1301
+ * **pi-subagents:** define SessionContext narrow interface ([#192](https://github.com/gotgenes/pi-packages/issues/192)) ([a043d4d](https://github.com/gotgenes/pi-packages/commit/a043d4d970a8aacc084a125d9a07b860a7fb6e9b))
1302
+
1303
+
1304
+ ### Documentation
1305
+
1306
+ * **pi-subagents:** archive Phase 10, propose Phase 11 roadmap ([d474eef](https://github.com/gotgenes/pi-packages/commit/d474eef98c1a39757d933da291725ff126f1b8ac))
1307
+ * **pi-subagents:** revise Phase 11 roadmap — layered class conversion ([35d1083](https://github.com/gotgenes/pi-packages/commit/35d1083445aece783e344c37fc949395e190f9e5))
1308
+ * plan SessionContext narrow interface ([#192](https://github.com/gotgenes/pi-packages/issues/192)) ([95cb16e](https://github.com/gotgenes/pi-packages/commit/95cb16e46aa630ecc34f423aaaa4ff02845ed5b5))
1309
+ * **retro:** add planning stage notes for issue [#192](https://github.com/gotgenes/pi-packages/issues/192) ([31fd729](https://github.com/gotgenes/pi-packages/commit/31fd7290985b0ef1d240cd5afd5e0e0e7eec9131))
1310
+ * **retro:** add retro notes for issue [#185](https://github.com/gotgenes/pi-packages/issues/185) ([66e49cf](https://github.com/gotgenes/pi-packages/commit/66e49cfb4129b9bba3b78e0850402bc61d99dda8))
1311
+ * **retro:** add TDD stage notes for issue [#192](https://github.com/gotgenes/pi-packages/issues/192) ([6cf3f95](https://github.com/gotgenes/pi-packages/commit/6cf3f95f6c39f3f81c1d335348d5abd74d948ff3))
1312
+
1313
+ ## [7.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.19.1...pi-subagents-v7.0.0) (2026-05-24)
1314
+
1315
+
1316
+ ### ⚠ BREAKING CHANGES
1317
+
1318
+ * `src/session/memory.ts` and all persistent agent memory functionality (MEMORY.md, agent-memory directories) are removed from pi-subagents. This is scope reduction — agent spawning, execution, and result retrieval remain.
1319
+ * `MemoryScope` is no longer exported from the package. The `memory` field is removed from `AgentConfig`. Custom agent .md files with a `memory:` frontmatter key will have it silently ignored.
1320
+ * The `memory` field in agent configuration no longer has any effect. Memory block injection, memory tool augmentation, and the `AssemblerIO.buildMemoryBlock` / `buildReadOnlyMemoryBlock` collaborators are removed from the session assembler.
1321
+
1322
+ ### Features
1323
+
1324
+ * delete memory module ([78ace55](https://github.com/gotgenes/pi-packages/commit/78ace558b1988bce8e002b28fe3152c5de708b84))
1325
+ * remove memory from session assembly and config layers ([6ebeb91](https://github.com/gotgenes/pi-packages/commit/6ebeb91f28c56c1d21fc4e1a7b6bededa8eba025))
1326
+ * remove MemoryScope type and memory config field ([d6e3bcb](https://github.com/gotgenes/pi-packages/commit/d6e3bcbb58902133a3704d89d88b548f8f2a4769))
1327
+
1328
+
1329
+ ### Documentation
1330
+
1331
+ * plan remove persistent agent memory ([#185](https://github.com/gotgenes/pi-packages/issues/185)) ([0f6b3ad](https://github.com/gotgenes/pi-packages/commit/0f6b3adb6c35c3879c5d1e176e1c6d9da36a5cf1))
1332
+ * **retro:** add planning stage notes for issue [#185](https://github.com/gotgenes/pi-packages/issues/185) ([58dcfbc](https://github.com/gotgenes/pi-packages/commit/58dcfbc3124ec7695048ad3df8fc6f397a883d1a))
1333
+ * **retro:** add retro notes for issue [#188](https://github.com/gotgenes/pi-packages/issues/188) ([8eeaf6b](https://github.com/gotgenes/pi-packages/commit/8eeaf6b52f7b40a2126f3ffa3ca01a8e3b84f338))
1334
+ * **retro:** add TDD stage notes for issue [#185](https://github.com/gotgenes/pi-packages/issues/185) ([8e75b18](https://github.com/gotgenes/pi-packages/commit/8e75b18b2c87b47f1a29df9d2c544a8ad2023f9f))
1335
+ * update architecture after memory removal ([52716d5](https://github.com/gotgenes/pi-packages/commit/52716d5f89b729ce183d4a450d8539e6cabdbadc))
1336
+
1337
+ ## [6.19.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.19.0...pi-subagents-v6.19.1) (2026-05-24)
1338
+
1339
+
1340
+ ### Documentation
1341
+
1342
+ * plan replace any casts with SDK types ([#188](https://github.com/gotgenes/pi-packages/issues/188)) ([96207da](https://github.com/gotgenes/pi-packages/commit/96207dacf0035db11605d55a61132cf43f7c3b40))
1343
+ * **retro:** add planning stage notes for issue [#188](https://github.com/gotgenes/pi-packages/issues/188) ([6e38b12](https://github.com/gotgenes/pi-packages/commit/6e38b128a5bbaad3ca81b31adbf390482081a41e))
1344
+ * **retro:** add retro notes for issue [#172](https://github.com/gotgenes/pi-packages/issues/172) ([270c00a](https://github.com/gotgenes/pi-packages/commit/270c00a5f84bf454352443a6c57a6076803090c6))
1345
+ * **retro:** add TDD stage notes for issue [#188](https://github.com/gotgenes/pi-packages/issues/188) ([8a5f51a](https://github.com/gotgenes/pi-packages/commit/8a5f51a2fd02a143e85f176417b31af4a11b34f4))
1346
+
1347
+ ## [6.19.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.18.8...pi-subagents-v6.19.0) (2026-05-24)
1348
+
1349
+
1350
+ ### Features
1351
+
1352
+ * extract shared content-item parsing into session/content-items ([5ed0d1c](https://github.com/gotgenes/pi-packages/commit/5ed0d1c6291d9044e1ab85c637b1e5f0051789f3))
1353
+ * extract shared content-item parsing into session/content-items ([413fda0](https://github.com/gotgenes/pi-packages/commit/413fda0cc8bb496a79285d0ec97c97d9b0b6cc6d))
1354
+
1355
+
1356
+ ### Documentation
1357
+
1358
+ * mark step 9 (extract turn-formatting) done in architecture ([04a0b55](https://github.com/gotgenes/pi-packages/commit/04a0b554b8848adc0f43b8939fa866086282a6af))
1359
+ * plan extract shared turn-formatting logic ([#172](https://github.com/gotgenes/pi-packages/issues/172)) ([818affe](https://github.com/gotgenes/pi-packages/commit/818affe22457cfbc1cabc5d4e7477e9391b3ed46))
1360
+ * **retro:** add planning stage notes for issue [#172](https://github.com/gotgenes/pi-packages/issues/172) ([809b4cf](https://github.com/gotgenes/pi-packages/commit/809b4cf4dd9f59f1c57eb0776835af88e0cef8f4))
1361
+ * **retro:** add retro notes for issue [#171](https://github.com/gotgenes/pi-packages/issues/171) ([2b50b37](https://github.com/gotgenes/pi-packages/commit/2b50b374f9d99305144bc6227eb48e3a9d68efb3))
1362
+
1363
+ ## [6.18.8](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.18.7...pi-subagents-v6.18.8) (2026-05-24)
1364
+
1365
+
1366
+ ### Documentation
1367
+
1368
+ * plan reduce renderResult complexity ([#171](https://github.com/gotgenes/pi-packages/issues/171)) ([340c410](https://github.com/gotgenes/pi-packages/commit/340c4107a8b4b39c39a3bf9d04b83b445db5982d))
1369
+ * **retro:** add planning stage notes for issue [#171](https://github.com/gotgenes/pi-packages/issues/171) ([509300b](https://github.com/gotgenes/pi-packages/commit/509300bb6de499ed7f7272a0336945674f1e4df3))
1370
+ * **retro:** add retro note for issue [#171](https://github.com/gotgenes/pi-packages/issues/171) ([f8e53f1](https://github.com/gotgenes/pi-packages/commit/f8e53f11ef69fe90df2c84156846811d997d5fcd))
1371
+ * **retro:** add retro notes for issue [#170](https://github.com/gotgenes/pi-packages/issues/170) ([da2a6a7](https://github.com/gotgenes/pi-packages/commit/da2a6a7e9855b1e79d7d9d3a096b0e4788bce42d))
1372
+ * **retro:** add TDD stage notes for issue [#171](https://github.com/gotgenes/pi-packages/issues/171) ([0621901](https://github.com/gotgenes/pi-packages/commit/0621901b6a7b33951e96bd1814448dacf72400fb))
1373
+ * update architecture and skill for result-renderer ([#171](https://github.com/gotgenes/pi-packages/issues/171)) ([1510dc7](https://github.com/gotgenes/pi-packages/commit/1510dc77f1adafab9793cc067a91ec9b9e1cf6c3))
1374
+ * update architecture for result-renderer extraction ([#171](https://github.com/gotgenes/pi-packages/issues/171)) ([1183522](https://github.com/gotgenes/pi-packages/commit/11835223615fdcf4bdbe34d367278d7ed240c901))
1375
+
1376
+ ## [6.18.7](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.18.6...pi-subagents-v6.18.7) (2026-05-24)
1377
+
1378
+
1379
+ ### Documentation
1380
+
1381
+ * plan reduce buildContentLines complexity ([#170](https://github.com/gotgenes/pi-packages/issues/170)) ([9912d16](https://github.com/gotgenes/pi-packages/commit/9912d16a375aef3fcf39148f0fc6e0c7ca761f31))
1382
+ * **retro:** add planning stage notes for issue [#170](https://github.com/gotgenes/pi-packages/issues/170) ([3ed1b75](https://github.com/gotgenes/pi-packages/commit/3ed1b7570af3e6569015570c657dc7ea1fe583f4))
1383
+ * **retro:** add retro notes for issue [#169](https://github.com/gotgenes/pi-packages/issues/169) ([419c451](https://github.com/gotgenes/pi-packages/commit/419c451f285564f98a0ba11dddb215f38ad541c3))
1384
+ * **retro:** add TDD stage notes for issue [#170](https://github.com/gotgenes/pi-packages/issues/170) ([75b3253](https://github.com/gotgenes/pi-packages/commit/75b325393be083eca02cf1db3a872a504ba03e53))
1385
+ * update architecture for message-formatters extraction ([#170](https://github.com/gotgenes/pi-packages/issues/170)) ([1005354](https://github.com/gotgenes/pi-packages/commit/1005354d6faf632ff617acdc679660cffd3afbe2))
1386
+
1387
+ ## [6.18.6](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.18.5...pi-subagents-v6.18.6) (2026-05-24)
1388
+
1389
+
1390
+ ### Documentation
1391
+
1392
+ * plan extract RunContext from RunOptions ([#169](https://github.com/gotgenes/pi-packages/issues/169)) ([ca12b2e](https://github.com/gotgenes/pi-packages/commit/ca12b2ebd116cb50c6e12d2d3fe3a87ff997d6d6))
1393
+ * **retro:** add planning stage notes for issue [#169](https://github.com/gotgenes/pi-packages/issues/169) ([05b0176](https://github.com/gotgenes/pi-packages/commit/05b01764a4aaa885efca9d061abf6bacb384057c))
1394
+ * **retro:** add retro notes for issue [#168](https://github.com/gotgenes/pi-packages/issues/168) ([dfe46ed](https://github.com/gotgenes/pi-packages/commit/dfe46ed5b5ee62371912dbbc6227443adee8e67b))
1395
+ * **retro:** add TDD stage notes for issue [#169](https://github.com/gotgenes/pi-packages/issues/169) ([84c0d8d](https://github.com/gotgenes/pi-packages/commit/84c0d8d5ef0a94750c470e3f10b3ab589caac794))
1396
+ * update architecture doc for RunContext extraction ([#169](https://github.com/gotgenes/pi-packages/issues/169)) ([ea49fe1](https://github.com/gotgenes/pi-packages/commit/ea49fe1b9c316e6541814de821738d6d121c4d13))
1397
+ * update RunOptions field references in comments ([#169](https://github.com/gotgenes/pi-packages/issues/169)) ([fd9c3ed](https://github.com/gotgenes/pi-packages/commit/fd9c3ed0e0b01c45136c8f34d8f31a89564e8061))
1398
+
1399
+ ## [6.18.5](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.18.4...pi-subagents-v6.18.5) (2026-05-24)
1400
+
1401
+
1402
+ ### Documentation
1403
+
1404
+ * mark ToolFilterConfig extraction done in architecture doc ([#168](https://github.com/gotgenes/pi-packages/issues/168)) ([686c33e](https://github.com/gotgenes/pi-packages/commit/686c33ed107e1ec1ec56c73441b1551bf59bff3f))
1405
+ * plan extract ToolFilterConfig from SessionConfig ([#168](https://github.com/gotgenes/pi-packages/issues/168)) ([beaaeb4](https://github.com/gotgenes/pi-packages/commit/beaaeb41588bb93739b5ba6959c12202efbe7862))
1406
+ * **retro:** add planning stage notes for issue [#168](https://github.com/gotgenes/pi-packages/issues/168) ([7086139](https://github.com/gotgenes/pi-packages/commit/70861390a6190653d499c720fc298972e03967aa))
1407
+ * **retro:** add retro notes for issue [#167](https://github.com/gotgenes/pi-packages/issues/167) ([cc96edd](https://github.com/gotgenes/pi-packages/commit/cc96edd20994a48ee2f824ea9136fa0da83e4c23))
1408
+ * **retro:** add TDD stage notes for issue [#168](https://github.com/gotgenes/pi-packages/issues/168) ([8a14bf7](https://github.com/gotgenes/pi-packages/commit/8a14bf766e9c38c89f31468293fdafa8c79d32ea))
1409
+ * update architecture to reflect current layout and RunnerIO split ([#167](https://github.com/gotgenes/pi-packages/issues/167)) ([d4a98aa](https://github.com/gotgenes/pi-packages/commit/d4a98aaa1600c24c28dd1005e381588990ab74fd))
1410
+
1411
+ ## [6.18.4](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.18.3...pi-subagents-v6.18.4) (2026-05-24)
1412
+
1413
+
1414
+ ### Documentation
1415
+
1416
+ * mark RunnerIO split done in architecture ([#167](https://github.com/gotgenes/pi-packages/issues/167)) ([824fd72](https://github.com/gotgenes/pi-packages/commit/824fd726361f62b6696dcc62de3b0bbb9cf45711))
1417
+ * plan narrow RunnerIO into EnvironmentIO + SessionFactoryIO ([#167](https://github.com/gotgenes/pi-packages/issues/167)) ([8110fec](https://github.com/gotgenes/pi-packages/commit/8110fec44dfaf08bd93d9cbc59ad04c6cba62a84))
1418
+ * **retro:** add planning stage notes for issue [#167](https://github.com/gotgenes/pi-packages/issues/167) ([1aceff7](https://github.com/gotgenes/pi-packages/commit/1aceff77c8177093c60b90b87a3f991cb0186602))
1419
+ * **retro:** add retro notes for issue [#180](https://github.com/gotgenes/pi-packages/issues/180) ([1fcd0ac](https://github.com/gotgenes/pi-packages/commit/1fcd0ace6fd7f5ec90a8d44423b276eb351875af))
1420
+ * **retro:** add TDD stage notes for issue [#167](https://github.com/gotgenes/pi-packages/issues/167) ([870c767](https://github.com/gotgenes/pi-packages/commit/870c7670fdab831d408232c126312d0b5010d6f4))
1421
+
1422
+ ## [6.18.3](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.18.2...pi-subagents-v6.18.3) (2026-05-24)
1423
+
1424
+
1425
+ ### Performance Improvements
1426
+
1427
+ * reorder append-mode prompt for KV cache reuse ([#180](https://github.com/gotgenes/pi-packages/issues/180)) ([5f688bd](https://github.com/gotgenes/pi-packages/commit/5f688bd1d008e20987d28626c5f5d0df0f66b854))
1428
+
1429
+
1430
+ ### Documentation
1431
+
1432
+ * plan reorder append-mode prompt for KV cache reuse ([#180](https://github.com/gotgenes/pi-packages/issues/180)) ([bb0ddec](https://github.com/gotgenes/pi-packages/commit/bb0ddec8a7beb37baace5698e4fa4d09e61497d6))
1433
+ * **retro:** add planning stage notes for issue [#180](https://github.com/gotgenes/pi-packages/issues/180) ([3413158](https://github.com/gotgenes/pi-packages/commit/341315898baa09652df18731ad318c89861ec62c))
1434
+ * **retro:** add retro notes for issue [#166](https://github.com/gotgenes/pi-packages/issues/166) ([fae30ce](https://github.com/gotgenes/pi-packages/commit/fae30cec3dd99bbac490a2764a8340aa12fc171c))
1435
+ * **retro:** add TDD stage notes for issue [#180](https://github.com/gotgenes/pi-packages/issues/180) ([1560f2d](https://github.com/gotgenes/pi-packages/commit/1560f2d6f7029cbbe0cc7b1efe1aba2a243e8357))
1436
+
1437
+ ## [6.18.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.18.1...pi-subagents-v6.18.2) (2026-05-24)
1438
+
1439
+
1440
+ ### Documentation
1441
+
1442
+ * plan extract ParentSessionInfo from AgentSpawnConfig ([#166](https://github.com/gotgenes/pi-packages/issues/166)) ([aff7b35](https://github.com/gotgenes/pi-packages/commit/aff7b35c98503fbb3da6a287631a2aa5c4d498fd))
1443
+ * **retro:** add planning stage notes for issue [#166](https://github.com/gotgenes/pi-packages/issues/166) ([6138473](https://github.com/gotgenes/pi-packages/commit/613847313d56a9df8b479726d831679391bd0c1a))
1444
+ * **retro:** add retro notes for issue [#165](https://github.com/gotgenes/pi-packages/issues/165) ([2a3e70d](https://github.com/gotgenes/pi-packages/commit/2a3e70dc6b903b4c053e7f6ebc09169bc3e34bf6))
1445
+ * **retro:** add TDD stage notes for issue [#166](https://github.com/gotgenes/pi-packages/issues/166) ([2696da5](https://github.com/gotgenes/pi-packages/commit/2696da599de72f1a881577a4de8fedc57472a695))
1446
+ * update architecture doc — AgentSpawnConfig step 3 complete ([125450b](https://github.com/gotgenes/pi-packages/commit/125450ba9ea5753b4cad07ed4d1675dcdbc7e319))
1447
+
1448
+ ## [6.18.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.18.0...pi-subagents-v6.18.1) (2026-05-24)
1449
+
1450
+
1451
+ ### Documentation
1452
+
1453
+ * plan decompose ResolvedSpawnConfig ([#165](https://github.com/gotgenes/pi-packages/issues/165)) ([1b14d56](https://github.com/gotgenes/pi-packages/commit/1b14d56aaada427a7344ec22adb4bbf8d7ce0bf7))
1454
+ * **retro:** add planning stage notes for issue [#165](https://github.com/gotgenes/pi-packages/issues/165) ([8e0476a](https://github.com/gotgenes/pi-packages/commit/8e0476afa991953884455c7dd09c7ffb742cb329))
1455
+ * **retro:** add TDD stage notes for issue [#165](https://github.com/gotgenes/pi-packages/issues/165) ([68248e5](https://github.com/gotgenes/pi-packages/commit/68248e572d38ad6e0cdb61bdd22f2b46193eaac6))
1456
+
1457
+ ## [6.18.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.17.2...pi-subagents-v6.18.0) (2026-05-24)
1458
+
1459
+
1460
+ ### Features
1461
+
1462
+ * add eslint config with type-aware rules and import enforcement ([4fb3cc6](https://github.com/gotgenes/pi-packages/commit/4fb3cc678da10d350b85c464318476ba9ae99dca))
1463
+
1464
+
1465
+ ### Bug Fixes
1466
+
1467
+ * **pi-subagents:** add missing "type": "module" to package.json ([8cfd07d](https://github.com/gotgenes/pi-packages/commit/8cfd07dfbfd44f52dc43ac7ae67d5824304825ae))
1468
+
1469
+
1470
+ ### Documentation
1471
+
1472
+ * **retro:** add retro notes for issue [#164](https://github.com/gotgenes/pi-packages/issues/164) ([d8e2861](https://github.com/gotgenes/pi-packages/commit/d8e28615d6adabc86415f4d41ffd1bd90184fd0f))
1473
+
1474
+ ## [6.17.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.17.1...pi-subagents-v6.17.2) (2026-05-23)
1475
+
1476
+
1477
+ ### Bug Fixes
1478
+
1479
+ * add package.json imports field for #src/#test path aliases ([#157](https://github.com/gotgenes/pi-packages/issues/157)) ([75b4598](https://github.com/gotgenes/pi-packages/commit/75b45980810583452f7741678359c004900c8bd0))
1480
+
1481
+
1482
+ ### Documentation
1483
+
1484
+ * plan reorganize pi-subagents source into domain directories ([#164](https://github.com/gotgenes/pi-packages/issues/164)) ([40d1214](https://github.com/gotgenes/pi-packages/commit/40d1214ea806215a5a5cda092bf24de3ebb0a195))
1485
+ * **retro:** add planning stage notes for issue [#164](https://github.com/gotgenes/pi-packages/issues/164) ([947ec91](https://github.com/gotgenes/pi-packages/commit/947ec91f86de214a637e9d76348c32cb8a743dc4))
1486
+ * **retro:** add TDD stage notes for issue [#164](https://github.com/gotgenes/pi-packages/issues/164) ([3f075cd](https://github.com/gotgenes/pi-packages/commit/3f075cd01c8517e6322a98bf7c51831fce861ce2))
1487
+ * update architecture doc to reflect domain directory restructuring ([#164](https://github.com/gotgenes/pi-packages/issues/164)) ([a8c912d](https://github.com/gotgenes/pi-packages/commit/a8c912d065e6b3627ea617fadbaa95a470dfe1d5))
1488
+
1489
+ ## [6.17.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.17.0...pi-subagents-v6.17.1) (2026-05-23)
1490
+
1491
+
1492
+ ### Documentation
1493
+
1494
+ * **pi-subagents:** add issue numbers to Phase 10 roadmap ([d6cc622](https://github.com/gotgenes/pi-packages/commit/d6cc62275bb2bdd9dbe9b2516bac03bdadd280d6))
1495
+ * **pi-subagents:** hyperlink Phase 10 issue references in architecture doc ([1e2e488](https://github.com/gotgenes/pi-packages/commit/1e2e4888779496d9988036c9cbde6b728cc91a98))
1496
+ * **pi-subagents:** restructure architecture doc with domain model and diagrams ([3dcf468](https://github.com/gotgenes/pi-packages/commit/3dcf4686c636e90da6337ad5502f91450597a700))
1497
+ * **retro:** add retro notes for issue [#147](https://github.com/gotgenes/pi-packages/issues/147) ([0488655](https://github.com/gotgenes/pi-packages/commit/0488655729eff841809993f34238a688ff46acda))
1498
+ * **retro:** add retro notes for issue [#147](https://github.com/gotgenes/pi-packages/issues/147) ([e6b2810](https://github.com/gotgenes/pi-packages/commit/e6b2810431f8baef79412fec9aa6b8aa194ff257))
1499
+ * **retro:** replace retro deterministic step with sync-with-remote ([#147](https://github.com/gotgenes/pi-packages/issues/147)) ([9e9b365](https://github.com/gotgenes/pi-packages/commit/9e9b365ca3481f42ecf97c92fd4e44a4491b7573))
1500
+
1501
+ ## [6.17.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.16.3...pi-subagents-v6.17.0) (2026-05-23)
1502
+
1503
+
1504
+ ### Features
1505
+
1506
+ * inject wrapText into ConversationViewer (Phase 9, Step O) ([#147](https://github.com/gotgenes/pi-packages/issues/147)) ([2522d5b](https://github.com/gotgenes/pi-packages/commit/2522d5b82f2a29b9011f31d49f82b5f914f12f99))
1507
+
1508
+
1509
+ ### Documentation
1510
+
1511
+ * mark Step O complete in architecture doc ([#147](https://github.com/gotgenes/pi-packages/issues/147)) ([c4a6ee5](https://github.com/gotgenes/pi-packages/commit/c4a6ee5217692fc67b9a9e5b6c8586376e9e7e02))
1512
+ * plan inject wrapText into ConversationViewer ([#147](https://github.com/gotgenes/pi-packages/issues/147)) ([fe4dceb](https://github.com/gotgenes/pi-packages/commit/fe4dcebda894b0d641820e55d41e48e4a0c67c3d))
1513
+ * **retro:** add planning stage notes for issue [#147](https://github.com/gotgenes/pi-packages/issues/147) ([dce5db2](https://github.com/gotgenes/pi-packages/commit/dce5db2fc2ce2fd530bbfacd61ec40e771005768))
1514
+ * **retro:** add TDD stage notes for issue [#147](https://github.com/gotgenes/pi-packages/issues/147) ([2db1238](https://github.com/gotgenes/pi-packages/commit/2db123874d1730ac8811d44731a8f7cb052ee043))
1515
+
1516
+ ## [6.16.3](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.16.2...pi-subagents-v6.16.3) (2026-05-23)
1517
+
1518
+
1519
+ ### Documentation
1520
+
1521
+ * **retro:** add retro notes for issue [#146](https://github.com/gotgenes/pi-packages/issues/146) ([720fcb0](https://github.com/gotgenes/pi-packages/commit/720fcb07937fc62a1811e59448343d3dfbc1ab14))
1522
+
1523
+ ## [6.16.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.16.1...pi-subagents-v6.16.2) (2026-05-23)
1524
+
1525
+
1526
+ ### Documentation
1527
+
1528
+ * fix plan for narrow UI context ([#146](https://github.com/gotgenes/pi-packages/issues/146)) ([3d5b591](https://github.com/gotgenes/pi-packages/commit/3d5b591c0668ffcd9f66a6fc9a2c5d57236865af))
1529
+ * mark Step N complete in architecture doc ([#146](https://github.com/gotgenes/pi-packages/issues/146)) ([9948869](https://github.com/gotgenes/pi-packages/commit/9948869b849817dac6f221f1e90db5e47fd12d31))
1530
+ * plan narrow UI context for menu handlers ([#146](https://github.com/gotgenes/pi-packages/issues/146)) ([88318b4](https://github.com/gotgenes/pi-packages/commit/88318b4550fe95fc70b1a9ee1e904c608a2189a3))
1531
+ * **retro:** add retro notes for issue [#148](https://github.com/gotgenes/pi-packages/issues/148) ([982fe51](https://github.com/gotgenes/pi-packages/commit/982fe51d7e27b7a127605710ced709bbd6291a0f))
1532
+
1533
+ ## [6.16.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.16.0...pi-subagents-v6.16.1) (2026-05-23)
1534
+
1535
+
1536
+ ### Bug Fixes
1537
+
1538
+ * **pi-subagents:** theme parentheses and separator in formatSessionTokens ([33b67f6](https://github.com/gotgenes/pi-packages/commit/33b67f63915563c41605addb885af52b47844e96))
1539
+
1540
+
1541
+ ### Documentation
1542
+
1543
+ * plan split AgentWidget rendering from lifecycle ([#148](https://github.com/gotgenes/pi-packages/issues/148)) ([24c11d5](https://github.com/gotgenes/pi-packages/commit/24c11d51f2b6c9d2712815fbe46ede72084ffcbb))
1544
+ * **retro:** add retro notes for issue [#144](https://github.com/gotgenes/pi-packages/issues/144) ([f3cdfd4](https://github.com/gotgenes/pi-packages/commit/f3cdfd46fe223d6cecb5dad0d739f053e7468433))
1545
+ * update architecture for widget rendering extraction ([#148](https://github.com/gotgenes/pi-packages/issues/148)) ([450707e](https://github.com/gotgenes/pi-packages/commit/450707e1d0f41ae78f1a655ab350fd8f4fd64125))
1546
+
1547
+ ## [6.16.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.15.0...pi-subagents-v6.16.0) (2026-05-23)
1548
+
1549
+
1550
+ ### Features
1551
+
1552
+ * add session and outputFile convenience getters to AgentRecord ([#144](https://github.com/gotgenes/pi-packages/issues/144)) ([b451894](https://github.com/gotgenes/pi-packages/commit/b451894d101b43be9115dcf6d45725a09da81df8))
1553
+
1554
+
1555
+ ### Documentation
1556
+
1557
+ * mark Step L complete, remove resolved smells from architecture doc ([#144](https://github.com/gotgenes/pi-packages/issues/144)) ([36ab7a5](https://github.com/gotgenes/pi-packages/commit/36ab7a51d0320666b71d6c9e20c3bbf63b7c43c5))
1558
+ * plan consolidate observation model ([#144](https://github.com/gotgenes/pi-packages/issues/144)) ([9aa2c85](https://github.com/gotgenes/pi-packages/commit/9aa2c8508079c6ae847662631afd223e8966e12e))
1559
+ * **retro:** add retro notes for issue [#145](https://github.com/gotgenes/pi-packages/issues/145) ([2d23081](https://github.com/gotgenes/pi-packages/commit/2d230817d53357a62eb752b56f8b1c8ce4af718c))
1560
+
1561
+ ## [6.15.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.14.1...pi-subagents-v6.15.0) (2026-05-23)
1562
+
1563
+
1564
+ ### Features
1565
+
1566
+ * extract resolveSpawnConfig pure function ([#145](https://github.com/gotgenes/pi-packages/issues/145)) ([e89724a](https://github.com/gotgenes/pi-packages/commit/e89724a87480713529160d0fa23975becbcfe162))
1567
+
1568
+
1569
+ ### Documentation
1570
+
1571
+ * plan decompose execute and push ctx to boundary ([#145](https://github.com/gotgenes/pi-packages/issues/145)) ([aae7d7b](https://github.com/gotgenes/pi-packages/commit/aae7d7b4e04ab0dddedd2a0f9f2b806719956ced))
1572
+ * update architecture doc for completed Step M ([#145](https://github.com/gotgenes/pi-packages/issues/145)) ([33ec0c7](https://github.com/gotgenes/pi-packages/commit/33ec0c73479076c180381dcc1cb4106ba635f33f))
1573
+ * update plan with injected collaborators for ctx elimination ([#145](https://github.com/gotgenes/pi-packages/issues/145)) ([76bb57b](https://github.com/gotgenes/pi-packages/commit/76bb57b4b5190078ded8685907f0878640031e13))
1574
+
1575
+ ## [6.14.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.14.0...pi-subagents-v6.14.1) (2026-05-23)
1576
+
1577
+
1578
+ ### Bug Fixes
1579
+
1580
+ * resolve fallow dead-code warnings ([2113f6b](https://github.com/gotgenes/pi-packages/commit/2113f6bc49812ce32ac68d0e2dd88e0a60b4474a))
1581
+
1582
+
1583
+ ### Documentation
1584
+
1585
+ * **retro:** add retro notes for issue [#152](https://github.com/gotgenes/pi-packages/issues/152) ([7337bc1](https://github.com/gotgenes/pi-packages/commit/7337bc175528b4fb99dbc765eb06f0bcf2accec1))
1586
+
1587
+ ## [6.14.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.13.1...pi-subagents-v6.14.0) (2026-05-23)
1588
+
1589
+
1590
+ ### Features
1591
+
1592
+ * add promptSnippet to Agent, get_subagent_result, and steer_subagent ([#152](https://github.com/gotgenes/pi-packages/issues/152)) ([3ccbe14](https://github.com/gotgenes/pi-packages/commit/3ccbe140b05ab038c3c50ff1fdbe314d721c7b60))
1593
+
1594
+
1595
+ ### Documentation
1596
+
1597
+ * plan add promptSnippet to subagent tools ([#152](https://github.com/gotgenes/pi-packages/issues/152)) ([f8fd56d](https://github.com/gotgenes/pi-packages/commit/f8fd56dff3d6a824f36c198d9a9d1b50a0bf740a))
1598
+
1599
+ ## [6.13.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.13.0...pi-subagents-v6.13.1) (2026-05-23)
1600
+
1601
+
1602
+ ### Documentation
1603
+
1604
+ * **pi-subagents:** add dependency bag convention to Phase 9 ([72436cd](https://github.com/gotgenes/pi-packages/commit/72436cd51d7a3058de6bb17673f3552fd4e61340))
1605
+ * **pi-subagents:** add issue references to Phase 9 steps ([43e9b9c](https://github.com/gotgenes/pi-packages/commit/43e9b9c2f2d816f0802783752ce0bcc8022d4a33))
1606
+ * **pi-subagents:** add Phase 9 roadmap to architecture.md ([6fb1ad8](https://github.com/gotgenes/pi-packages/commit/6fb1ad892df3e85cca35361a0995adcdf3b0569b))
1607
+ * **pi-subagents:** convert dependency graphs to Mermaid diagrams ([d2571e8](https://github.com/gotgenes/pi-packages/commit/d2571e8558faf2c6728068bfafbbf24beb812f7c))
1608
+ * **pi-subagents:** refine Step M to include execute decomposition ([262f570](https://github.com/gotgenes/pi-packages/commit/262f5708d54bb6aa30ccd405bed1e89bfd5ea999))
1609
+ * **pi-subagents:** remove progress markers from architecture.md ([aca298b](https://github.com/gotgenes/pi-packages/commit/aca298ba7e1da44c48dc442b2602a4202d4943a3))
1610
+ * **retro:** add retro notes for issue [#136](https://github.com/gotgenes/pi-packages/issues/136) ([20384ac](https://github.com/gotgenes/pi-packages/commit/20384ac2040ae4334565f303f327bb007d9b4501))
1611
+
1612
+ ## [6.13.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.12.1...pi-subagents-v6.13.0) (2026-05-23)
1613
+
1614
+
1615
+ ### Features
1616
+
1617
+ * add AgentFileOps interface and FsAgentFileOps ([#136](https://github.com/gotgenes/pi-packages/issues/136)) ([9625de6](https://github.com/gotgenes/pi-packages/commit/9625de60ace3cf58ad59c2d533f18fd7cdb8bba9))
1618
+
1619
+
1620
+ ### Documentation
1621
+
1622
+ * plan agent-menu decomposition ([#136](https://github.com/gotgenes/pi-packages/issues/136)) ([41ca6a6](https://github.com/gotgenes/pi-packages/commit/41ca6a6612cbc167a5b3d336ffb94d3f9666868f))
1623
+ * **retro:** add retro notes for issue [#135](https://github.com/gotgenes/pi-packages/issues/135) ([83e255b](https://github.com/gotgenes/pi-packages/commit/83e255b4a5e6a56a287c933e4a5fa0b28121529e))
1624
+ * update architecture for agent-menu decomposition ([#136](https://github.com/gotgenes/pi-packages/issues/136)) ([dba90e8](https://github.com/gotgenes/pi-packages/commit/dba90e86693e3480004a7c305d5082cb5a930d3f))
1625
+
1626
+ ## [6.12.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.12.0...pi-subagents-v6.12.1) (2026-05-22)
1627
+
1628
+
1629
+ ### Documentation
1630
+
1631
+ * mark Step J done, add ui/display.ts to module listing ([#135](https://github.com/gotgenes/pi-packages/issues/135)) ([37ced45](https://github.com/gotgenes/pi-packages/commit/37ced45e1a0287aa78e588cb8bc7905c0f969637))
1632
+ * plan display helper extraction from agent-widget ([#135](https://github.com/gotgenes/pi-packages/issues/135)) ([9e65e7d](https://github.com/gotgenes/pi-packages/commit/9e65e7d93bf47d4c4582d367d2f31a2386a5cc8c))
1633
+ * **retro:** add retro notes for issue [#134](https://github.com/gotgenes/pi-packages/issues/134) ([775ce99](https://github.com/gotgenes/pi-packages/commit/775ce99710153d4ebcf40f773eae21553c7f8a82))
1634
+
1635
+ ## [6.12.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.11.0...pi-subagents-v6.12.0) (2026-05-22)
1636
+
1637
+
1638
+ ### Features
1639
+
1640
+ * narrow runtime widget field to WidgetLike interface ([#134](https://github.com/gotgenes/pi-packages/issues/134)) ([afa70ab](https://github.com/gotgenes/pi-packages/commit/afa70ab430109248a8f61ccd182b0f3acd1fa7e1))
1641
+ * use SDK types in CreateSessionOptions ([#134](https://github.com/gotgenes/pi-packages/issues/134)) ([c2452af](https://github.com/gotgenes/pi-packages/commit/c2452af0ee3d47d778878443a634ca787f8d0bfb))
1642
+
1643
+
1644
+ ### Bug Fixes
1645
+
1646
+ * replace message-shape as-any casts with type guards ([#134](https://github.com/gotgenes/pi-packages/issues/134)) ([d7ad65a](https://github.com/gotgenes/pi-packages/commit/d7ad65a61267790ae1ae8414b0c2aa9ebc8ad59c))
1647
+
1648
+
1649
+ ### Documentation
1650
+
1651
+ * plan as-any cast reduction in test suite ([#134](https://github.com/gotgenes/pi-packages/issues/134)) ([f7cb1aa](https://github.com/gotgenes/pi-packages/commit/f7cb1aac0963021ae0545b73c88f950a7adb5fd2))
1652
+ * **retro:** add retro notes for issue [#133](https://github.com/gotgenes/pi-packages/issues/133) ([be32640](https://github.com/gotgenes/pi-packages/commit/be32640048943059a98fc79797a35dfefd70fc34))
1653
+ * update architecture doc for Step I completion ([#134](https://github.com/gotgenes/pi-packages/issues/134)) ([fd4aca7](https://github.com/gotgenes/pi-packages/commit/fd4aca79c74da2b8c4e3c58e2376e0612941d7d9))
1654
+
1655
+ ## [6.11.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.10.0...pi-subagents-v6.11.0) (2026-05-22)
1656
+
1657
+
1658
+ ### Features
1659
+
1660
+ * inject SDK boundary into agent-runner via RunnerIO ([#133](https://github.com/gotgenes/pi-packages/issues/133)) ([a9f6a9e](https://github.com/gotgenes/pi-packages/commit/a9f6a9e8c71e307b71600409e865fb539312f539))
1661
+
1662
+
1663
+ ### Documentation
1664
+
1665
+ * plan SDK boundary injection into agent-runner ([#133](https://github.com/gotgenes/pi-packages/issues/133)) ([1706ebc](https://github.com/gotgenes/pi-packages/commit/1706ebcc1452c6798dafb733ec8c68e6ee9e8512))
1666
+ * **retro:** add retro notes for issue [#132](https://github.com/gotgenes/pi-packages/issues/132) ([d0af140](https://github.com/gotgenes/pi-packages/commit/d0af1409ddc18099dfdda94ab37af2b99bc46c3c))
1667
+ * update architecture doc for Step H completion ([#133](https://github.com/gotgenes/pi-packages/issues/133)) ([f6b1258](https://github.com/gotgenes/pi-packages/commit/f6b1258f50a038df18ca1f33e3681c7bc258f4fc))
1668
+
1669
+ ## [6.10.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.9.4...pi-subagents-v6.10.0) (2026-05-22)
1670
+
1671
+
1672
+ ### Features
1673
+
1674
+ * inject IO collaborators into assembleSessionConfig ([#132](https://github.com/gotgenes/pi-packages/issues/132)) ([74d3dbf](https://github.com/gotgenes/pi-packages/commit/74d3dbf5e67cf28f75683e55240719ad2be86490))
1675
+
1676
+
1677
+ ### Documentation
1678
+
1679
+ * mark Step G complete in Phase 8 roadmap ([#132](https://github.com/gotgenes/pi-packages/issues/132)) ([95512bd](https://github.com/gotgenes/pi-packages/commit/95512bdec3757d5955d13e22261a90da41cea40e))
1680
+ * plan IO collaborator injection into assembleSessionConfig ([#132](https://github.com/gotgenes/pi-packages/issues/132)) ([23c3b62](https://github.com/gotgenes/pi-packages/commit/23c3b624e8c0afb8fda72c1b5fba86cb165f78dd))
1681
+ * **retro:** add retro notes for issue [#131](https://github.com/gotgenes/pi-packages/issues/131) ([b91cee9](https://github.com/gotgenes/pi-packages/commit/b91cee9ef69f8b1ab41be986663bad22e77a8c67))
1682
+
1683
+ ## [6.9.4](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.9.3...pi-subagents-v6.9.4) (2026-05-22)
1684
+
1685
+
1686
+ ### Documentation
1687
+
1688
+ * plan consolidate shared test fixtures ([#131](https://github.com/gotgenes/pi-packages/issues/131)) ([2fe1e65](https://github.com/gotgenes/pi-packages/commit/2fe1e65024743384981c057b405f97f9c76f9b05))
1689
+
1690
+ ## [6.9.3](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.9.2...pi-subagents-v6.9.3) (2026-05-22)
1691
+
1692
+
1693
+ ### Documentation
1694
+
1695
+ * add issue numbers to Phase 8 roadmap steps ([77fee40](https://github.com/gotgenes/pi-packages/commit/77fee402ebc445171f3768f2eea1bba242ce9723))
1696
+ * add Phase 8 roadmap — testability, display extraction, menu decomposition ([37a0520](https://github.com/gotgenes/pi-packages/commit/37a0520e32a93f4c9bffd5a728882c68e9811024))
1697
+ * clean up architecture.md progress tracking ([e006032](https://github.com/gotgenes/pi-packages/commit/e00603209b9c21cb1bef41c34eeb71c1cc338117))
1698
+ * **retro:** add retro notes for issue [#116](https://github.com/gotgenes/pi-packages/issues/116) ([701dca8](https://github.com/gotgenes/pi-packages/commit/701dca8075221aa4c36e19e2d54d43c74863ea57))
1699
+
1700
+ ## [6.9.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.9.1...pi-subagents-v6.9.2) (2026-05-22)
1701
+
1702
+
1703
+ ### Documentation
1704
+
1705
+ * mark E2 type housekeeping done in architecture ([#116](https://github.com/gotgenes/pi-packages/issues/116)) ([89f18a8](https://github.com/gotgenes/pi-packages/commit/89f18a82fac39b4a62be8e440355b859afaa6d2f))
1706
+ * plan type housekeeping and small structural cleanups ([#116](https://github.com/gotgenes/pi-packages/issues/116)) ([e1cbd26](https://github.com/gotgenes/pi-packages/commit/e1cbd269961a1bff3b11e2e916733a79c39a087d))
1707
+ * **retro:** add retro notes for issue [#115](https://github.com/gotgenes/pi-packages/issues/115) ([05b8809](https://github.com/gotgenes/pi-packages/commit/05b88093f7b70ea886b6c7cb5f0cc96161a95df6))
1708
+
1709
+ ## [6.9.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.9.0...pi-subagents-v6.9.1) (2026-05-22)
1710
+
1711
+
1712
+ ### Documentation
1713
+
1714
+ * plan decompose agent-tool.ts into foreground/background modules ([#115](https://github.com/gotgenes/pi-packages/issues/115)) ([4b9aefb](https://github.com/gotgenes/pi-packages/commit/4b9aefb18fe0431a033d90f10bcbe7d37c53a6b8))
1715
+ * **retro:** add retro notes for issue [#114](https://github.com/gotgenes/pi-packages/issues/114) ([e6095e7](https://github.com/gotgenes/pi-packages/commit/e6095e7465f482ac18756305b9740f1101dbd41a))
1716
+ * update architecture for E1 agent-tool decomposition ([#115](https://github.com/gotgenes/pi-packages/issues/115)) ([8bccf0a](https://github.com/gotgenes/pi-packages/commit/8bccf0ab90787d906c82c5a362c0763d3b7bd2f5))
1717
+
1718
+ ## [6.9.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.8.3...pi-subagents-v6.9.0) (2026-05-22)
1719
+
1720
+
1721
+ ### Features
1722
+
1723
+ * add onAgentCreated to AgentManagerObserver ([e2f1c12](https://github.com/gotgenes/pi-packages/commit/e2f1c1273ce560231cc98ef3c7e214efd2c20f47))
1724
+
1725
+
1726
+ ### Documentation
1727
+
1728
+ * mark D2 done, update field counts in architecture.md ([#114](https://github.com/gotgenes/pi-packages/issues/114)) ([702caf4](https://github.com/gotgenes/pi-packages/commit/702caf4187bfa015b0d80361b06b6360fddc31b1))
1729
+ * plan narrow AgentToolDeps and AgentMenuDeps ([#114](https://github.com/gotgenes/pi-packages/issues/114)) ([0f7e953](https://github.com/gotgenes/pi-packages/commit/0f7e95362043109c4113cfe3f7b848e296f118c9))
1730
+ * **retro:** add retro notes for issue [#113](https://github.com/gotgenes/pi-packages/issues/113) ([6b3c280](https://github.com/gotgenes/pi-packages/commit/6b3c2800e6d7728b8b620172e4acb1068b65e6c4))
1731
+
1732
+ ## [6.8.3](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.8.2...pi-subagents-v6.8.3) (2026-05-22)
1733
+
1734
+
1735
+ ### Documentation
1736
+
1737
+ * mark Step D1 complete in architecture.md ([#113](https://github.com/gotgenes/pi-packages/issues/113)) ([b42de23](https://github.com/gotgenes/pi-packages/commit/b42de238710931348336d6e7fd81bb000a0ab584))
1738
+ * plan disambiguate SpawnOptions (public vs internal) ([#113](https://github.com/gotgenes/pi-packages/issues/113)) ([2f3cebc](https://github.com/gotgenes/pi-packages/commit/2f3cebc6623e0ba20c73145d8e7c6b9ffae6f875))
1739
+ * **retro:** add retro notes for issue [#112](https://github.com/gotgenes/pi-packages/issues/112) ([2a59ed4](https://github.com/gotgenes/pi-packages/commit/2a59ed4e4f5462cdbf8df96e4b675a9c5ec6eb9d))
1740
+
1741
+ ## [6.8.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.8.1...pi-subagents-v6.8.2) (2026-05-22)
1742
+
1743
+
1744
+ ### Documentation
1745
+
1746
+ * mark Step C complete in architecture.md ([#112](https://github.com/gotgenes/pi-packages/issues/112)) ([9f6e783](https://github.com/gotgenes/pi-packages/commit/9f6e783ab4ddcabdc24224e02aa631b93b0fb6d4))
1747
+ * plan replace AgentManager callbacks with observer interface ([#112](https://github.com/gotgenes/pi-packages/issues/112)) ([b32dde1](https://github.com/gotgenes/pi-packages/commit/b32dde1e473611b2734a287e88c8d155642405a7))
1748
+ * **retro:** add retro notes for issue [#123](https://github.com/gotgenes/pi-packages/issues/123) ([e9333ee](https://github.com/gotgenes/pi-packages/commit/e9333ee2af70e821ba1bace63bdbd7befa72ce84))
1749
+
1750
+ ## [6.8.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.8.0...pi-subagents-v6.8.1) (2026-05-21)
1751
+
1752
+
1753
+ ### Documentation
1754
+
1755
+ * plan remove vi.fn() cast smell from test helpers ([#123](https://github.com/gotgenes/pi-packages/issues/123)) ([d0e33b3](https://github.com/gotgenes/pi-packages/commit/d0e33b39cf419bb03a2d69c39992600752ce8517))
1756
+ * **retro:** add retro notes for issue [#111](https://github.com/gotgenes/pi-packages/issues/111) ([37eea32](https://github.com/gotgenes/pi-packages/commit/37eea32b32135b792c6c94933267c3e5a5f2cd7b))
1757
+
1758
+ ## [6.8.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.7.0...pi-subagents-v6.8.0) (2026-05-21)
1759
+
1760
+
1761
+ ### Features
1762
+
1763
+ * add ExecutionState interface ([#111](https://github.com/gotgenes/pi-packages/issues/111)) ([4f33e09](https://github.com/gotgenes/pi-packages/commit/4f33e09b8578509985308b225111cfdfce22bb06))
1764
+ * add NotificationState class ([#111](https://github.com/gotgenes/pi-packages/issues/111)) ([cbee34d](https://github.com/gotgenes/pi-packages/commit/cbee34d1944e411dd8593ac0cfbaa3fa66982d00))
1765
+ * add WorktreeState class ([#111](https://github.com/gotgenes/pi-packages/issues/111)) ([eddb0c8](https://github.com/gotgenes/pi-packages/commit/eddb0c84311d420f3b50c2861f7585cfd8d1037f))
1766
+
1767
+
1768
+ ### Documentation
1769
+
1770
+ * plan AgentRecord lifecycle state split ([#111](https://github.com/gotgenes/pi-packages/issues/111)) ([c271d89](https://github.com/gotgenes/pi-packages/commit/c271d8931729e620e46f05e82cdca8276dbd0a6d))
1771
+ * **retro:** add retro notes for issue [#110](https://github.com/gotgenes/pi-packages/issues/110) ([4a48c65](https://github.com/gotgenes/pi-packages/commit/4a48c655752902f86b864f224e209831f73e241d))
1772
+ * update architecture doc for AgentRecord lifecycle split ([#111](https://github.com/gotgenes/pi-packages/issues/111)) ([b0d8967](https://github.com/gotgenes/pi-packages/commit/b0d8967601eb7aca41cf59ce7f40f399ccc51fec))
1773
+
1774
+ ## [6.7.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.6.0...pi-subagents-v6.7.0) (2026-05-21)
1775
+
1776
+
1777
+ ### Features
1778
+
1779
+ * add AgentActivityTracker class ([#110](https://github.com/gotgenes/pi-packages/issues/110)) ([151308a](https://github.com/gotgenes/pi-packages/commit/151308ad3da569d72e40495bece502281dc302a8))
1780
+
1781
+
1782
+ ### Documentation
1783
+
1784
+ * plan AgentActivityTracker class ([#110](https://github.com/gotgenes/pi-packages/issues/110)) ([8f5e56b](https://github.com/gotgenes/pi-packages/commit/8f5e56ba0a29730e060bac4658bb4953ce36d4a9))
1785
+ * **retro:** add retro notes for issue [#118](https://github.com/gotgenes/pi-packages/issues/118) ([1959e52](https://github.com/gotgenes/pi-packages/commit/1959e52d8b150bbc90da72edd93dc6f2ec315e22))
1786
+ * update architecture doc — mark A3 done, fix Map type ([#110](https://github.com/gotgenes/pi-packages/issues/110)) ([463e997](https://github.com/gotgenes/pi-packages/commit/463e9974db21df17f4b2578825f3c67bc1e90b29))
1787
+
1788
+ ## [6.6.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.5.0...pi-subagents-v6.6.0) (2026-05-21)
1789
+
1790
+
1791
+ ### Features
1792
+
1793
+ * accept onMaxConcurrentChanged callback in SettingsManager constructor ([a6829ba](https://github.com/gotgenes/pi-packages/commit/a6829ba528caa7d106139de5217eddc89a18cf83))
1794
+ * add SettingsManager.applyDefaultMaxTurns and applyGraceTurns methods ([02f8c65](https://github.com/gotgenes/pi-packages/commit/02f8c65297b80aaf1231960bf4b2ed2bdb13eeb4))
1795
+ * add SettingsManager.applyMaxConcurrent method ([ad9de8a](https://github.com/gotgenes/pi-packages/commit/ad9de8a2553233bb34e7e07f9745f6e778ae1564))
1796
+
1797
+
1798
+ ### Documentation
1799
+
1800
+ * mark A2b SettingsManager apply methods done in architecture ([#118](https://github.com/gotgenes/pi-packages/issues/118)) ([dafd480](https://github.com/gotgenes/pi-packages/commit/dafd4800b4b3a0cb5935ffd8f20c0a257b7c8be5))
1801
+ * plan SettingsManager apply methods ([#118](https://github.com/gotgenes/pi-packages/issues/118)) ([51e14ac](https://github.com/gotgenes/pi-packages/commit/51e14aceaf4e30591ca993a06b459e9e1ae8f031))
1802
+ * **retro:** add retro notes for issue [#109](https://github.com/gotgenes/pi-packages/issues/109) ([22e0ccb](https://github.com/gotgenes/pi-packages/commit/22e0ccb0a32d54472b0cece5c27d1cf80a2afe14))
1803
+
1804
+ ## [6.5.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.4.0...pi-subagents-v6.5.0) (2026-05-21)
1805
+
1806
+
1807
+ ### Features
1808
+
1809
+ * add SettingsManager class with get/set normalization ([a21aa28](https://github.com/gotgenes/pi-packages/commit/a21aa28bc4b30b4c17ebfb88c939eba01756f39f))
1810
+ * SettingsManager load, save, snapshot, and lifecycle events ([c3ece9f](https://github.com/gotgenes/pi-packages/commit/c3ece9f8429919da5a8397691b66020941555b37))
1811
+
1812
+
1813
+ ### Documentation
1814
+
1815
+ * add A2b SettingsManager apply methods step ([#118](https://github.com/gotgenes/pi-packages/issues/118)) to architecture roadmap ([43a462a](https://github.com/gotgenes/pi-packages/commit/43a462a7b8e4ee4db2ca8eaa4d85e7e0d5ee4024))
1816
+ * plan extract SettingsManager class ([#109](https://github.com/gotgenes/pi-packages/issues/109)) ([88cece7](https://github.com/gotgenes/pi-packages/commit/88cece74c3ff6726f37827aff7ac337fc720f642))
1817
+ * **retro:** add retro notes for issue [#108](https://github.com/gotgenes/pi-packages/issues/108) ([55b1877](https://github.com/gotgenes/pi-packages/commit/55b187736f05aba381f5aa2554e451433e005c4d))
1818
+ * update architecture doc — mark A2 SettingsManager complete ([#109](https://github.com/gotgenes/pi-packages/issues/109)) ([856baa6](https://github.com/gotgenes/pi-packages/commit/856baa64b65098193c3d9228d5a4c7af8f207c72))
1819
+
1820
+ ## [6.4.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.3.1...pi-subagents-v6.4.0) (2026-05-21)
1821
+
1822
+
1823
+ ### Features
1824
+
1825
+ * **pi-subagents:** add AgentTypeRegistry class ([#108](https://github.com/gotgenes/pi-packages/issues/108)) ([e34ad07](https://github.com/gotgenes/pi-packages/commit/e34ad071726d2ba6066721c69e72abed46905f23))
1826
+
1827
+
1828
+ ### Documentation
1829
+
1830
+ * **pi-subagents:** add issue numbers to encapsulation roadmap ([ddb189e](https://github.com/gotgenes/pi-packages/commit/ddb189e4b379d709a3489c1912fd829a35891c5c))
1831
+ * **pi-subagents:** add Phase 7 encapsulation roadmap to architecture doc ([e0c0953](https://github.com/gotgenes/pi-packages/commit/e0c09532c65ff64cf3cee428f68b0c1edc30441f))
1832
+ * **pi-subagents:** update architecture.md to reflect current state ([56c322f](https://github.com/gotgenes/pi-packages/commit/56c322f5d205b8f5787186d8979e34e2c2338d25))
1833
+ * plan AgentTypeRegistry extraction ([#108](https://github.com/gotgenes/pi-packages/issues/108)) ([ffe8702](https://github.com/gotgenes/pi-packages/commit/ffe87029783885d944892c951dda8c374805bc19))
1834
+ * update architecture and skill docs for AgentTypeRegistry ([#108](https://github.com/gotgenes/pi-packages/issues/108)) ([3e756dd](https://github.com/gotgenes/pi-packages/commit/3e756dd69c78ce26de552fb259d751f5750255f5))
1835
+
1836
+ ## [6.3.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.3.0...pi-subagents-v6.3.1) (2026-05-21)
1837
+
1838
+
1839
+ ### Documentation
1840
+
1841
+ * **retro:** add retro notes for issue [#100](https://github.com/gotgenes/pi-packages/issues/100) ([eef09ad](https://github.com/gotgenes/pi-packages/commit/eef09ad78c2ff6bf8b12b8937165bb72931ee869))
1842
+
1843
+ ## [6.3.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.2.0...pi-subagents-v6.3.0) (2026-05-21)
1844
+
1845
+
1846
+ ### Features
1847
+
1848
+ * add record observer for direct session subscription ([#100](https://github.com/gotgenes/pi-packages/issues/100)) ([3776345](https://github.com/gotgenes/pi-packages/commit/37763454609d38d55c85f89bb051b8c592d425bf))
1849
+ * add UI observer for direct session subscription ([#100](https://github.com/gotgenes/pi-packages/issues/100)) ([5b35e80](https://github.com/gotgenes/pi-packages/commit/5b35e80e784d96883ee44bf5e890284efa1047ef))
1850
+
1851
+
1852
+ ### Documentation
1853
+
1854
+ * plan callback-threading replacement with session subscription ([#100](https://github.com/gotgenes/pi-packages/issues/100)) ([7a8e262](https://github.com/gotgenes/pi-packages/commit/7a8e262ebaf99cba017aac00691cc3614ef8c80a))
1855
+ * **retro:** add retro notes for issue [#99](https://github.com/gotgenes/pi-packages/issues/99) ([b596d0c](https://github.com/gotgenes/pi-packages/commit/b596d0c34862542d0ebb9fae67dd90e9fc660a8b))
1856
+
1857
+ ## [6.2.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.1.0...pi-subagents-v6.2.0) (2026-05-21)
1858
+
1859
+
1860
+ ### Features
1861
+
1862
+ * add ParentSnapshot type and builder ([#99](https://github.com/gotgenes/pi-packages/issues/99)) ([ee24eb9](https://github.com/gotgenes/pi-packages/commit/ee24eb907eba9f6f917bc166c912e5482eff5bd5))
1863
+
1864
+
1865
+ ### Documentation
1866
+
1867
+ * **pi-subagents:** cross-reference issues in architecture decomposition plan ([2242e45](https://github.com/gotgenes/pi-packages/commit/2242e457b7e1bf8cb44e9a1df6fb4d2fd1ba1116))
1868
+ * plan replace live ctx capture with ParentSnapshot ([#99](https://github.com/gotgenes/pi-packages/issues/99)) ([b6b63f8](https://github.com/gotgenes/pi-packages/commit/b6b63f8677231617a00cb1e3d1227667cbae7ecd))
1869
+ * **retro:** add retro notes for issue [#98](https://github.com/gotgenes/pi-packages/issues/98) ([ef52aaa](https://github.com/gotgenes/pi-packages/commit/ef52aaa4d8b690b309f2129ff34f90c44368cc57))
1870
+
1871
+ ## [6.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.0.1...pi-subagents-v6.1.0) (2026-05-20)
1872
+
1873
+
1874
+ ### Features
1875
+
1876
+ * create AgentRecord class with transition methods ([#98](https://github.com/gotgenes/pi-packages/issues/98)) ([e5b2170](https://github.com/gotgenes/pi-packages/commit/e5b21704de2d693e4feff8b0c0f80a4f6e3fdabd))
1877
+
1878
+
1879
+ ### Documentation
1880
+
1881
+ * plan AgentRecord state machine extraction ([#98](https://github.com/gotgenes/pi-packages/issues/98)) ([5ca6613](https://github.com/gotgenes/pi-packages/commit/5ca6613ba8e73e042c7f06e2f303ad573048138e))
1882
+ * **retro:** add retro notes for issue [#102](https://github.com/gotgenes/pi-packages/issues/102) ([594a61a](https://github.com/gotgenes/pi-packages/commit/594a61a59f04aafba06ab8649c183b5003e95822))
1883
+
1884
+ ## [6.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v6.0.0...pi-subagents-v6.0.1) (2026-05-20)
1885
+
1886
+
1887
+ ### Documentation
1888
+
1889
+ * full refresh of architecture.md — reflect completed decomposition ([a8187ce](https://github.com/gotgenes/pi-packages/commit/a8187ce839b465529191b53bbb19fd39d5c71e69))
1890
+ * **pi-subagents:** set new architectural target for AgentManager decomposition ([83288da](https://github.com/gotgenes/pi-packages/commit/83288daf3dc6dce7bcad81799a4f6e9f300553c0))
1891
+ * plan consolidate test AgentRecord factory ([#102](https://github.com/gotgenes/pi-packages/issues/102)) ([22a3213](https://github.com/gotgenes/pi-packages/commit/22a3213bb55d15871d3582e89d1336fcd9e8fa36))
1892
+ * **retro:** add retro notes for issue [#61](https://github.com/gotgenes/pi-packages/issues/61) ([7053be7](https://github.com/gotgenes/pi-packages/commit/7053be7bec86a0c160cb602528d1c59e370ba33d))
1893
+
1894
+ ## [6.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.8.2...pi-subagents-v6.0.0) (2026-05-20)
1895
+
1896
+
1897
+ ### ⚠ BREAKING CHANGES
1898
+
1899
+ * Subagent transcripts are now written in Pi's official JSONL session format via SessionManager.create() instead of the bespoke flat format. The output-file.ts module and its encodeCwd/createOutputFilePath/ writeInitialEntry/streamToOutputFile exports are removed. Transcript file paths change from /tmp/pi-subagents-<uid>/... to the Pi sessions directory.
1900
+
1901
+ ### Features
1902
+
1903
+ * add deriveSubagentSessionDir for session directory derivation ([#61](https://github.com/gotgenes/pi-packages/issues/61)) ([8442379](https://github.com/gotgenes/pi-packages/commit/8442379ae4433ba1428d703a24bef7b57c8624f2))
1904
+ * remove bespoke output-file transcript format ([#61](https://github.com/gotgenes/pi-packages/issues/61)) ([1aab916](https://github.com/gotgenes/pi-packages/commit/1aab9166fc52e4f04e1d0a369788bf5c4a3da7c7))
1905
+ * thread parent session info through spawn and run options ([#61](https://github.com/gotgenes/pi-packages/issues/61)) ([6f0d537](https://github.com/gotgenes/pi-packages/commit/6f0d537d745df63be43eb14de92caf42e65ab347))
1906
+ * use persisted SessionManager for subagent sessions ([#61](https://github.com/gotgenes/pi-packages/issues/61)) ([ffafa69](https://github.com/gotgenes/pi-packages/commit/ffafa69d96068f881ec97e4f924245a308e542ba))
1907
+ * wire session file path through agent-tool, remove output-file streaming ([#61](https://github.com/gotgenes/pi-packages/issues/61)) ([97acf0a](https://github.com/gotgenes/pi-packages/commit/97acf0a63cbe21e0954e79cd7db71e5632084454))
1908
+
1909
+
1910
+ ### Bug Fixes
1911
+
1912
+ * use cwd in session-dir fallback path to namespace by project ([#61](https://github.com/gotgenes/pi-packages/issues/61)) ([0394420](https://github.com/gotgenes/pi-packages/commit/0394420237b9d23b35fe6c4e65b03fc267beaa0c))
1913
+
1914
+
1915
+ ### Documentation
1916
+
1917
+ * plan session format transcript migration ([#61](https://github.com/gotgenes/pi-packages/issues/61)) ([68238c1](https://github.com/gotgenes/pi-packages/commit/68238c1c90c375c8469929399f18d0566e97a32c))
1918
+ * **retro:** add retro notes for issue [#77](https://github.com/gotgenes/pi-packages/issues/77) ([004c99c](https://github.com/gotgenes/pi-packages/commit/004c99c4fba6b515360bb453eedbeb1218cebbc2))
1919
+ * update architecture and package skill for session format migration ([#61](https://github.com/gotgenes/pi-packages/issues/61)) ([eef5e16](https://github.com/gotgenes/pi-packages/commit/eef5e16ad90118092badcbe2594c89c399919c15))
1920
+
1921
+ ## [5.8.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.8.1...pi-subagents-v5.8.2) (2026-05-20)
1922
+
1923
+
1924
+ ### Documentation
1925
+
1926
+ * plan inject projectAgentsDir into AgentMenuDeps ([#77](https://github.com/gotgenes/pi-packages/issues/77)) ([d8cf039](https://github.com/gotgenes/pi-packages/commit/d8cf03944d0abc6230541d67655d89582665a615))
1927
+ * **retro:** add retro notes for issue [#66](https://github.com/gotgenes/pi-packages/issues/66) ([ce0f04a](https://github.com/gotgenes/pi-packages/commit/ce0f04a3d84523a4c2e8b7bc998b5bec0f16970f))
1928
+
1929
+ ## [5.8.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.8.0...pi-subagents-v5.8.1) (2026-05-20)
1930
+
1931
+
1932
+ ### Documentation
1933
+
1934
+ * plan replace as-any casts with SDK types ([#66](https://github.com/gotgenes/pi-packages/issues/66)) ([a8728bf](https://github.com/gotgenes/pi-packages/commit/a8728bf695a11f649fb908a6a31a55842b76ce32))
1935
+ * **retro:** add retro notes for issue [#70](https://github.com/gotgenes/pi-packages/issues/70) ([0668956](https://github.com/gotgenes/pi-packages/commit/0668956e99383df7a62fddde57dd4182bf491a5e))
1936
+ * **retro:** record architecture update for [#70](https://github.com/gotgenes/pi-packages/issues/70) ([49d4fae](https://github.com/gotgenes/pi-packages/commit/49d4faee4ee711e385dbf59334b0b737897d26a6))
1937
+ * update architecture roadmap with [#87](https://github.com/gotgenes/pi-packages/issues/87), [#70](https://github.com/gotgenes/pi-packages/issues/70) status ([97a2da1](https://github.com/gotgenes/pi-packages/commit/97a2da11cbd73c9f84eb2158e2437cbe8c749208))
1938
+
1939
+ ## [5.8.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.7.0...pi-subagents-v5.8.0) (2026-05-20)
1940
+
1941
+
1942
+ ### Features
1943
+
1944
+ * add SessionLifecycleHandler ([d8d95fa](https://github.com/gotgenes/pi-packages/commit/d8d95fa92561e0068444c3c925f21b50825a741c))
1945
+ * add ToolStartHandler ([c293e41](https://github.com/gotgenes/pi-packages/commit/c293e41e25d9742f807f85d0efe0a0e5605b29a6))
1946
+
1947
+
1948
+ ### Documentation
1949
+
1950
+ * **retro:** add retro notes for issue [#87](https://github.com/gotgenes/pi-packages/issues/87) ([1701fe4](https://github.com/gotgenes/pi-packages/commit/1701fe41d582d7180b2622c2e03db954e8d2c2af))
1951
+
1952
+ ## [5.7.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.6.0...pi-subagents-v5.7.0) (2026-05-20)
1953
+
1954
+
1955
+ ### Features
1956
+
1957
+ * add session-context methods to SubagentRuntime ([3bbc6af](https://github.com/gotgenes/pi-packages/commit/3bbc6af5c3d9e6faef2112f6c92f991c4b27e38d))
1958
+ * add widget delegation methods to SubagentRuntime ([36350f4](https://github.com/gotgenes/pi-packages/commit/36350f413f44f432b14b0a42e27df2c8f5444a08))
1959
+
1960
+
1961
+ ### Documentation
1962
+
1963
+ * add [#87](https://github.com/gotgenes/pi-packages/issues/87) to architecture roadmap and fix package scope hallucinations ([ddee1a0](https://github.com/gotgenes/pi-packages/commit/ddee1a011acc3e20d17d2bdf46cc4603604c092d))
1964
+ * plan evolving SubagentRuntime from data bag to object with methods ([#87](https://github.com/gotgenes/pi-packages/issues/87)) ([4f2f16a](https://github.com/gotgenes/pi-packages/commit/4f2f16a8eea67e4959a754d172a9238b4b8662b1))
1965
+ * plan extract event handlers from index.ts ([#70](https://github.com/gotgenes/pi-packages/issues/70)) ([5fc115f](https://github.com/gotgenes/pi-packages/commit/5fc115f61bc52c5c88630ea7c869e1e34bde0130))
1966
+ * **retro:** add retro notes for issue [#72](https://github.com/gotgenes/pi-packages/issues/72) ([5b53189](https://github.com/gotgenes/pi-packages/commit/5b53189d6242b6f2262b9e7cd2d9dbdbe2a28c60))
1967
+ * update architecture roadmap with [#72](https://github.com/gotgenes/pi-packages/issues/72), [#76](https://github.com/gotgenes/pi-packages/issues/76), [#80](https://github.com/gotgenes/pi-packages/issues/80), [#84](https://github.com/gotgenes/pi-packages/issues/84) status ([176cb68](https://github.com/gotgenes/pi-packages/commit/176cb682001b21b7c223656b353b8cf2af412b0c))
1968
+
1969
+ ## [5.6.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.5.0...pi-subagents-v5.6.0) (2026-05-20)
1970
+
1971
+
1972
+ ### Features
1973
+
1974
+ * convert AgentManager to options-bag constructor with DI ([1292cec](https://github.com/gotgenes/pi-packages/commit/1292cec60c24d8e657985c53b9b3413089c2a79d))
1975
+ * define AgentRunner interface in agent-runner.ts ([6a3c85a](https://github.com/gotgenes/pi-packages/commit/6a3c85a445daf0e4e8c01620eb6ae1a8237f1766))
1976
+
1977
+
1978
+ ### Documentation
1979
+
1980
+ * mark [#84](https://github.com/gotgenes/pi-packages/issues/84) as done in plan ([#72](https://github.com/gotgenes/pi-packages/issues/72)) ([5cfa1ec](https://github.com/gotgenes/pi-packages/commit/5cfa1ecf080f95fbd6b4aec05b27cc9672f60267))
1981
+ * **retro:** add retro notes for issue [#84](https://github.com/gotgenes/pi-packages/issues/84) ([99d9016](https://github.com/gotgenes/pi-packages/commit/99d90161df5fe9d302514e33c2d2d9fbfb248f25))
1982
+
1983
+ ## [5.5.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.4.1...pi-subagents-v5.5.0) (2026-05-20)
1984
+
1985
+
1986
+ ### Features
1987
+
1988
+ * extract WorktreeManager interface and GitWorktreeManager class ([#84](https://github.com/gotgenes/pi-packages/issues/84)) ([23efb99](https://github.com/gotgenes/pi-packages/commit/23efb99e0d5e6bf6a65b758020e00af69fe84f6e))
1989
+
1990
+
1991
+ ### Documentation
1992
+
1993
+ * plan dependency-inject AgentManager's collaborators ([#72](https://github.com/gotgenes/pi-packages/issues/72)) ([a99374a](https://github.com/gotgenes/pi-packages/commit/a99374aa2b11defd301be97f64b9bdba2a618712))
1994
+ * plan extract GitWorktreeManager class ([#84](https://github.com/gotgenes/pi-packages/issues/84)) ([47d9d93](https://github.com/gotgenes/pi-packages/commit/47d9d9368fc2f4762bf31e312ebd84e4332ca4c4))
1995
+ * **retro:** add retro notes for issue [#76](https://github.com/gotgenes/pi-packages/issues/76) ([ceef7e0](https://github.com/gotgenes/pi-packages/commit/ceef7e05c8753bbbb6558ca507924b5562cc9c52))
1996
+ * update plan to reference [#84](https://github.com/gotgenes/pi-packages/issues/84) as prerequisite ([#72](https://github.com/gotgenes/pi-packages/issues/72)) ([d8ad3f5](https://github.com/gotgenes/pi-packages/commit/d8ad3f544929c569789d63fcf140bd300d5ef389))
1997
+
1998
+ ## [5.4.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.4.0...pi-subagents-v5.4.1) (2026-05-20)
1999
+
2000
+
2001
+ ### Documentation
2002
+
2003
+ * plan inject cwd into AgentManager constructor ([#76](https://github.com/gotgenes/pi-packages/issues/76)) ([7d3d50a](https://github.com/gotgenes/pi-packages/commit/7d3d50a7b7b96ef15cf5ffd7f609ed0baa46d6b9))
2004
+ * **retro:** add retro notes for issue [#80](https://github.com/gotgenes/pi-packages/issues/80) ([ac38a72](https://github.com/gotgenes/pi-packages/commit/ac38a7209788c7725c7307491a18fb5a8e83962d))
2005
+
2006
+ ## [5.4.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.3.0...pi-subagents-v5.4.0) (2026-05-20)
2007
+
2008
+
2009
+ ### Features
2010
+
2011
+ * add resolveAgentConfig with guaranteed-non-null fallback chain ([6b676a0](https://github.com/gotgenes/pi-packages/commit/6b676a0b59ebc3598d366cb5db600a8177b301e6))
2012
+
2013
+
2014
+ ### Documentation
2015
+
2016
+ * plan consolidate getConfig/getAgentConfig into resolveAgentConfig ([#80](https://github.com/gotgenes/pi-packages/issues/80)) ([1c14b47](https://github.com/gotgenes/pi-packages/commit/1c14b4760fa67dff5dbf17306d04bbe992b38bce))
2017
+ * **retro:** add retro notes for issue [#71](https://github.com/gotgenes/pi-packages/issues/71) ([a70e52f](https://github.com/gotgenes/pi-packages/commit/a70e52f840cf3b2f65689987dcb7316e32dc12ff))
2018
+
2019
+ ## [5.3.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.2.0...pi-subagents-v5.3.0) (2026-05-19)
2020
+
2021
+
2022
+ ### Features
2023
+
2024
+ * add assembleSessionConfig in session-config.ts ([ee8076d](https://github.com/gotgenes/pi-packages/commit/ee8076dc2292ec957b64894af3fcd22567f23be5))
2025
+
2026
+
2027
+ ### Documentation
2028
+
2029
+ * add [#80](https://github.com/gotgenes/pi-packages/issues/80) to architecture roadmap, mark [#69](https://github.com/gotgenes/pi-packages/issues/69) and [#71](https://github.com/gotgenes/pi-packages/issues/71) done ([5744e28](https://github.com/gotgenes/pi-packages/commit/5744e28ac993454f8cb33afb18e5247569f9f971))
2030
+ * plan session-config assembler extraction ([#71](https://github.com/gotgenes/pi-packages/issues/71)) ([5d2cd4f](https://github.com/gotgenes/pi-packages/commit/5d2cd4f8de214a03a11688b56221679591aedafd))
2031
+ * **retro:** add retro notes for issue [#69](https://github.com/gotgenes/pi-packages/issues/69) ([18cbbdb](https://github.com/gotgenes/pi-packages/commit/18cbbdb627f2ae63f8109c1f5597c31265738415))
2032
+
2033
+ ## [5.2.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.1.0...pi-subagents-v5.2.0) (2026-05-19)
2034
+
2035
+
2036
+ ### Features
2037
+
2038
+ * add SubagentRuntime interface and factory ([b316c12](https://github.com/gotgenes/pi-packages/commit/b316c1222cecf34d1149fa2a847a1c11883164c1))
2039
+ * thread defaultMaxTurns and graceTurns through RunOptions ([db9f1ac](https://github.com/gotgenes/pi-packages/commit/db9f1ac7c47b7b42559ddf659f86c02f78a82d23))
2040
+
2041
+
2042
+ ### Bug Fixes
2043
+
2044
+ * remove pi-subagents/README.md from rumdl exclude and fix 131 lint issues ([50f334c](https://github.com/gotgenes/pi-packages/commit/50f334c83edf08ee2cb413b1e6520f6c5a26cd41))
2045
+
2046
+
2047
+ ### Documentation
2048
+
2049
+ * enforce one-sentence-per-line across all markdown files ([a533869](https://github.com/gotgenes/pi-packages/commit/a533869e09ea33a2da8c4ac022d9be4674be4b18))
2050
+ * one sentence per line throughout architecture.md; add Issue-prefix and sentence rules to markdown-conventions ([f274ea8](https://github.com/gotgenes/pi-packages/commit/f274ea8003e23c3ad37516422d052f7c815da638))
2051
+ * **pi-subagents:** add structural refactoring roadmap with issue sequencing ([a820538](https://github.com/gotgenes/pi-packages/commit/a8205382624acbd26721594630d25976373fc617))
2052
+ * plan SubagentRuntime to eliminate module-scope mutable state ([#69](https://github.com/gotgenes/pi-packages/issues/69)) ([fa5eee4](https://github.com/gotgenes/pi-packages/commit/fa5eee4434724fd47dc384092787b50ea9859f4d))
2053
+ * **retro:** add follow-up retro notes for issue [#57](https://github.com/gotgenes/pi-packages/issues/57) ([629e11f](https://github.com/gotgenes/pi-packages/commit/629e11f2eaed1294fa756ad3e54fe692428e1c0e))
2054
+ * **retro:** add retro notes for issue [#57](https://github.com/gotgenes/pi-packages/issues/57) ([1701841](https://github.com/gotgenes/pi-packages/commit/1701841f387b3418286f670ae0eb10613b5f2b4b))
2055
+
2056
+ ## [5.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v5.0.0...pi-subagents-v5.1.0) (2026-05-19)
2057
+
2058
+
2059
+ ### Features
2060
+
2061
+ * add debugLog utility gated on PI_SUBAGENTS_DEBUG ([#57](https://github.com/gotgenes/pi-packages/issues/57)) ([2b8874a](https://github.com/gotgenes/pi-packages/commit/2b8874aeaa28bc09550dd0f8977b7b57d996b254))
2062
+ * thread debugLog into agent-manager and notification catch blocks ([#57](https://github.com/gotgenes/pi-packages/issues/57)) ([07943a3](https://github.com/gotgenes/pi-packages/commit/07943a341fbe0a0a35f25af3f4b15bc28cdee7a2))
2063
+ * thread debugLog into custom-agents and memory catch blocks ([#57](https://github.com/gotgenes/pi-packages/issues/57)) ([e239925](https://github.com/gotgenes/pi-packages/commit/e2399253410dc644b38269b52de6e6a4bfa75d3a))
2064
+ * thread debugLog into env catch blocks ([#57](https://github.com/gotgenes/pi-packages/issues/57)) ([f5ff82f](https://github.com/gotgenes/pi-packages/commit/f5ff82f0c06be3c1dfe5d5ec0ff3621105b55ad0))
2065
+ * thread debugLog into output-file catch block ([#57](https://github.com/gotgenes/pi-packages/issues/57)) ([a72b11b](https://github.com/gotgenes/pi-packages/commit/a72b11bc1f36bf256f520b9f13e546295fc6cb64))
2066
+ * thread debugLog into skill-loader catch block ([#57](https://github.com/gotgenes/pi-packages/issues/57)) ([b57231c](https://github.com/gotgenes/pi-packages/commit/b57231cc5de56a834c34f9e171b909d03939505c))
2067
+ * thread debugLog into worktree catch blocks ([#57](https://github.com/gotgenes/pi-packages/issues/57)) ([049f489](https://github.com/gotgenes/pi-packages/commit/049f4891ab5b09c9d1a301f7d8af797cb165cb4c))
2068
+
2069
+
2070
+ ### Documentation
2071
+
2072
+ * plan structured debug logging for silenced catch blocks ([#57](https://github.com/gotgenes/pi-packages/issues/57)) ([28e403e](https://github.com/gotgenes/pi-packages/commit/28e403ea2605405da1a57871af946ee2971ee289))
2073
+
2074
+ ## [5.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v4.1.1...pi-subagents-v5.0.0) (2026-05-19)
2075
+
2076
+
2077
+ ### ⚠ BREAKING CHANGES
2078
+
2079
+ * All @earendil-works/pi-* peerDependencies and devDependencies now require >=0.75.0, aligning with Pi's Node 22 minimum.
2080
+ * Minimum supported Node.js version is now >=22, aligning with Pi v0.75.0. tsconfig target raised from ES2023 to ES2024.
2081
+ - ES2024 APIs (Promise.withResolvers, Object.groupBy, Map.groupBy, Array.fromAsync) are now allowed.
2082
+ - @types/node catalog aligned to ^22.15.3.
2083
+ - pi-autoformat now declares engines.node for consistency.
2084
+
2085
+ ### Features
2086
+
2087
+ * raise minimum Node.js version to 22 and bump tsconfig target to ES2024 ([98a5b01](https://github.com/gotgenes/pi-packages/commit/98a5b01ca20aa1feed14a60bfa7bb9e082c9914b))
2088
+ * raise minimum Pi dependency to v0.75.0 ([1068329](https://github.com/gotgenes/pi-packages/commit/10683290d2a789880848bf7eb093d4307b6eff40))
2089
+
2090
+
2091
+ ### Documentation
2092
+
2093
+ * **retro:** add retro notes for issue [#54](https://github.com/gotgenes/pi-packages/issues/54) ([d753eb3](https://github.com/gotgenes/pi-packages/commit/d753eb3f836a28f089197a45dd582dc4be88872d))
2094
+
2095
+ ## [4.1.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v4.1.0...pi-subagents-v4.1.1) (2026-05-18)
2096
+
2097
+
2098
+ ### Documentation
2099
+
2100
+ * plan decompose index.ts into tool + menu modules ([#54](https://github.com/gotgenes/pi-packages/issues/54)) ([7adf954](https://github.com/gotgenes/pi-packages/commit/7adf954f37800ace0bcc9d5eb65045e2e133e4f2))
2101
+ * **retro:** add retro notes for issue [#53](https://github.com/gotgenes/pi-packages/issues/53) ([f8ca910](https://github.com/gotgenes/pi-packages/commit/f8ca9101576eaad8639d1bb2579f0e631a075038))
2102
+
2103
+ ## [4.1.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v4.0.0...pi-subagents-v4.1.0) (2026-05-18)
2104
+
2105
+
2106
+ ### Features
2107
+
2108
+ * add resolveInvocationModel to model-resolver ([462b519](https://github.com/gotgenes/pi-packages/commit/462b5194fdfdf86d8d2d166a99472c651e00b76b))
2109
+
2110
+
2111
+ ### Bug Fixes
2112
+
2113
+ * remove quotes from rumdl glob patterns in lint:md script ([a8a0c62](https://github.com/gotgenes/pi-packages/commit/a8a0c62feb2fc45cf68cd7d777259dc159de671b))
2114
+
2115
+
2116
+ ### Documentation
2117
+
2118
+ * plan extract model resolution from Agent.execute ([#53](https://github.com/gotgenes/pi-packages/issues/53)) ([4c07a47](https://github.com/gotgenes/pi-packages/commit/4c07a474f9f25043a2fa3a4f2829e97eb9bb7666))
2119
+ * **retro:** add retro notes for issue [#48](https://github.com/gotgenes/pi-packages/issues/48) ([f244c04](https://github.com/gotgenes/pi-packages/commit/f244c04c64f768e724e89d77962f2fb63715b998))
2120
+
2121
+ ## [4.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v3.0.0...pi-subagents-v4.0.0) (2026-05-17)
2122
+
2123
+
2124
+ ### ⚠ BREAKING CHANGES
2125
+
2126
+ * The untyped globalThis[Symbol.for("pi-subagents:manager")] accessor is removed. Use getSubagentsService() from the package's public exports instead.
2127
+ * The public API surface is now exported from src/service.ts. The old untyped Symbol.for("pi-subagents:manager") global will be removed in a subsequent commit.
2128
+
2129
+ ### Features
2130
+
2131
+ * add SubagentRecord serializer ([d7afb45](https://github.com/gotgenes/pi-packages/commit/d7afb4569c9e28ce5d4bf7fb1ac560b0bcbb7c90))
2132
+ * add SubagentsService types and accessor functions ([468623c](https://github.com/gotgenes/pi-packages/commit/468623c936f45cc30d3c5dde134cc2d21da4a0c4))
2133
+ * expose public service entry point via package exports ([0dbeaaf](https://github.com/gotgenes/pi-packages/commit/0dbeaaf39c79717df8cabf59e8ba53652f9bc7af))
2134
+ * implement getRecord and listAgents on SubagentsService adapter ([a6da473](https://github.com/gotgenes/pi-packages/commit/a6da47393f6faa3fef93bd065c1ad1a0613d1636))
2135
+ * implement spawn with model resolution on SubagentsService adapter ([fd70d82](https://github.com/gotgenes/pi-packages/commit/fd70d828905bc3415fa8b8aebfe4c2a5355209cb))
2136
+ * implement steer, abort, waitForAll, hasRunning on adapter ([00f0b99](https://github.com/gotgenes/pi-packages/commit/00f0b99ea978625798ba67a40b375e42006d33e4))
2137
+ * publish SubagentsService at extension init, remove old untyped global ([6047e2b](https://github.com/gotgenes/pi-packages/commit/6047e2bbbaf87b5e28325b084b09daf2b0c9b6b9))
2138
+
2139
+
2140
+ ### Documentation
2141
+
2142
+ * plan SubagentsService implementation ([#48](https://github.com/gotgenes/pi-packages/issues/48)) ([6bd2af8](https://github.com/gotgenes/pi-packages/commit/6bd2af862fb7e7f429617c154391c800b50c5d86))
2143
+ * **retro:** add retro notes for issue [#49](https://github.com/gotgenes/pi-packages/issues/49) ([69a5bfc](https://github.com/gotgenes/pi-packages/commit/69a5bfc94edfc445d46fb495449649998614f86d))
2144
+
2145
+ ## [3.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v2.0.0...pi-subagents-v3.0.0) (2026-05-17)
2146
+
2147
+
2148
+ ### ⚠ BREAKING CHANGES
2149
+
2150
+ * The JoinMode type and defaultJoinMode setting are removed from the public settings interface.
2151
+ * The join-mode setting (smart/async/group) is removed. Background agents always notify individually on completion.
2152
+ * The subagents:ready event is no longer emitted. Extensions should use the typed SubagentsAPI ([#48](https://github.com/gotgenes/pi-packages/issues/48)) instead of event-based RPC discovery.
2153
+ * The subagents:rpc:ping, subagents:rpc:spawn, and subagents:rpc:stop event channels are no longer registered. Use the typed SubagentsAPI via Symbol.for() instead.
2154
+
2155
+ ### Features
2156
+
2157
+ * remove group-join and cross-extension-rpc source ([b7d7f21](https://github.com/gotgenes/pi-packages/commit/b7d7f21af265e2ff95f0534f5c0b51f71b8f1e7f))
2158
+ * remove group-join wiring from index.ts ([4e2dc7f](https://github.com/gotgenes/pi-packages/commit/4e2dc7f8a98e441308f229745dfc42d09784d786))
2159
+ * remove join-mode types and settings ([1d98793](https://github.com/gotgenes/pi-packages/commit/1d98793eb85aa3d9815274aa443c34bb4434b6f9))
2160
+ * remove RPC wiring from index.ts ([3a960af](https://github.com/gotgenes/pi-packages/commit/3a960af8f6bb83219497d6229d12c6859cf3eb71))
2161
+
2162
+
2163
+ ### Documentation
2164
+
2165
+ * plan removal of group-join, output-file, and ad-hoc RPC ([#49](https://github.com/gotgenes/pi-packages/issues/49)) ([853a97f](https://github.com/gotgenes/pi-packages/commit/853a97f1c47051868b2ffddd7d5509f765a80d07))
2166
+ * remove group-join and RPC from README and AGENTS ([9f65f7a](https://github.com/gotgenes/pi-packages/commit/9f65f7a21611af8dead00a5fb34d7d10f3d6ab43))
2167
+
2168
+ ## [2.0.0](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v1.0.2...pi-subagents-v2.0.0) (2026-05-17)
2169
+
2170
+
2171
+ ### ⚠ BREAKING CHANGES
2172
+
2173
+ * the `schedule` parameter is removed from the Agent tool. The `subagents:scheduled` and `subagents:scheduler_ready` events are no longer emitted. The `/agents → Settings → Scheduling` toggle is removed.
2174
+ * the `schedule` parameter is removed from the Agent tool and the `subagents:scheduled` / `subagents:scheduler_ready` events are no longer emitted. System cron (or launchd) invoking `pi` directly is the recommended replacement for recurring/delayed agent tasks.
2175
+
2176
+ ### Features
2177
+
2178
+ * remove scheduled subagents source and tests ([860a03f](https://github.com/gotgenes/pi-packages/commit/860a03f08a6dbd418b437a72c2fd05ea416abacb))
2179
+ * remove scheduler wiring, types, and settings ([d5184e8](https://github.com/gotgenes/pi-packages/commit/d5184e88b181e60809b7fecc6a0971a18723bb9d))
2180
+
2181
+
2182
+ ### Documentation
2183
+
2184
+ * correct Module-Level Changes table in plan [#52](https://github.com/gotgenes/pi-packages/issues/52) (AGENTS.md → SKILL.md) ([93337e2](https://github.com/gotgenes/pi-packages/commit/93337e2a6b0424dc64e0adaf7a5c6ae6913c5991))
2185
+ * plan remove in-process scheduled subagents ([#52](https://github.com/gotgenes/pi-packages/issues/52)) ([bc548a4](https://github.com/gotgenes/pi-packages/commit/bc548a4dc6be4c5f810e9e33abcc76bc0d84f0da))
2186
+ * remove scheduling from README, architecture doc, and skill ([b2f16f2](https://github.com/gotgenes/pi-packages/commit/b2f16f2a53674a6a2675024dfc038c4243edd299))
2187
+ * **retro:** add retro notes for issue [#51](https://github.com/gotgenes/pi-packages/issues/51) ([0f741de](https://github.com/gotgenes/pi-packages/commit/0f741dedbe4a8e26fd1e39098fb153e4511082b9))
2188
+
2189
+ ## [1.0.2](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v1.0.1...pi-subagents-v1.0.2) (2026-05-17)
2190
+
2191
+
2192
+ ### Documentation
2193
+
2194
+ * plan update ADR 0001 to reflect hard-fork decision ([#51](https://github.com/gotgenes/pi-packages/issues/51)) ([bd4899a](https://github.com/gotgenes/pi-packages/commit/bd4899a0d7e72c43b80c3c07c07ccc32dc0df8ed))
2195
+ * update ADR 0001 to reflect hard-fork decision ([#51](https://github.com/gotgenes/pi-packages/issues/51)) ([387e0ad](https://github.com/gotgenes/pi-packages/commit/387e0ad06ec1cf015c1d3d1d9852a1be015fc283))
2196
+
2197
+ ## [1.0.1](https://github.com/gotgenes/pi-packages/compare/pi-subagents-v1.0.0...pi-subagents-v1.0.1) (2026-05-17)
2198
+
2199
+
2200
+ ### Bug Fixes
2201
+
2202
+ * restore per-package lint:md and lint scripts ([0e42617](https://github.com/gotgenes/pi-packages/commit/0e42617c443a7f8695f33855fa17058fc1712f27))
2203
+ * use root markdownlint config from all packages ([30192f8](https://github.com/gotgenes/pi-packages/commit/30192f8ccfc5c3c420f9f9b602df174baf263e92))
2204
+
2205
+
2206
+ ### Documentation
2207
+
2208
+ * add redirect AGENTS.md to each package subdirectory ([cbdcd29](https://github.com/gotgenes/pi-packages/commit/cbdcd297194c814f545ae93eaa7418e9337450d3))
2209
+
2210
+
2211
+ ### Miscellaneous Chores
2212
+
2213
+ * consolidate configs into monorepo root ([8583eaf](https://github.com/gotgenes/pi-packages/commit/8583eaf0764ac98def1987f20fafcc25e912b134))
2214
+ * remove per-package pi-autoformat configs ([b2d405a](https://github.com/gotgenes/pi-packages/commit/b2d405a0a278341e4f6ff1c8b607533eaa4f021a))
2215
+ * replace markdownlint-cli2 with rumdl ([d8dc789](https://github.com/gotgenes/pi-packages/commit/d8dc7897d854bf11396b85bc8c365e8e2ed7e66c))
2216
+ * update package.json URLs to monorepo ([b92dbfa](https://github.com/gotgenes/pi-packages/commit/b92dbfaeaeb6cf2823272cb6fb6f206fb99a5009))
2217
+
2218
+ ## [1.0.0](https://github.com/gotgenes/pi-subagents/compare/v0.7.2...v1.0.0) (2026-05-12)
2219
+
2220
+
2221
+ ### ⚠ BREAKING CHANGES
2222
+
2223
+ * Peer dependencies now require @earendil-works/pi-* (>=0.74.0) instead of the deprecated @mariozechner/pi-* scope.
2224
+
2225
+ ### Features
2226
+
2227
+ * **prompts:** inject &lt;active_agent name="..."/&gt; tag for permission resolution ([99873ee](https://github.com/gotgenes/pi-subagents/commit/99873eec57550d0d32c7751f34aa7d25587b6afd))
2228
+
2229
+
2230
+ ### Bug Fixes
2231
+
2232
+ * **agent-runner:** re-filter active tools after bindExtensions so extension tools land in child ([97e0ad1](https://github.com/gotgenes/pi-subagents/commit/97e0ad139884eaa006caa0e39f9d2273ffff592f))
2233
+
2234
+
2235
+ ### Documentation
2236
+
2237
+ * add ADR 0001 documenting Patch 1 and upstream-PR deferrals ([ca711bc](https://github.com/gotgenes/pi-subagents/commit/ca711bc19c8946b52855c3548bd81c4fa8cf3491))
2238
+
2239
+
2240
+ ### Miscellaneous Chores
2241
+
2242
+ * add prek hooks, markdownlint config, AGENTS.md, and docs scaffold ([ae509c7](https://github.com/gotgenes/pi-subagents/commit/ae509c7c8194ba83fbb148f3da7f845466185563))
2243
+ * rename to @gotgenes/pi-subagents, peer-dep rename, pi-agent-core fix, switch to pnpm ([e1ae8c4](https://github.com/gotgenes/pi-subagents/commit/e1ae8c4d4b470d8e3fea0233c05d57c10b073bd7))
2244
+
2245
+ ## [Unreleased]
2246
+
2247
+ ## [0.7.2] - 2026-05-12
2248
+
2249
+ > **Heads-up — behavior changes in skill preloading:**
2250
+ > - **`.txt` and extensionless flat skill files are no longer loaded.** Only `<name>.md` flat files and `<name>/SKILL.md` directory skills resolve now. Rename any `<name>.txt` or extensionless skill files to `<name>.md`.
2251
+
2252
+ ### Added
2253
+ - **Pi-standard `<name>/SKILL.md` directory layout** is now discovered alongside flat `<name>.md` files. Top-level and nested matches both resolve via BFS — for skill `foo`, the loader checks `<root>/foo/SKILL.md`, then recursively descends looking for `*/.../foo/SKILL.md`. Recursion skips dotfile directories and `node_modules`; a directory that itself contains `SKILL.md` is treated as a single skill (Pi's "skills don't nest" rule).
2254
+ - **Five discovery roots**, checked in precedence order:
2255
+ - `<cwd>/.pi/skills/` (project, Pi)
2256
+ - `<cwd>/.agents/skills/` (project, [Agent Skills spec](https://agentskills.io/integrate-skills))
2257
+ - `$PI_CODING_AGENT_DIR/skills/` — default `~/.pi/agent/skills/` (user, Pi)
2258
+ - `~/.agents/skills/` (user, Agent Skills spec)
2259
+ - `~/.pi/skills/` (legacy global, kept for backward compatibility)
2260
+ - **Symlink rejection broadened** to the new layouts: symlinked skill roots, nested skill directories, and `SKILL.md` files inside otherwise-real directories are all rejected (intentional deviation from Pi, which follows symlinks).
2261
+ - **Deterministic traversal order** — entries are sorted byte-order so collisions resolve identically across filesystems. Pi's iteration order is `readdirSync`-dependent.
2262
+ - **Resolved spawn args are now shown in the dedicated conversation viewer** ([#62](https://github.com/tintinweb/pi-subagents/issues/62)). Open `/subagent` → Running Agents → select an agent: a second header row displays the effective invocation — model override (when different from parent), `thinking: <level>`, `isolated`, `worktree`, `inherit context`, `background`, and `max turns: N`. Tags appear when the resolved value is notable (e.g. `isolated: true`), not just when the caller explicitly set it; `max turns` is the one exception and shows only when explicitly configured. Lets you verify the parent agent honored your spawn instructions without scrolling back through the chat. Snapshot stored on the new `AgentRecord.invocation` field. The same tag set is also surfaced on the `Agent` tool-call result render (which previously showed a narrower subset).
2263
+ - **`Shift+↑` / `Shift+↓` scroll a full page in the conversation viewer** — same behavior as `PgUp` / `PgDn`. Note: some terminal emulators intercept Shift+arrows for text selection or tab switching, in which case `PgUp`/`PgDn` remain available.
2264
+
2265
+ ### Changed
2266
+ - **`.txt` and extensionless flat skill files are no longer loaded.** Pi only supports `.md`; we now match. **Migration:** rename any `<name>.txt` / `<name>` skill files to `<name>.md`.
2267
+ - **Conversation viewer no longer fills the full screen.** The overlay is now capped at 70% of terminal height (90% width unchanged), and the viewer's internal viewport mirrors that cap so the footer/scroll indicator can't be clipped.
2268
+
2269
+ ## [0.7.1] - 2026-05-07
2270
+
2271
+ > **Heads-up — behavior change:**
2272
+ > - `isolation: "worktree"` now fails loud (returns an error) instead of silently falling back to the main tree. Affects users running pi in a non-git directory or a fresh repo with no commits.
2273
+
2274
+ ### Changed
2275
+ - **`isolation: "worktree"` now fails loud instead of silently falling back.** Previously when `createWorktree` returned undefined (not a git repo, no commits yet, or `git worktree add` failed), the agent ran in the main `cwd` with a `[WARNING: ...]` block prepended to its prompt — visible only to the LLM, never surfaced to the caller. Now the failure throws a structured error that propagates back to the `Agent` tool response; no agent record is created. Failed scheduled fires are recorded as `lastStatus: "error"` with the reason in the `subagents:scheduled` error event. Queued background spawns whose worktree creation fails when they dequeue are marked terminal-error and don't block the rest of the queue.
2276
+
2277
+ ### Fixed
2278
+
2279
+ - **Headless `pi --print` runs no longer hang or crash after background
2280
+ subagents complete.** Cleanup timers no longer keep the process alive, and
2281
+ stale completion notifications are treated as best-effort shutdown side
2282
+ effects.
2283
+
2284
+ ## [0.7.0] - 2026-05-04
2285
+
2286
+ > **Heads-up — behavior changes:**
2287
+ > - `subagents:completed`/`failed` event `tokens.total` now excludes `cacheRead` (previously double-counted across turns) — see Fixed [#38].
2288
+ > - Cron `?` is now a wildcard (same as `*`), not "current time value" — affects Quartz-style expressions only.
2289
+
2290
+ ### Changed
2291
+ - **`@mariozechner/pi-{ai,coding-agent,tui}` moved to `peerDependencies` (`>=0.70.5`).** Avoids duplicate framework instances when the host loads this extension.
2292
+ - **`@sinclair/typebox` pinned from `latest` to `^0.34.49`** so installs are reproducible.
2293
+ - **`croner` bumped 8 → 10.** Heads-up: in cron strings, `?` now means wildcard (same as `*`) instead of "current time value" — affects Quartz-style expressions only.
2294
+
2295
+ ### Added
2296
+ - **Master switch for scheduling** — new `schedulingEnabled` setting (default `true`) under `/agents → Settings → Scheduling`. When set to `false`: the `schedule` parameter and its guideline are stripped from the `Agent` tool spec at registration (zero LLM-context cost), the scheduler does not bind to the session, the `/agents → Scheduled jobs` menu entry is hidden, and any in-flight scheduler is stopped immediately. The schema-level removal applies on next pi session; the runtime kill (menu, fire path) takes effect immediately. Persisted at `<cwd>/.pi/subagents.json`.
2297
+ - **Schedule subagent spawns** — the `Agent` tool now accepts an optional `schedule` parameter. When set, the spawn registers a job that fires later instead of running immediately. Three formats: 6-field cron (`"0 0 9 * * 1"` — 9am every Monday), interval (`"5m"`, `"1h"`), or one-shot (`"+10m"` or ISO timestamp). Returns the job ID. Schedules are session-scoped — they reset on `/new`, restore on `/resume` (mirrors the persistence model of pi-chonky-tasks). Storage at `<cwd>/.pi/subagent-schedules/<sessionId>.json`, with PID-based file locking + atomic temp+rename for concurrent-instance safety. **Result delivery is identical to today's background-spawn completions**: when the scheduled agent finishes, the existing `subagent-notification` followUp path emits the result to the conversation — no new delivery code, no new message types. **Concurrency**: scheduled fires bypass `maxConcurrent` so a 5-minute interval can't be deferred behind 4 long-running manual agents. **Management**: `/agents` → "Scheduled jobs" lists active jobs and lets you cancel any one of them. Creation is via the `Agent` tool only — no parallel manual-create wizard in this iteration. **Events**: `subagents:scheduled` ({ type: "added" | "removed" | "updated" | "fired" | "error", … }) and `subagents:scheduler_ready` for cross-extension consumers. **Restrictions**: `schedule` is incompatible with `inherit_context` (no parent at fire time) and `resume` (schedules create fresh agents); forces `run_in_background: true`. Scheduler engine mirrors `pi-cron-schedule` (`croner` for cron, `setInterval`/`setTimeout` for interval/once); past one-shot timestamps and invalid cron expressions are caught at create time.
2298
+ - **Context-window utilization indicator in the subagent overlay** — token count is now followed by a colored `(NN%)` showing how full the subagent's context is right now (`estimateContextTokens(messages) / model.contextWindow * 100`, sourced from upstream `contextUsage.percent`). Threshold colors: <70% dim, 70–85% warning, ≥85% error. Gracefully omitted when the model has no `contextWindow` declared, or right after compaction before the next assistant turn (`tokens` is `null` in that window). The same annotation slot also surfaces a compaction count `↻N` when the agent has compacted at least once — e.g. `12.3k token (84% · ↻3)` (percent + compactions joined with `·`), `12.3k token (↻1)` (compactions only, immediately post-compaction while percent is still null). The compaction glyph stays dim regardless; the percent's threshold color carries the urgency signal. Two live overlays get the annotations (running stats line; inspect-overlay header); post-completion notifications and result/event payloads only get the count (the indicator is no longer actionable once the agent is done).
2299
+ - **Token usage and context% exposed to the parent agent** at every interaction surface — `get_subagent_result` adds `Context: NN%` to its stats line; `steer_subagent` returns a `Current state: 12.3k token · 5 tool uses · context 72% full` line so the steering agent knows whether it has room before sending more context; `task-notification` XML adds `<context_percent>NN</context_percent>` (omitted when null). All plain-text, no ANSI codes — designed for LLM consumption, not human display.
2300
+ - **New `subagents:compacted` lifecycle event** fires when a subagent's session successfully compacts. Payload: `{ id, type, description, reason: "manual" | "threshold" | "overflow", tokensBefore, compactionCount }` — `tokensBefore` is upstream's pre-compaction context size estimate; `compactionCount` is the running total for this agent (also persisted on `AgentRecord.compactionCount` and surfaced in `get_subagent_result` / `steer_subagent` / `task-notification` when > 0). Aborted compactions don't fire. Routed through a new manager-level `onCompact` constructor callback, matching the existing `onStart` / `onComplete` pattern.
2301
+
2302
+ ### Fixed
2303
+ - **Subagent token count was inflated 5–15× and reset mid-run** ([#38](https://github.com/tintinweb/pi-subagents/issues/38)). Two distinct bugs in the same field. (1) Upstream `getSessionStats().tokens.total` sums per-turn `cacheRead` across every assistant message — but each turn's `cacheRead` is the *cumulative* cached prefix re-read on that one API call, so summing N turns counts the prefix N times (quadratic inflation, very visible on long sessions). (2) Even with that fixed, anything derived from `session.state.messages` resets at compaction because upstream replaces the array via `this.agent.state.messages = sessionContext.messages`. Fix replaces all six display readers with a lifetime accumulator (`AgentRecord.lifetimeUsage` and `AgentActivity.lifetimeUsage` — `{ input, output, cacheWrite }`) fed by a new `onAssistantUsage` callback dispatched from `message_end` events in both `runAgent` and `resumeAgent`. The accumulator is independent of `state.messages` mutation, so it survives compaction; total = input + output + cacheWrite by construction (cacheRead deliberately excluded — same prefix-double-counting reason). The `subagents:completed`/`failed` event payload's `tokens` field is now also lifetime-accumulated for `input`, `output`, and `total` together (was: `total` lifetime, `input`/`output` session-derived → inconsistent after compaction).
2304
+ - **ESC during a foreground `Agent` call now actually stops the subagent** ([#44](https://github.com/tintinweb/pi-subagents/pull/44) — thanks [@Zeng-Zer](https://github.com/Zeng-Zer)). Pi's interrupt path is `esc → agent.abort()` on the parent → `AbortSignal` delivered to every tool's `execute(toolCallId, params, signal, …)`, but the `Agent` tool dropped that signal on the floor: subagents ran on their own independent `AbortController` inside `AgentManager`, so the parent abort was invisible and the subagent kept running until natural completion or `max_turns`. Fix threads `signal` through `Agent.execute` → `manager.spawnAndWait()` → `SpawnOptions.signal`, and `AgentManager.startAgent()` now attaches an `{ once: true }` `"abort"` listener that calls `this.abort(id)` (which sets `status: "stopped"` and aborts the child controller). The listener is detached in both `.then` and `.catch` to avoid leaking on natural settle. **Scope:** foreground only — background agents intentionally outlive the parent tool call, so their spawn deliberately does not forward `signal`. Resume path (`AgentManager.resume()`) has the same blind spot and is tracked as a follow-up.
2305
+
2306
+ ## [0.6.3] - 2026-04-28
2307
+
2308
+ ### Fixed
2309
+ - **`run_in_background: true` (and `inherit_context`, `isolated`) silently ignored on default agents** ([#37](https://github.com/tintinweb/pi-subagents/issues/37) — thanks [@kylesnowschwartz](https://github.com/kylesnowschwartz) for the diagnosis). The three built-in defaults (`general-purpose`, `Explore`, `Plan`) baked `runInBackground: false`, `inheritContext: false`, and `isolated: false` into their configs. `resolveAgentInvocationConfig` uses `agentConfig?.field ?? params.field ?? false`, and `??` only falls through on `null`/`undefined` — so an explicit `false` from the agent config silently won over the caller's `true`. Calling `Agent({ subagent_type: "general-purpose", run_in_background: true })` returned the result inline instead of backgrounding, blocking the parent UI for the agent's full runtime. Fix drops the three lines from each default (and from the unreachable defensive fallback in `agent-runner.ts`) — the type already declared each as `field?: boolean` with JSDoc *"undefined = caller decides"*, so the runtime now matches the documented contract. **Behavior:** custom agents that explicitly set these fields in frontmatter still lock as before (the v0.5.1 "frontmatter is authoritative" guarantee is preserved); the fix only stops *defaults* from spuriously claiming an opinion on callsite-strategy fields they don't actually have. The unreachable fallback now spreads `DEFAULT_AGENTS.get("general-purpose")` instead of duplicating the config inline, so future drift is impossible.
2310
+
2311
+ ## [0.6.2] - 2026-04-28
2312
+
2313
+ ### Fixed
2314
+ - **`Agent` tool fails on Windows with `ENOENT` creating output directory** ([#27](https://github.com/tintinweb/pi-subagents/issues/27) — thanks [@sixnathan](https://github.com/sixnathan) for the diagnosis). The cwd-encoding regex in `output-file.ts` only handled POSIX `/` separators, so on Windows `cwd = "C:\\Users\\foo\\project"` survived unchanged and `path.join(tmpRoot, encoded, …)` produced an invalid nested-absolute path. Now extracts a small `encodeCwd()` helper that handles both `/` and `\\` separators, strips the Windows drive-letter prefix, and preserves UNC server/share segments. The `chmodSync(root, 0o700)` call is also wrapped in a try/catch that swallows errors only on Windows (where chmod is a no-op and can throw on some filesystems); on Unix the error still propagates so umask-defeating `0o700` enforcement is preserved.
2315
+
2316
+ ## [0.6.1] - 2026-04-25
2317
+
2318
+ ### Added
2319
+ - **Persistent `/agents` → Settings** ([#24](https://github.com/tintinweb/pi-subagents/issues/24)) — the four runtime tuning values (`maxConcurrent`, `defaultMaxTurns`, `graceTurns`, `defaultJoinMode`) now survive pi restarts via a two-file dual-scope model mirroring pi's own `SettingsManager`. Global `~/.pi/agent/subagents.json` provides machine-wide defaults (edit by hand; the menu never writes here); project `<cwd>/.pi/subagents.json` holds per-project overrides (written by `/agents` → Settings). Load merges both with project winning on conflicts. Invalid fields are silently dropped per field; malformed JSON emits a warning to stderr and falls back to defaults so startup always proceeds; write failures downgrade the settings toast to a warning with `(session only; failed to persist)` so changes aren't silently reverted on next restart.
2320
+ - **New lifecycle events** — `subagents:settings_loaded` (emitted once at extension init with the merged settings) and `subagents:settings_changed` (emitted on each `/agents` → Settings mutation with the new snapshot and a `persisted: boolean` flag so listeners can react to write failures).
2321
+
2322
+ ### Fixed
2323
+ - **`AGENTS.md` / `CLAUDE.md` / `APPEND_SYSTEM.md` no longer leak into sub-agent prompts** ([#26](https://github.com/tintinweb/pi-subagents/pull/26) — thanks [@mikeyobrien](https://github.com/mikeyobrien) for the diagnosis). Upstream `buildSystemPrompt()` re-appends `contextFiles` and `appendSystemPrompt` *after* our `systemPromptOverride` runs, which silently defeated `prompt_mode: replace` and `isolated: true` — parent project context (e.g. autoresearch-mode blocks) was bleeding into fresh `Explore` / custom sub-agents regardless of frontmatter. Fix uses upstream's `noContextFiles: true` flag (skips the load entirely, introduced in pi 0.68) plus `appendSystemPromptOverride: () => []` (no flag equivalent for append sources). **Behavior change:** subagents no longer implicitly inherit parent `AGENTS.md`/`CLAUDE.md`/`APPEND_SYSTEM.md`. To get parent project context into a subagent, use `prompt_mode: append` (parent's already-built system prompt flows in via `systemPromptOverride`), or `inherit_context: true` (parent conversation), or inline the content into the agent's own frontmatter.
2324
+ - **Custom agent discovery respects `PI_CODING_AGENT_DIR`** ([#35](https://github.com/tintinweb/pi-subagents/pull/35), closes [#23](https://github.com/tintinweb/pi-subagents/issues/23) — thanks [@Amolith](https://github.com/Amolith) for the diagnosis). Two remaining hardcoded `~/.pi/agent/agents/` paths in `custom-agents.ts` and `index.ts` bypassed the env var, so users who relocated their agent directory (e.g. via `PI_CODING_AGENT_DIR`) still had global agents loaded from the default location and help text referencing the wrong path. Both now use upstream `getAgentDir()`, consistent with `agent-runner.ts` and `settings.ts`; tilde expansion is handled by upstream.
2325
+
2326
+ ## [0.6.0] - 2026-04-24
2327
+
2328
+ > **⚠️ Breaking: drops support for `pi` < 0.68.** The upstream `pi-coding-agent` package shipped breaking API changes in v0.68 (and further ones in v0.70). This release migrates to `^0.70.2` and is **not** backward-compatible with hosts on `pi` 0.62–0.67. Users on those versions must upgrade their `pi` installation (`npm install -g @mariozechner/pi-coding-agent@latest`) before updating this extension.
2329
+
2330
+ ### Changed
2331
+ - **Bumped peer `@mariozechner/pi-coding-agent` to `^0.70.2`** ([#28](https://github.com/tintinweb/pi-subagents/pull/28)) — crosses the v0.68 breaking-change line upstream. Specifically: tools are now passed as `string[]` (was `Tool[]`); `cwd`/`agentDir` are mandatory on `SettingsManager.create()` and `DefaultResourceLoader`; `session_switch` event renamed to `session_before_switch`; `ToolDefinition.params` widens to `unknown` under contextual typing, requiring `defineTool(...)`.
2332
+ - **Tool registrations wrapped with `defineTool(...)`** — preserves `TParams` inference so `execute` handlers get properly-typed `params` instead of `unknown`. Applies to the `Agent`, `get_subagent_result`, and `steer_subagent` tools.
2333
+
2334
+ ### Removed
2335
+ - **Cwd-bound tool factory registry** — the internal `TOOL_FACTORIES` closure table and `create{Bash,Edit,Read,Write,Grep,Find,Ls}Tool` imports are gone. Exported helpers renamed: `getToolsForType(type, cwd)` → `getToolNamesForType(type)`, `getMemoryTools(cwd, set)` → `getMemoryToolNames(set)`, `getReadOnlyMemoryTools(cwd, set)` → `getReadOnlyMemoryToolNames(set)` — all returning `string[]` instead of `Tool[]`. The host binds cwd when resolving tool names, so the extension no longer instantiates tools directly.
2336
+
2337
+ ### Fixed
2338
+ - **Subagent `SettingsManager` read wrong project settings in worktree mode** ([#30](https://github.com/tintinweb/pi-subagents/pull/30)) — `SettingsManager.create()` was called without arguments, defaulting `cwd` to `process.cwd()`. When the subagent's effective cwd differed (worktree isolation or explicit `cwd` override), its settings manager read `.pi/settings.json` from the parent's cwd rather than its own, diverging from the loader and session manager. Now passes `effectiveCwd` and `agentDir` explicitly, keeping all three managers consistent.
2339
+
2340
+ ## [0.5.2] - 2026-03-26
2341
+
2342
+ ### Fixed
2343
+ - **Extension `session_start` handlers now fire in subagent sessions** ([#20](https://github.com/tintinweb/pi-subagents/issues/20)) — `bindExtensions()` was never called on subagent sessions, so extensions that initialize state in `session_start` (e.g. loading credentials, setting up connections) silently failed at runtime. Tools appeared registered but were non-functional. Now calls `session.bindExtensions()` after tool filtering and before prompting, matching the lifecycle used by pi's interactive, print, and RPC modes. Also triggers `extendResourcesFromExtensions("startup")` so extension-provided skills and prompts are discovered.
2344
+
2345
+ ## [0.5.1] - 2026-03-24
2346
+
2347
+ ### Changed
2348
+ - **Agent config is authoritative** — frontmatter values for `model`, `thinking`, `max_turns`, `inherit_context`, `run_in_background`, `isolated`, and `isolation` now take precedence over `Agent` tool-call parameters. Tool-call params only fill fields the agent config leaves unspecified.
2349
+ - **`join_mode` is now a global setting only** — removed the per-call `join_mode` parameter from the `Agent` tool. Join behavior is configured via `/agents` → Settings → Join mode.
2350
+ - **`max_turns: 0` means unlimited** — agent files can now explicitly set `max_turns: 0` to lock unlimited turns. Previously `0` was silently clamped to `1`.
2351
+
2352
+ ### Fixed
2353
+ - **Final subagent text preserved from non-streaming providers** — agents using providers that return the final message without streaming `text_delta` events no longer return empty results. Falls back to extracting text from the completed session history.
2354
+ - **`effectiveMaxTurns` passed to spawn calls** — previously `params.max_turns` was passed raw to both foreground and background spawn, bypassing the agent config entirely.
2355
+
2356
+ ## [0.5.0] - 2026-03-22
2357
+
2358
+ ### Added
2359
+ - **RPC stop handler** — new `subagents:rpc:stop` event bus RPC allows other extensions to stop running subagents by agent ID. Returns structured error ("Agent not found") on failure.
2360
+ - **`abort` in `SpawnCapable` interface** — cross-extension RPC consumers can now stop agents, not just spawn them.
2361
+ - **Live turn counter** — all agents now show a live turn count in the widget, inline result, and completion notification. With a turn limit: `⟳5≤30` (5 of 30 turns). Without: `⟳5`. Updates in real time as turns progress via `onTurnEnd` callback.
2362
+ - **Biome linting** — added [Biome](https://biomejs.dev/) for correctness linting (unused imports, suspicious patterns). Style rules disabled. Run `npm run lint` to check, `npm run lint:fix` to auto-fix.
2363
+ - **CI workflow** — GitHub Actions runs lint, typecheck, and tests on push to master and PRs.
2364
+ - **Auto-trigger parent turn on background completion** — background agent completion notifications now use `triggerTurn: true`, automatically prompting the parent agent to process results instead of waiting for user input.
2365
+
2366
+ ### Changed
2367
+ - **Standardized RPC envelope** — cross-extension RPC handlers (`ping`, `spawn`, `stop`) now use a `handleRpc` wrapper that emits structured envelopes (`{ success: true, data }` / `{ success: false, error }`), matching pi-mono's `RpcResponse` convention.
2368
+ - **Protocol versioning via ping** — ping reply now includes `{ version: PROTOCOL_VERSION }` (currently v2). Callers can detect version mismatches and warn users to update.
2369
+ - **Default max turns is now unlimited** — subagents no longer have a 50-turn default cap. The default is unlimited (no turn limit), matching Claude Code's main loop behavior. Users can still set explicit limits per-agent via `max_turns` frontmatter or the Agent tool parameter, or globally via `/agents` → Settings (`0` = unlimited).
2370
+ - **Stale dist in published package** — added `prepublishOnly` hook to build fresh `dist/` on every `npm publish`.
2371
+
2372
+ ### Fixed
2373
+ - **Tool name display** — `getAgentConversation` now reads `ToolCall.name` (the correct property) instead of `toolName`, resolving `[Tool: unknown]` in conversation viewer and verbose output.
2374
+ - **Env test CI failure** — `detectEnv` test assumed a branch name exists, but CI checks out detached HEAD. Split into separate tests for repo detection and branch detection with a controlled temp repo.
2375
+
2376
+ ## [0.4.9] - 2026-03-18
2377
+
2378
+ ### Fixed
2379
+ - **Conversation viewer crash in narrow terminals** ([#7](https://github.com/tintinweb/pi-subagents/issues/7)) — `buildContentLines()` in the live conversation viewer could return lines wider than the terminal when `wrapTextWithAnsi()` misjudged visible width on ANSI-heavy input (e.g. tool output with embedded escape codes, long URLs, wide tables). All content lines are now clamped with `truncateToWidth()` before returning. Same class of bug as the widget fix in v0.2.7, different component.
2380
+
2381
+ ### Added
2382
+ - **Conversation viewer width-safety tests** — 17 tests covering `render()` and `buildContentLines()` across varied content (plain text, ANSI codes, unicode, tables, long URLs, narrow terminals). Includes mock-based regression tests that simulate upstream `wrapTextWithAnsi` returning overwidth lines, ensuring the safety net catches them.
2383
+
2384
+ ## [0.4.8] - 2026-03-18
2385
+
2386
+ ### Added
2387
+ - **Cross-extension RPC** — other pi extensions can spawn subagents via `pi.events` event bus (`subagents:rpc:ping`, `subagents:rpc:spawn`). Emits `subagents:ready` on load.
2388
+ - **Session persistence for agent records** — completed agent records are persisted via `pi.appendEntry("subagents:record", ...)` for cross-extension history reconstruction.
2389
+
2390
+ ### Fixed
2391
+ - **Background agent notification race condition** — `pi.sendMessage()` is fire-and-forget, so completion notifications sent eagerly from `onComplete` could not be retracted when `get_subagent_result` was called in the same turn. Notifications are now held behind a 200ms cancellable timer; `get_subagent_result` cancels the pending timer before it fires, eliminating duplicate notifications. Group notifications also re-check `resultConsumed` at send time so consumed agents are filtered out.
2392
+
2393
+ ## [0.4.7] - 2026-03-17
2394
+
2395
+ ### Added
2396
+ - **Custom notification renderer** — background agent completion notifications now render as styled, themed boxes instead of raw XML. Uses `pi.registerMessageRenderer()` with the `"subagent-notification"` custom message type. The LLM continues to receive `<task-notification>` XML via `content`; only the user-facing display changes.
2397
+ - **Group notification rendering** — group completions render each agent as its own styled block (icon, description, stats, result preview) instead of showing only the first agent.
2398
+ - **Output file streaming for background agents** — background agents now get the same output file transcript as foreground agents, with `onSessionCreated` wiring and proper cleanup on completion/error.
2399
+ - `NotificationDetails` type in `types.ts` — structured details for the notification renderer, with optional `others` array for group notifications.
2400
+ - `buildNotificationDetails()` helper — extracts renderer-facing details from an `AgentRecord`.
2401
+
2402
+ ### Changed
2403
+ - **Notification delivery** — `sendIndividualNudge` and group notification now use `pi.sendMessage()` (custom message) instead of `pi.sendUserMessage()` (plain text), enabling renderer-controlled display.
2404
+ - **Steered status rendering** — steered agents show "completed (steered)" in the notification box instead of plain "completed".
2405
+
2406
+ ### Fixed
2407
+ - **Output file cleanup on completion** — `agent-manager.ts` now calls `record.outputCleanup()` in both the success and error paths of agent completion, ensuring the streaming subscription is flushed and released.
2408
+
2409
+ ## [0.4.6] - 2026-03-16
2410
+
2411
+ ### Fixed
2412
+ - **Graceful shutdown aborts agents instead of blocking** — `session_shutdown` now calls `abortAll()` instead of `waitForAll()`, so the process exits immediately instead of hanging until all background agents complete. Agent results are undeliverable after shutdown anyway.
2413
+
2414
+ ### Added
2415
+ - `abortAll()` method on `AgentManager` — stops all queued and running agents at once, returning the count of affected agents.
2416
+
2417
+ ## [0.4.5] - 2026-03-16
2418
+
2419
+ ### Changed
2420
+ - **Widget render-once pattern** — the widget callback is now registered once via `setWidget()` and subsequent updates use `requestRender()` instead of re-registering the entire widget on every `update()` call. Eliminates layout thrashing from repeated widget teardown/setup cycles.
2421
+ - **Status bar dedup** — `setStatus()` is now only called when the status text actually changes, avoiding redundant TUI updates.
2422
+ - **UICtx change detection** — `setUICtx()` detects context changes and forces widget re-registration, correctly handling session switches.
2423
+
2424
+ ### Refactored
2425
+ - Extracted `renderWidget()` private method — moves all widget content rendering out of the `update()` closure into a standalone method that reads live state on each call.
2426
+ - `update()` is now a lightweight coordinator: counts agents, manages registration lifecycle, and triggers re-renders.
2427
+
2428
+ ## [0.4.4] - 2026-03-16
2429
+
2430
+ ### Fixed
2431
+ - **Race condition in `get_subagent_result` with `wait: true`** — `resultConsumed` is now set before `await record.promise`, preventing a redundant follow-up notification. Previously the `onComplete` callback (attached at spawn time via `.then()`) always fired before the await resumed, seeing `resultConsumed` as false.
2432
+ - **Stale agent records across sessions** — new `clearCompleted()` method removes all completed/stopped/errored agent records on `session_start` and `session_switch` events, so tasks from a prior session don't persist into a new one.
2433
+ - **`steer_subagent` race on freshly launched agents** — steering an agent before its session initialized silently dropped the message. Now steers are queued on the record and flushed once `onSessionCreated` fires.
2434
+
2435
+ ### Changed
2436
+ - Extracted `removeRecord()` private helper in `AgentManager` — deduplicates dispose+delete logic between `cleanup()` and `clearCompleted()`.
2437
+
2438
+ ### Added
2439
+ - 8 new tests covering `resultConsumed` race condition and `clearCompleted` behavior (185 total).
2440
+
2441
+ ## [0.4.3] - 2026-03-13
2442
+
2443
+ ### Added
2444
+ - **Persistent agent memory** — new `memory` frontmatter field with three scopes: `"user"` (global `~/.pi/`), `"project"` (per-project `.pi/`), `"local"` (gitignored `.pi/`). Agents with write/edit tools get full read-write memory; read-only agents get a read-only fallback that injects existing MEMORY.md content without granting write access or creating directories.
2445
+ - **Git worktree isolation** — new `isolation: "worktree"` frontmatter field and Agent tool parameter. Creates a temporary `git worktree` so agents work on an isolated copy of the repo. On completion, changes are auto-committed to a `pi-agent-<id>` branch; clean worktrees are removed. Includes crash recovery via `pruneWorktrees()`.
2446
+ - **Skill preloading** — `skills` frontmatter now accepts a comma-separated list of skill names (e.g. `skills: planning, review`). Reads from `.pi/skills/` (project) then `~/.pi/skills/` (global), tries `.md`/`.txt`/bare extensions. Content injected into the system prompt as `# Preloaded Skill: {name}`.
2447
+ - **Tool denylist** — new `disallowed_tools` frontmatter field (e.g. `disallowed_tools: bash, write`). Blocks specified tools even if `builtinToolNames` or extensions would provide them. Enforced for both extension-enabled and extension-disabled agents.
2448
+ - **Prompt extras system** — new `PromptExtras` interface in `prompts.ts`; `buildAgentPrompt()` accepts optional memory and skill blocks appended in both `replace` and `append` modes.
2449
+ - `getMemoryTools()`, `getReadOnlyMemoryTools()` in `agent-types.ts`.
2450
+ - `buildMemoryBlock()`, `buildReadOnlyMemoryBlock()`, `isSymlink()`, `safeReadFile()` in `memory.ts`.
2451
+ - `preloadSkills()` in `skill-loader.ts`.
2452
+ - `createWorktree()`, `cleanupWorktree()`, `pruneWorktrees()` in `worktree.ts`.
2453
+ - `MemoryScope`, `IsolationMode` types; `memory`, `isolation`, `disallowedTools` fields on `AgentConfig`; `worktree`, `worktreeResult` fields on `AgentRecord`.
2454
+ - 177 total tests across 8 test files (41 new tests).
2455
+
2456
+ ### Fixed
2457
+ - **Read-only agents no longer escalated to read-write** — enabling `memory` on a read-only agent (e.g. Explore) previously auto-added `write`/`edit` tools. Now the runner detects write capability and branches: read-write agents get full memory tools, read-only agents get read-only memory prompt with only the `read` tool added.
2458
+ - **Denylist-aware memory detection** — write capability check now accounts for `disallowedTools`. An agent with `tools: write` + `disallowed_tools: write` correctly gets read-only memory instead of broken read-write instructions.
2459
+ - **Worktree requires commits** — repos with no commits (empty HEAD) are now rejected early with a warning instead of failing silently at `git worktree add`.
2460
+ - **Worktree failure warning** — when worktree creation fails, a warning is prepended to the agent's prompt instead of silently falling through to the main cwd.
2461
+ - **No force-branch overwrite** — worktree cleanup appends a timestamp suffix on branch name conflict instead of using `git branch -f`.
2462
+
2463
+ ### Security
2464
+ - **Whitelist name validation** — agent/skill names must match `^[a-zA-Z0-9][a-zA-Z0-9._-]*$`, max 128 chars. Rejects path traversal, leading dots, spaces, and special characters.
2465
+ - **Symlink protection** — `safeReadFile()` and `isSymlink()` reject symlinks in memory directories, MEMORY.md files, and skill files, preventing arbitrary file reads.
2466
+ - **Symlink-safe directory creation** — `ensureMemoryDir()` throws on symlinked directories.
2467
+
2468
+ ### Changed
2469
+ - `agent-runner.ts`: tool/extension/skill resolution moved before memory detection; `ctx.cwd` → `effectiveCwd` throughout.
2470
+ - `custom-agents.ts`: extracted `parseCsvField()` helper; added `csvListOptional()` and `parseMemory()`.
2471
+ - `skill-loader.ts`: uses `safeReadFile()` from `memory.ts` instead of raw `readFileSync`.
2472
+ - Agent tool schema updated with `isolation` parameter and help text for `memory`, `isolation`, `disallowed_tools`, and skill list.
2473
+
2474
+ ## [0.4.2] - 2026-03-12
2475
+
2476
+ ### Added
2477
+ - **Event bus** — agent lifecycle events emitted via `pi.events.emit()`, enabling other extensions to react to sub-agent activity:
2478
+ - `subagents:created` — background agent registered (includes `id`, `type`, `description`, `isBackground`)
2479
+ - `subagents:started` — agent transitions to running (includes queued→running)
2480
+ - `subagents:completed` — agent finished successfully (includes `durationMs`, `tokens`, `toolUses`, `result`)
2481
+ - `subagents:failed` — agent errored, stopped, or aborted (same payload as completed)
2482
+ - `subagents:steered` — steering message sent to a running agent
2483
+ - `OnAgentStart` callback and `onStart` constructor parameter on `AgentManager`.
2484
+ - **Cross-package manager** now also exposes `spawn()` and `getRecord()` via the `Symbol.for("pi-subagents:manager")` global.
2485
+
2486
+ ## [0.4.1] - 2026-03-11
2487
+
2488
+ ### Fixed
2489
+ - **Graceful shutdown in headless mode** — the CLI now waits for all running and queued background agents to complete before exiting (`waitForAll` on `session_shutdown`). Previously, background agents could be silently killed mid-execution when the session ended. Only affects headless/non-interactive mode; interactive sessions already kept the process alive.
2490
+
2491
+ ### Added
2492
+ - `hasRunning()` / `waitForAll()` methods on `AgentManager`.
2493
+ - **Cross-package manager access** — agent manager exposed via `Symbol.for("pi-subagents:manager")` on `globalThis` for other extensions to check status or await completion.
2494
+
2495
+ ## [0.4.0] - 2026-03-11
2496
+
2497
+ ### Added
2498
+ - **XML-delimited prompt sections** — append-mode agents now wrap inherited content in `<inherited_system_prompt>`, `<sub_agent_context>`, and `<agent_instructions>` XML tags, giving the model explicit structure to distinguish inherited rules from sub-agent-specific instructions. Replace mode is unchanged.
2499
+ - **Token count in agent results** — foreground agent results, background completion notifications, and `get_subagent_result` now include the token count alongside tool uses and duration (e.g. `Agent completed in 4.2s (12 tool uses, 33.8k token)`).
2500
+ - **Widget overflow cap** — the running agents widget now caps at 12 lines. When exceeded, running agents are prioritized over finished ones and an overflow summary line shows hidden counts (e.g. `+3 more (1 running, 2 finished)`).
2501
+
2502
+ ### Changed - **changing behavior**
2503
+ - **General-purpose agent inherits parent prompt** — the default `general-purpose` agent now uses `promptMode: "append"` with an empty system prompt, making it a "parent twin" that inherits the full parent system prompt (including CLAUDE.md rules, project conventions, and safety guardrails). Previously it used a standalone prompt that duplicated a subset of the parent's rules. Explore and Plan are unchanged (standalone prompts). To customize: eject via `/agents` → select `general-purpose` → Eject, then edit the resulting `.md` file. Set `prompt_mode: replace` to go back to a standalone prompt, or keep `prompt_mode: append` and add extra instructions in the body.
2504
+ - **Append-mode agents receive parent system prompt** — `buildAgentPrompt` now accepts the parent's system prompt and threads it into append-mode agents (env header + parent prompt + sub-agent context bridge + optional custom instructions). Replace-mode agents are unchanged.
2505
+ - **Prompt pipeline simplified** — removed `systemPromptOverride`/`systemPromptAppend` from `SpawnOptions` and `RunOptions`. These were a separate code path where `index.ts` pre-resolved the prompt mode and passed raw strings into the runner, bypassing `buildAgentPrompt`. Now all prompt assembly flows through `buildAgentPrompt` using the agent's `promptMode` config — one code path, no special cases.
2506
+
2507
+ ### Removed
2508
+ - Deprecated backwards-compat aliases: `registerCustomAgents`, `getCustomAgentConfig`, `getCustomAgentNames` (use `registerAgents`, `getAgentConfig`, `getUserAgentNames`).
2509
+ - `resolveCustomPrompt()` helper in index.ts — no longer needed now that prompt routing is config-driven.
2510
+
2511
+ ## [0.3.1] - 2026-03-09
2512
+
2513
+ ### Added
2514
+ - **Live conversation viewer** — selecting a running (or completed) agent in `/agents` → "Running agents" now opens a scrollable overlay showing the agent's full conversation in real time. Auto-scrolls to follow new content; scroll up to pause, End to resume. Press Esc to close.
2515
+
2516
+ ## [0.3.0] - 2026-03-08
2517
+
2518
+ ### Added
2519
+ - **Case-insensitive agent type lookup** — `"explore"`, `"EXPLORE"`, and `"Explore"` all resolve to the same agent. LLMs frequently lowercase type names; this prevents validation failures.
2520
+ - **Unknown type fallback** — unrecognized agent types fall back to `general-purpose` with a note, instead of hard-rejecting. Matches Claude Code behavior.
2521
+ - **Dynamic tool list for general-purpose** — `builtinToolNames` is now optional in `AgentConfig`. When omitted, the agent gets all tools from `TOOL_FACTORIES` at lookup time, so new tools added upstream are automatically available.
2522
+ - **Agent source indicators in `/agents` menu** — `•` (project), `◦` (global), `✕` (disabled) with legend. Defaults are unmarked.
2523
+ - **Disabled agents visible in UI** — disabled agents now show in the "Agent types" list (marked `✕`) with an Enable action, instead of being invisible.
2524
+ - **Enable action** — re-enable a disabled agent from the `/agents` menu. Stub files are auto-cleaned.
2525
+ - **Disable action for all agent types** — custom and ejected default agents can now be disabled from the UI, not just built-in defaults.
2526
+ - `resolveType()` export — case-insensitive type name resolution for external use.
2527
+ - `getAllTypes()` export — returns all agent names including disabled (for UI listing).
2528
+ - `source` field on `AgentConfig` — tracks where an agent was loaded from (`"default"`, `"project"`, `"global"`).
2529
+
2530
+ ### Fixed
2531
+ - **Model resolver checks auth for exact matches** — `resolveModel("anthropic/claude-haiku-4-5-20251001")` now fails gracefully when no Anthropic API key is configured, instead of returning a model that errors at the API call. Explore silently falls back to the parent model on non-Anthropic setups.
2532
+
2533
+ ### Changed
2534
+ - **Unified agent registry** — built-in and custom agents now use the same `AgentConfig` type and a single registry. No more separate code paths for built-in vs custom agents.
2535
+ - **Default agents are overridable** — creating a `.md` file with the same name as a default agent (e.g. `.pi/agents/Explore.md`) overrides it.
2536
+ - **`/agents` menu** — "Agent types" list shows defaults and custom agents together with source indicators. Default agents get Eject/Disable actions; overridden defaults get Reset to default.
2537
+ - **Eject action** — export a default agent's embedded config as a `.md` file to project or personal location for customization.
2538
+ - **Model labels** — provider-agnostic: strips `provider/` prefix and `-YYYYMMDD` date suffix (e.g. `anthropic/claude-haiku-4-5-20251001` → `claude-haiku-4-5`). Works for any provider.
2539
+ - **New frontmatter fields** — `display_name` (UI display name) and `enabled` (default: true; set to false to disable).
2540
+ - **Menu navigation** — Esc in agent detail returns to agent list (not main menu).
2541
+
2542
+ ### Removed
2543
+ - **`statusline-setup` and `claude-code-guide` agents** — removed as built-in types (never spawned programmatically). Users can recreate them as custom agents if needed.
2544
+ - `BuiltinSubagentType` union type, `SUBAGENT_TYPES` array, `DISPLAY_NAMES` map, `SubagentTypeConfig` interface — replaced by unified `AgentConfig`.
2545
+ - `buildSystemPrompt()` switch statement — replaced by config-driven `buildAgentPrompt()`.
2546
+ - `HAIKU_MODEL_IDS` fallback array — Explore's haiku default is now just the `model` field in its config.
2547
+ - `BUILTIN_MODEL_LABELS` — model labels now derived from config.
2548
+ - `ALL_TOOLS` hardcoded constant — general-purpose now derives tools dynamically.
2549
+
2550
+ ### Added
2551
+ - `src/default-agents.ts` — embedded default configs for general-purpose, Explore, and Plan.
2552
+
2553
+ ## [0.2.7] - 2026-03-08
2554
+
2555
+ ### Fixed
2556
+ - **Widget crash in narrow terminals** — agent widget lines were not truncated to terminal width, causing `doRender` to throw when the tmux pane was narrower than the rendered content. All widget lines are now truncated using `truncateToWidth()` with the actual terminal column count.
2557
+
2558
+ ## [0.2.6] - 2026-03-07
2559
+
2560
+ ### Added
2561
+ - **Background task join strategies** — smart grouping of background agent completion notifications
2562
+ - `smart` (default): 2+ background agents spawned in the same turn are auto-grouped into a single consolidated notification instead of individual nudges
2563
+ - `async`: each agent notifies individually on completion (previous behavior)
2564
+ - `group`: force grouping even for solo agents
2565
+ - 30s timeout after first completion delivers partial results; 15s straggler re-batch window for remaining agents
2566
+ - **`join_mode` parameter** on the `Agent` tool — override join strategy per agent (`"async"` or `"group"`)
2567
+ - **Join mode setting** in `/agents` → Settings — configure the default join mode at runtime
2568
+ - New `src/group-join.ts` — `GroupJoinManager` class for batched completion notifications
2569
+
2570
+ ### Changed
2571
+ - `AgentRecord` now includes optional `groupId`, `joinMode`, and `resultConsumed` fields
2572
+ - Background agent completion routing refactored: individual nudge logic extracted to `sendIndividualNudge()`, group delivery via `GroupJoinManager`
2573
+
2574
+ ### Fixed
2575
+ - **Debounce window race** — agents that complete during the 100ms batch debounce window are now deferred and retroactively fed into the group once it's registered, preventing split notifications (one individual + one partial group) and zombie groups
2576
+ - **Solo agent swallowed notification** — if only one agent was spawned (no group formed) but it completed during the debounce window, its deferred notification is now sent when the batch finalizes
2577
+ - **Duplicate notifications after polling** — calling `get_subagent_result` on a completed agent now marks its result as consumed, suppressing the subsequent completion notification (both individual and group)
2578
+
2579
+ ## [0.2.5] - 2026-03-06
2580
+
2581
+ ### Added
2582
+ - **Interactive `/agents` menu** — single command replaces `/agent` and `/agents` with a full management wizard
2583
+ - Browse and manage running agents
2584
+ - Custom agents submenu — edit or delete existing agents
2585
+ - Create new custom agents via manual wizard or AI-generated (with comprehensive frontmatter documentation for the generator)
2586
+ - Settings: configure max concurrency, default max turns, and grace turns at runtime
2587
+ - Built-in agent types shown with model info (e.g. `Explore · haiku`)
2588
+ - Aligned formatting for agent lists
2589
+ - **Configurable turn limits** — `defaultMaxTurns` and `graceTurns` are now runtime-adjustable via `/agents` → Settings
2590
+ - Sub-menus return to main menu instead of exiting
2591
+
2592
+ ### Removed
2593
+ - `/agent <type> <prompt>` command (use `Agent` tool directly, or create custom agents via `/agents`)
2594
+
2595
+ ## [0.2.4] - 2026-03-06
2596
+
2597
+ ### Added
2598
+ - **Global custom agents** — agents in `~/.pi/agent/agents/*.md` are now discovered automatically and available across all projects
2599
+ - Two-tier discovery hierarchy: project-level (`.pi/agents/`) overrides global (`~/.pi/agent/agents/`)
2600
+
2601
+ ## [0.2.3] - 2026-03-05
2602
+
2603
+ ### Added
2604
+ - Screenshot in README
2605
+
2606
+ ## [0.2.2] - 2026-03-05
2607
+
2608
+ ### Changed
2609
+ - Renamed package to `@tintinweb/pi-subagents`
2610
+ - Fuzzy model resolver now only matches models with auth configured (prevents selecting unconfigured providers)
2611
+ - Custom agents hot-reload on each `Agent` tool call (no restart needed for new `.pi/agents/*.md` files)
2612
+ - Updated pi dependencies to 0.56.1
2613
+
2614
+ ### Refactored
2615
+ - Extracted `createActivityTracker()` — eliminates duplicated tool activity wiring between foreground and background paths
2616
+ - Extracted `safeFormatTokens()` — replaces 4 repeated try-catch blocks
2617
+ - Extracted `buildDetails()` — consolidates AgentDetails construction
2618
+ - Extracted `getStatusLabel()` / `getStatusNote()` — consolidates 3 duplicated status formatting chains
2619
+ - Shared `extractText()` — consolidated duplicate from context.ts and agent-runner.ts
2620
+ - Added `ERROR_STATUSES` constant in widget for consistent status checks
2621
+ - `getDisplayName()` now delegates to `getConfig()` instead of separate lookups
2622
+ - Removed unused `Tool` type export from agent-types
2623
+
2624
+ ## [0.2.1] - 2026-03-05
2625
+
2626
+ ### Added
2627
+ - **Persistent above-editor widget** — tree view of all running/queued/finished agents with animated spinners and live stats
2628
+ - **Concurrency queue** — configurable max concurrent background agents (default: 4), auto-drain
2629
+ - **Queued agents** collapsed to single summary line in widget
2630
+ - **Turn-based widget linger** — completed agents clear after 1 turn, errors/aborted linger for 2 extra turns
2631
+ - **Colored status icons** — themed rendering via `setWidget` callback form (`✓` green, `✓` yellow, `✗` red, `■` dim)
2632
+ - **Live response streaming** — `onTextDelta` shows truncated agent response text instead of static "thinking..."
2633
+
2634
+ ### Changed
2635
+ - Tool names match Claude Code: `Agent`, `get_subagent_result`, `steer_subagent`
2636
+ - Labels use "Agent" / "Agents" (not "Subagent")
2637
+ - Widget heading: `●` when active, `○` when only lingering finished agents
2638
+ - Extracted all UI code to `src/ui/agent-widget.ts`
2639
+
2640
+ ## [0.2.0] - 2026-03-05
2641
+
2642
+ ### Added
2643
+ - **Claude Code-style UI rendering** — `renderCall`/`renderResult`/`onUpdate` for live streaming progress
2644
+ - Live activity descriptions: "searching, reading 3 files…"
2645
+ - Token count display: "33.8k token"
2646
+ - Per-agent tool use counter
2647
+ - Expandable completed results (ctrl+o)
2648
+ - Distinct states: running, background, completed, error, aborted
2649
+ - **Async environment detection** — replaced `execSync` with `pi.exec()` for non-blocking git/platform detection
2650
+ - **Status bar integration** — running background agent count shown in pi's status bar
2651
+ - **Fuzzy model selection** — `"haiku"`, `"sonnet"` resolve to best matching available model
2652
+
2653
+ ### Changed
2654
+ - Tool label changed from "Spawn Agent" to "Agent" (matches Claude Code style)
2655
+ - `onToolUse` callback replaced with richer `onToolActivity` (includes tool name + start/end)
2656
+ - `onSessionCreated` callback for accessing session stats (token counts)
2657
+ - `env.ts` now requires `ExtensionAPI` parameter (async `pi.exec()` instead of `execSync`)
2658
+
2659
+ ## [0.1.0] - 2026-03-05
2660
+
2661
+ Initial release.
2662
+
2663
+ ### Added
2664
+ - **Autonomous sub-agents** — spawn specialized agents via tool call, each running in an isolated pi session
2665
+ - **Built-in agent types** — general-purpose, Explore (defaults to haiku), Plan, statusline-setup, claude-code-guide
2666
+ - **Custom user-defined agents** — define agents in `.pi/agents/<name>.md` with YAML frontmatter + system prompt body
2667
+ - **Frontmatter configuration** — tools, extensions, skills, model, thinking, max_turns, prompt_mode, inherit_context, run_in_background, isolated
2668
+ - **Graceful max_turns** — steer message at limit, 5 grace turns, then hard abort
2669
+ - **Background execution** — `run_in_background` with completion notifications
2670
+ - **`get_subagent_result` tool** — check status, wait for completion, verbose conversation output
2671
+ - **`steer_subagent` tool** — inject steering messages into running agents mid-execution
2672
+ - **Agent resume** — continue a previous agent's session with a new prompt
2673
+ - **Context inheritance** — fork the parent conversation into the sub-agent
2674
+ - **Model override** — per-agent model selection
2675
+ - **Thinking level** — per-agent extended thinking control
2676
+ - **`/agent` and `/agents` commands**
2677
+
2678
+ [0.6.3]: https://github.com/tintinweb/pi-subagents/compare/v0.6.2...v0.6.3
2679
+ [0.6.2]: https://github.com/tintinweb/pi-subagents/compare/v0.6.1...v0.6.2
2680
+ [0.6.1]: https://github.com/tintinweb/pi-subagents/compare/v0.6.0...v0.6.1
2681
+ [0.6.0]: https://github.com/tintinweb/pi-subagents/compare/v0.5.2...v0.6.0
2682
+ [0.5.2]: https://github.com/tintinweb/pi-subagents/compare/v0.5.1...v0.5.2
2683
+ [0.5.1]: https://github.com/tintinweb/pi-subagents/compare/v0.5.0...v0.5.1
2684
+ [0.5.0]: https://github.com/tintinweb/pi-subagents/compare/v0.4.9...v0.5.0
2685
+ [0.4.9]: https://github.com/tintinweb/pi-subagents/compare/v0.4.8...v0.4.9
2686
+ [0.4.8]: https://github.com/tintinweb/pi-subagents/compare/v0.4.7...v0.4.8
2687
+ [0.4.7]: https://github.com/tintinweb/pi-subagents/compare/v0.4.6...v0.4.7
2688
+ [0.4.6]: https://github.com/tintinweb/pi-subagents/compare/v0.4.5...v0.4.6
2689
+ [0.4.5]: https://github.com/tintinweb/pi-subagents/compare/v0.4.4...v0.4.5
2690
+ [0.4.4]: https://github.com/tintinweb/pi-subagents/compare/v0.4.3...v0.4.4
2691
+ [0.4.3]: https://github.com/tintinweb/pi-subagents/compare/v0.4.2...v0.4.3
2692
+ [0.4.2]: https://github.com/tintinweb/pi-subagents/compare/v0.4.1...v0.4.2
2693
+ [0.4.1]: https://github.com/tintinweb/pi-subagents/compare/v0.4.0...v0.4.1
2694
+ [0.4.0]: https://github.com/tintinweb/pi-subagents/compare/v0.3.1...v0.4.0
2695
+ [0.3.1]: https://github.com/tintinweb/pi-subagents/compare/v0.3.0...v0.3.1
2696
+ [0.3.0]: https://github.com/tintinweb/pi-subagents/compare/v0.2.7...v0.3.0
2697
+ [0.2.7]: https://github.com/tintinweb/pi-subagents/compare/v0.2.6...v0.2.7
2698
+ [0.2.6]: https://github.com/tintinweb/pi-subagents/compare/v0.2.5...v0.2.6
2699
+ [0.2.5]: https://github.com/tintinweb/pi-subagents/compare/v0.2.4...v0.2.5
2700
+ [0.2.4]: https://github.com/tintinweb/pi-subagents/compare/v0.2.3...v0.2.4
2701
+ [0.2.3]: https://github.com/tintinweb/pi-subagents/compare/v0.2.2...v0.2.3
2702
+ [0.2.2]: https://github.com/tintinweb/pi-subagents/compare/v0.2.1...v0.2.2
2703
+ [0.2.1]: https://github.com/tintinweb/pi-subagents/compare/v0.2.0...v0.2.1
2704
+ [0.2.0]: https://github.com/tintinweb/pi-subagents/compare/v0.1.0...v0.2.0
2705
+ [0.1.0]: https://github.com/tintinweb/pi-subagents/releases/tag/v0.1.0