@draht/coding-agent 2026.3.2 → 2026.3.4

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 (194) hide show
  1. package/CHANGELOG.md +194 -13
  2. package/README.md +90 -106
  3. package/agents/architect.md +45 -0
  4. package/agents/debugger.md +57 -0
  5. package/agents/git-committer.md +46 -0
  6. package/agents/implementer.md +25 -0
  7. package/agents/reviewer.md +52 -0
  8. package/agents/security-auditor.md +61 -0
  9. package/agents/verifier.md +44 -0
  10. package/bin/draht-tools.cjs +20 -20
  11. package/dist/agents/architect.md +45 -0
  12. package/dist/agents/debugger.md +57 -0
  13. package/dist/agents/git-committer.md +46 -0
  14. package/dist/agents/implementer.md +25 -0
  15. package/dist/agents/reviewer.md +52 -0
  16. package/dist/agents/security-auditor.md +61 -0
  17. package/dist/agents/verifier.md +44 -0
  18. package/dist/cli/args.d.ts.map +1 -1
  19. package/dist/cli/args.js +1 -0
  20. package/dist/cli/args.js.map +1 -1
  21. package/dist/cli.d.ts.map +1 -1
  22. package/dist/cli.js +5 -0
  23. package/dist/cli.js.map +1 -1
  24. package/dist/config.d.ts +0 -7
  25. package/dist/config.d.ts.map +1 -1
  26. package/dist/config.js +2 -14
  27. package/dist/config.js.map +1 -1
  28. package/dist/core/agent-session.d.ts +14 -4
  29. package/dist/core/agent-session.d.ts.map +1 -1
  30. package/dist/core/agent-session.js +167 -49
  31. package/dist/core/agent-session.js.map +1 -1
  32. package/dist/core/auth-storage.d.ts +1 -1
  33. package/dist/core/auth-storage.d.ts.map +1 -1
  34. package/dist/core/auth-storage.js +2 -1
  35. package/dist/core/auth-storage.js.map +1 -1
  36. package/dist/core/builtins/subagent.d.ts +14 -0
  37. package/dist/core/builtins/subagent.d.ts.map +1 -0
  38. package/dist/core/builtins/subagent.js +492 -0
  39. package/dist/core/builtins/subagent.js.map +1 -0
  40. package/dist/core/compaction/compaction.d.ts.map +1 -1
  41. package/dist/core/compaction/compaction.js +4 -1
  42. package/dist/core/compaction/compaction.js.map +1 -1
  43. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  44. package/dist/core/export-html/tool-renderer.js +6 -0
  45. package/dist/core/export-html/tool-renderer.js.map +1 -1
  46. package/dist/core/extensions/loader.d.ts.map +1 -1
  47. package/dist/core/extensions/loader.js +19 -8
  48. package/dist/core/extensions/loader.js.map +1 -1
  49. package/dist/core/extensions/runner.d.ts.map +1 -1
  50. package/dist/core/extensions/runner.js +1 -0
  51. package/dist/core/extensions/runner.js.map +1 -1
  52. package/dist/core/extensions/types.d.ts +8 -2
  53. package/dist/core/extensions/types.d.ts.map +1 -1
  54. package/dist/core/extensions/types.js.map +1 -1
  55. package/dist/core/model-registry.d.ts +1 -0
  56. package/dist/core/model-registry.d.ts.map +1 -1
  57. package/dist/core/model-registry.js +9 -6
  58. package/dist/core/model-registry.js.map +1 -1
  59. package/dist/core/model-resolver.d.ts.map +1 -1
  60. package/dist/core/model-resolver.js +35 -5
  61. package/dist/core/model-resolver.js.map +1 -1
  62. package/dist/core/prompt-templates.js.map +1 -1
  63. package/dist/core/resource-loader.d.ts +2 -0
  64. package/dist/core/resource-loader.d.ts.map +1 -1
  65. package/dist/core/resource-loader.js +5 -1
  66. package/dist/core/resource-loader.js.map +1 -1
  67. package/dist/core/sdk.d.ts +1 -1
  68. package/dist/core/sdk.d.ts.map +1 -1
  69. package/dist/core/sdk.js.map +1 -1
  70. package/dist/core/session-manager.js.map +1 -1
  71. package/dist/core/settings-manager.d.ts +3 -0
  72. package/dist/core/settings-manager.d.ts.map +1 -1
  73. package/dist/core/settings-manager.js +4 -0
  74. package/dist/core/settings-manager.js.map +1 -1
  75. package/dist/core/system-prompt.d.ts +4 -0
  76. package/dist/core/system-prompt.d.ts.map +1 -1
  77. package/dist/core/system-prompt.js +34 -12
  78. package/dist/core/system-prompt.js.map +1 -1
  79. package/dist/core/tools/edit-diff.js.map +1 -1
  80. package/dist/core/tools/path-utils.js.map +1 -1
  81. package/dist/index.d.ts +1 -1
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +1 -1
  84. package/dist/index.js.map +1 -1
  85. package/dist/main.d.ts.map +1 -1
  86. package/dist/main.js +5 -5
  87. package/dist/main.js.map +1 -1
  88. package/dist/migrations.d.ts +1 -1
  89. package/dist/migrations.d.ts.map +1 -1
  90. package/dist/migrations.js +3 -3
  91. package/dist/migrations.js.map +1 -1
  92. package/dist/modes/interactive/components/armin.js.map +1 -1
  93. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  94. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  95. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  96. package/dist/modes/interactive/components/extension-editor.d.ts +5 -2
  97. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  98. package/dist/modes/interactive/components/extension-editor.js +9 -1
  99. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  100. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  101. package/dist/modes/interactive/components/footer.js.map +1 -1
  102. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  103. package/dist/modes/interactive/components/login-dialog.js +1 -1
  104. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  105. package/dist/modes/interactive/components/model-selector.d.ts +1 -1
  106. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  107. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  108. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  109. package/dist/modes/interactive/components/oauth-selector.js +1 -1
  110. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  111. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  112. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  113. package/dist/modes/interactive/components/session-selector.js +1 -1
  114. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  115. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  116. package/dist/modes/interactive/components/tool-execution.d.ts +2 -0
  117. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  118. package/dist/modes/interactive/components/tool-execution.js +28 -3
  119. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  120. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  121. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  122. package/dist/modes/interactive/components/user-message.d.ts +1 -0
  123. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  124. package/dist/modes/interactive/components/user-message.js +11 -0
  125. package/dist/modes/interactive/components/user-message.js.map +1 -1
  126. package/dist/modes/interactive/interactive-mode.d.ts +1 -1
  127. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  128. package/dist/modes/interactive/interactive-mode.js +28 -27
  129. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  130. package/dist/modes/interactive/theme/dark.json +1 -1
  131. package/dist/modes/interactive/theme/light.json +1 -1
  132. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  133. package/dist/modes/interactive/theme/theme.js +5 -0
  134. package/dist/modes/interactive/theme/theme.js.map +1 -1
  135. package/dist/prompts/commands/discuss-phase.md +3 -3
  136. package/dist/prompts/commands/execute-phase.md +9 -9
  137. package/dist/prompts/commands/fix.md +29 -0
  138. package/dist/prompts/commands/init-project.md +49 -0
  139. package/dist/prompts/commands/map-codebase.md +2 -2
  140. package/dist/prompts/commands/new-project.md +9 -9
  141. package/dist/prompts/commands/next-milestone.md +44 -0
  142. package/dist/prompts/commands/pause-work.md +2 -2
  143. package/dist/prompts/commands/plan-phase.md +5 -5
  144. package/dist/prompts/commands/progress.md +1 -1
  145. package/dist/prompts/commands/quick.md +4 -4
  146. package/dist/prompts/commands/resume-work.md +1 -1
  147. package/dist/prompts/commands/review.md +26 -0
  148. package/dist/prompts/commands/verify-work.md +4 -4
  149. package/docs/compaction.md +14 -14
  150. package/docs/custom-provider.md +19 -11
  151. package/docs/development.md +1 -1
  152. package/docs/extensions.md +52 -33
  153. package/docs/json.md +4 -4
  154. package/docs/packages.md +1 -1
  155. package/docs/providers.md +4 -2
  156. package/docs/rpc.md +1 -1
  157. package/docs/sdk.md +24 -24
  158. package/docs/session.md +6 -6
  159. package/docs/settings.md +1 -0
  160. package/docs/termux.md +1 -1
  161. package/docs/themes.md +2 -2
  162. package/docs/tui.md +20 -20
  163. package/examples/extensions/README.md +5 -4
  164. package/examples/extensions/antigravity-image-gen.ts +3 -1
  165. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  166. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  167. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  168. package/examples/extensions/custom-provider-qwen-cli/package.json +1 -1
  169. package/examples/extensions/doom-overlay/README.md +1 -1
  170. package/examples/extensions/dynamic-resources/dynamic.json +1 -1
  171. package/examples/extensions/dynamic-tools.ts +74 -0
  172. package/examples/extensions/subagent/README.md +11 -11
  173. package/examples/extensions/with-deps/package-lock.json +2 -2
  174. package/examples/extensions/with-deps/package.json +1 -1
  175. package/examples/sdk/README.md +3 -3
  176. package/package.json +11 -8
  177. package/prompts/commands/discuss-phase.md +3 -3
  178. package/prompts/commands/execute-phase.md +9 -9
  179. package/prompts/commands/fix.md +29 -0
  180. package/prompts/commands/init-project.md +49 -0
  181. package/prompts/commands/map-codebase.md +2 -2
  182. package/prompts/commands/new-project.md +9 -9
  183. package/prompts/commands/next-milestone.md +44 -0
  184. package/prompts/commands/pause-work.md +2 -2
  185. package/prompts/commands/plan-phase.md +5 -5
  186. package/prompts/commands/progress.md +1 -1
  187. package/prompts/commands/quick.md +4 -4
  188. package/prompts/commands/resume-work.md +1 -1
  189. package/prompts/commands/review.md +26 -0
  190. package/prompts/commands/verify-work.md +4 -4
  191. package/dist/extensions/gsd-commands.ts +0 -338
  192. package/dist/extensions/subagent.ts +0 -312
  193. package/extensions/gsd-commands.ts +0 -338
  194. package/extensions/subagent.ts +0 -312
package/CHANGELOG.md CHANGED
@@ -1,6 +1,199 @@
1
1
  # Changelog
2
2
 
3
- ## [2026.3.1] - 2026-02-28
3
+ ## [2026.3.4] - 2026-03-04
4
+
5
+ ### Added
6
+
7
+ - show 'dev' version when running from source
8
+ - stream subagent activity to tool output for ctrl+o
9
+ - add /agent command for routing prompts through agents
10
+ - add shipped debugger agent
11
+ - ship built-in GSD agents with the package
12
+ - show agent name and progress in subagent tool UI
13
+ - add /next-milestone command for planning after milestone completion
14
+ - ship GSD commands + subagent runner as built-in extensions
15
+ - post-phase report includes TDD commit metrics and domain model health
16
+ - quality-gate adds domain glossary compliance, cross-context boundary, and TDD ratio checks
17
+ - post-task checks TDD cycle compliance (green: requires preceding red: per task)
18
+ - pre-execute validates DOMAIN.md, TEST-STRATEGY.md, and non-empty <test> sections
19
+ - enforce TDD cycle in quick tasks with config/docs exception
20
+ - add automated test suite and domain health checks to verify-work
21
+ - rewrite execute-phase with mandatory Red→Green→Refactor TDD cycle and domain rules
22
+ - enrich plan-phase with DDD context/domain tags, full TDD task format, and domain rules
23
+ - add testability and domain boundaries gray areas to discuss-phase
24
+ - add DOMAIN.md and TEST-STRATEGY.md scaffolding to new-project and map-codebase
25
+ - integrate GSD methodology as battery-included resources
26
+ - add draht login command
27
+ - rename pi CLI to draht, update env vars, scaffold landing page
28
+ - add SST v4 infrastructure, resource manager, and AGENTS.md templates
29
+ - rebrand to @draht/ namespace
30
+
31
+ ### Changed
32
+
33
+ - bake subagent into core, remove shipped extensions
34
+ - remove duplicate GSD extension, consolidate into built-in prompts
35
+ - update repo URLs from badlogic/pi-mono to draht-dev/draht
36
+ - rebrand all READMEs to draht naming and conventions
37
+ - rebrand package references from @mariozechner/pi-* to @draht/*
38
+ - add publishConfig for public npm access
39
+ - comprehensive READMEs, CONTRIBUTING.md, and phase summaries
40
+ - add vitest config, integration tests, and draht manifest test
41
+ - switch from npm to bun, replace tsx with bun runtime, add tsgo
42
+
43
+ ### Fixed
44
+
45
+ - resolve post-rebase import and dependency issues
46
+ - rebrand .pi to .draht and pi: to draht: in tests, add verify script
47
+ - rebrand remaining @mariozechner/pi-* imports from upstream to @draht/*
48
+ - use draht-tools binary name in GSD prompts and CLI
49
+ - fix subagent spawn in source/dev mode
50
+ - load shipped extensions and rename /resume to /continue
51
+ - add coding-agent bin alias so npx @draht/coding-agent works
52
+ - rm -rf dist/prompts and dist/hooks before copy to avoid stale permission issues
53
+ - build packages individually to avoid workspace recursion, fix copy-assets mkdir
54
+ - load shipped prompts unconditionally (not gated by includeDefaults)
55
+ - remove gsd- prefix from shipped prompts and agents
56
+ - pre-commit hooks
57
+ - address code review findings and fix router stream types
58
+
59
+ ## [2026.3.3] - 2026-03-03
60
+
61
+ ### Added
62
+
63
+ - show 'dev' version when running from source
64
+ - stream subagent activity to tool output for ctrl+o
65
+ - add /agent command for routing prompts through agents
66
+ - add shipped debugger agent
67
+ - ship built-in GSD agents with the package
68
+ - show agent name and progress in subagent tool UI
69
+ - add /next-milestone command for planning after milestone completion
70
+
71
+ ### Fixed
72
+
73
+ - use draht-tools binary name in GSD prompts and CLI
74
+ - fix subagent spawn in source/dev mode
75
+ - load shipped extensions and rename /resume to /continue
76
+
77
+ ## [2026.3.2-9] - 2026-03-02
78
+
79
+ ### Changed
80
+
81
+ - update repo URLs from badlogic/pi-mono to draht-dev/draht
82
+
83
+ ## [2026.3.2-8] - 2026-03-02
84
+
85
+ ### Changed
86
+
87
+ - rebrand all READMEs to draht naming and conventions
88
+
89
+ ## [2026.3.2-7] - 2026-03-02
90
+
91
+ ### Fixed
92
+
93
+ - add coding-agent bin alias so npx @draht/coding-agent works
94
+
95
+ ## [2026.3.2-4] - 2026-03-02
96
+
97
+ ### Added
98
+
99
+ - ship GSD commands + subagent runner as built-in extensions
100
+ - post-phase report includes TDD commit metrics and domain model health
101
+ - quality-gate adds domain glossary compliance, cross-context boundary, and TDD ratio checks
102
+ - post-task checks TDD cycle compliance (green: requires preceding red: per task)
103
+ - pre-execute validates DOMAIN.md, TEST-STRATEGY.md, and non-empty <test> sections
104
+ - enforce TDD cycle in quick tasks with config/docs exception
105
+ - add automated test suite and domain health checks to verify-work
106
+ - rewrite execute-phase with mandatory Red→Green→Refactor TDD cycle and domain rules
107
+ - enrich plan-phase with DDD context/domain tags, full TDD task format, and domain rules
108
+ - add testability and domain boundaries gray areas to discuss-phase
109
+ - add DOMAIN.md and TEST-STRATEGY.md scaffolding to new-project and map-codebase
110
+ - integrate GSD methodology as battery-included resources
111
+ - add draht login command
112
+ - rename pi CLI to draht, update env vars, scaffold landing page
113
+ - add SST v4 infrastructure, resource manager, and AGENTS.md templates
114
+ - rebrand to @draht/ namespace
115
+
116
+ ### Changed
117
+
118
+ - rebrand package references from @mariozechner/pi-* to @draht/*
119
+ - add publishConfig for public npm access
120
+ - comprehensive READMEs, CONTRIBUTING.md, and phase summaries
121
+ - add vitest config, integration tests, and draht manifest test
122
+ - switch from npm to bun, replace tsx with bun runtime, add tsgo
123
+
124
+ ### Fixed
125
+
126
+ - rm -rf dist/prompts and dist/hooks before copy to avoid stale permission issues
127
+ - build packages individually to avoid workspace recursion, fix copy-assets mkdir
128
+ - load shipped prompts unconditionally (not gated by includeDefaults)
129
+ - remove gsd- prefix from shipped prompts and agents
130
+ - use workspace:* for all inter-package dependencies
131
+ - pre-commit hooks
132
+ - address code review findings and fix router stream types
133
+
134
+ ## [0.56.0] - 2026-03-04
135
+
136
+ ### New Features
137
+
138
+ - Added OpenCode Go provider support with `opencode-go` model defaults and `OPENCODE_API_KEY` environment variable support ([docs/providers.md](docs/providers.md), [#1757](https://github.com/badlogic/pi-mono/issues/1757)).
139
+ - Added `branchSummary.skipPrompt` setting to skip branch summarization prompts during tree navigation ([docs/settings.md](docs/settings.md), [#1792](https://github.com/badlogic/pi-mono/issues/1792)).
140
+ - Added `gemini-3.1-flash-lite-preview` fallback model availability for Google provider catalogs when upstream model metadata lags ([README.md](README.md), [#1785](https://github.com/badlogic/pi-mono/issues/1785)).
141
+
142
+ ### Breaking Changes
143
+
144
+ - Changed scoped model thinking semantics. Scoped entries without an explicit `:<thinking>` suffix now inherit the current session thinking level when selected, instead of applying a startup-captured default.
145
+ - Moved Node OAuth runtime exports off the top-level `@mariozechner/pi-ai` entry. OAuth login and refresh must be imported from `@mariozechner/pi-ai/oauth` ([#1814](https://github.com/badlogic/pi-mono/issues/1814)).
146
+
147
+ ### Added
148
+
149
+ - Added `branchSummary.skipPrompt` setting to skip the summary prompt when navigating branches ([#1792](https://github.com/badlogic/pi-mono/issues/1792)).
150
+ - Added OpenCode Go provider support with `opencode-go` model defaults and `OPENCODE_API_KEY` environment variable support ([#1757](https://github.com/badlogic/pi-mono/issues/1757)).
151
+ - Added `gemini-3.1-flash-lite-preview` fallback model availability in provider catalogs when upstream catalogs lag ([#1785](https://github.com/badlogic/pi-mono/issues/1785)).
152
+
153
+ ### Changed
154
+
155
+ - Updated Antigravity Gemini 3.1 model metadata and request headers to match upstream behavior.
156
+
157
+ ### Fixed
158
+
159
+ - Fixed IME hardware cursor positioning in the custom extension editor (`ctx.ui.editor()` / extension editor dialog) by propagating focus to the internal `Editor`, preventing the terminal cursor from getting stuck at the bottom-right during composition.
160
+ - Added OSC 133 semantic zone markers around rendered user messages to support terminal navigation between prompts in iTerm2, WezTerm, Kitty, Ghostty, and other compatible terminals ([#1805](https://github.com/badlogic/pi-mono/issues/1805)).
161
+ - Fixed markdown blockquotes dropping nested list content in the TUI renderer ([#1787](https://github.com/badlogic/pi-mono/issues/1787)).
162
+ - Fixed TUI width handling for regional indicator symbols to prevent wrap drift and stale characters during streaming ([#1783](https://github.com/badlogic/pi-mono/issues/1783)).
163
+ - Fixed Kitty CSI-u handling to ignore unsupported modifiers so modifier-only events do not insert printable characters ([#1807](https://github.com/badlogic/pi-mono/issues/1807)).
164
+ - Fixed single-line paste handling to insert text atomically and avoid repeated `@` autocomplete scans on large pastes ([#1812](https://github.com/badlogic/pi-mono/issues/1812)).
165
+ - Fixed extension loading with the new `@mariozechner/pi-ai/oauth` export path by aliasing the oauth subpath in the extension loader and development path mapping ([#1814](https://github.com/badlogic/pi-mono/issues/1814)).
166
+ - Fixed browser-safe provider loading regressions by preloading the Bedrock provider module in compiled Bun binaries and rebuilding binaries against fresh workspace dependencies ([#1814](https://github.com/badlogic/pi-mono/issues/1814)).
167
+ - Fixed GNU screen terminal detection by downgrading theme output to 256-color mode for `screen*` TERM values ([#1809](https://github.com/badlogic/pi-mono/issues/1809)).
168
+ - Fixed branch summarization queue handling so messages typed while summaries are generated are processed correctly ([#1803](https://github.com/badlogic/pi-mono/issues/1803)).
169
+ - Fixed compaction summary requests to avoid reasoning output for non-reasoning models ([#1793](https://github.com/badlogic/pi-mono/issues/1793)).
170
+ - Fixed overflow auto-compaction cascades so a single overflow does not trigger repeated compaction loops.
171
+ - Fixed `models.json` to allow provider-scoped custom model ids and model-level `baseUrl` overrides ([#1759](https://github.com/badlogic/pi-mono/issues/1759), [#1777](https://github.com/badlogic/pi-mono/issues/1777)).
172
+ - Fixed session selector display sanitization by stripping control characters from session display text ([#1747](https://github.com/badlogic/pi-mono/issues/1747)).
173
+ - Fixed Groq Qwen3 reasoning effort mapping for OpenAI-compatible models ([#1745](https://github.com/badlogic/pi-mono/issues/1745)).
174
+ - Fixed Bedrock `AWS_PROFILE` region resolution by honoring profile `region` values ([#1800](https://github.com/badlogic/pi-mono/issues/1800)).
175
+ - Fixed Gemini 3.1 thinking-level detection for `google` and `google-vertex` providers ([#1785](https://github.com/badlogic/pi-mono/issues/1785)).
176
+ - Fixed browser bundling compatibility for `@mariozechner/pi-ai` by removing Node-only side effects from default browser import paths ([#1814](https://github.com/badlogic/pi-mono/issues/1814)).
177
+
178
+ ## [0.55.4] - 2026-03-02
179
+
180
+ ### New Features
181
+
182
+ - Runtime tool registration now applies immediately in active sessions. Tools registered via `pi.registerTool()` after startup are available to `pi.getAllTools()` and the LLM without `/reload` ([docs/extensions.md](docs/extensions.md), [examples/extensions/dynamic-tools.ts](examples/extensions/dynamic-tools.ts), [#1720](https://github.com/badlogic/pi-mono/issues/1720)).
183
+ - Tool definitions can customize the default system prompt with `promptSnippet` (`Available tools`) and `promptGuidelines` (`Guidelines`) while the tool is active ([docs/extensions.md](docs/extensions.md), [#1720](https://github.com/badlogic/pi-mono/issues/1720)).
184
+ - Custom tool renderers can suppress transcript output without leaving extra spacing or empty transcript footprint in interactive rendering ([docs/extensions.md](docs/extensions.md), [#1719](https://github.com/badlogic/pi-mono/pull/1719)).
185
+
186
+ ### Added
187
+
188
+ - Added optional `promptSnippet` to `ToolDefinition` for one-line entries in the default system prompt's `Available tools` section. Active extension tools appear there when registered and active ([#1237](https://github.com/badlogic/pi-mono/pull/1237) by [@semtexzv](https://github.com/semtexzv)).
189
+ - Added optional `promptGuidelines` to `ToolDefinition` so active tools can append tool-specific bullets to the default system prompt `Guidelines` section ([#1720](https://github.com/badlogic/pi-mono/issues/1720)).
190
+
191
+ ### Fixed
192
+
193
+ - Fixed `pi.registerTool()` dynamic registration after session initialization. Tools registered in `session_start` and later handlers now refresh immediately, become active, and are visible to the LLM without `/reload` ([#1720](https://github.com/badlogic/pi-mono/issues/1720))
194
+ - Fixed session message persistence ordering by serializing `AgentSession` event processing, preventing `toolResult` entries from being written before their corresponding assistant tool-call messages when extension handlers are asynchronous ([#1717](https://github.com/badlogic/pi-mono/issues/1717))
195
+ - Fixed spacing artifacts when custom tool renderers intentionally suppress per-call transcript output, including extra blank rows in interactive streaming and non-zero transcript footprint for empty custom renders ([#1719](https://github.com/badlogic/pi-mono/pull/1719) by [@alasano](https://github.com/alasano))
196
+ - Fixed `session.prompt()` returning before retry completion by creating the retry promise synchronously at `agent_end` dispatch, which closes a race when earlier queued event handlers are async ([#1726](https://github.com/badlogic/pi-mono/pull/1726) by [@pasky](https://github.com/pasky))
4
197
 
5
198
  ## [0.55.3] - 2026-02-27
6
199
 
@@ -284,8 +477,6 @@
284
477
  - Updated default model for `vercel-ai-gateway` provider to `anthropic/claude-opus-4-6`
285
478
  - Updated default model for `opencode` provider to `claude-opus-4-6`
286
479
 
287
- ## [0.52.1] - 2026-02-05
288
-
289
480
  ## [0.52.0] - 2026-02-05
290
481
 
291
482
  ### New Features
@@ -518,8 +709,6 @@
518
709
  - Fixed empty rows appearing below footer when content shrinks (e.g., closing `/tree`, clearing multi-line editor) ([#1095](https://github.com/badlogic/pi-mono/pull/1095) by [@marckrenn](https://github.com/marckrenn))
519
710
  - Fixed terminal cursor remaining hidden after exiting TUI via `stop()` when a render was pending ([#1099](https://github.com/badlogic/pi-mono/pull/1099) by [@haoqixu](https://github.com/haoqixu))
520
711
 
521
- ## [0.50.5] - 2026-01-30
522
-
523
712
  ## [0.50.4] - 2026-01-30
524
713
 
525
714
  ### New Features
@@ -948,8 +1137,6 @@ There are multiple SDK breaking changes since v0.49.3. For the quickest migratio
948
1137
  - Fixed extension loading in compiled Bun binary: extensions with local file imports now work correctly. Updated `@mariozechner/jiti` to v2.6.5 which bundles babel for Bun binary compatibility. ([#681](https://github.com/badlogic/pi-mono/issues/681))
949
1138
  - Fixed theme loading when installed via mise: use wrapper directory in release tarballs for compatibility with mise's `strip_components=1` extraction. ([#681](https://github.com/badlogic/pi-mono/issues/681))
950
1139
 
951
- ## [0.45.3] - 2026-01-13
952
-
953
1140
  ## [0.45.2] - 2026-01-13
954
1141
 
955
1142
  ### Fixed
@@ -1163,10 +1350,6 @@ There are multiple SDK breaking changes since v0.49.3. For the quickest migratio
1163
1350
  - Key presses no longer dropped when input is batched over SSH ([#538](https://github.com/badlogic/pi-mono/issues/538))
1164
1351
  - Clipboard image support now works on Alpine Linux and other musl-based distros ([#533](https://github.com/badlogic/pi-mono/issues/533))
1165
1352
 
1166
- ## [0.37.8] - 2026-01-07
1167
-
1168
- ## [0.37.7] - 2026-01-07
1169
-
1170
1353
  ## [0.37.6] - 2026-01-06
1171
1354
 
1172
1355
  ### Added
@@ -1484,8 +1667,6 @@ pi --extension ./safety.ts -e ./todo.ts
1484
1667
  - SDK: `extensions` option accepts `ExtensionFactory[]` for inline extensions
1485
1668
  - SDK: `additionalExtensionPaths` replaces both `additionalHookPaths` and `additionalCustomToolPaths`
1486
1669
 
1487
- ## [0.34.2] - 2026-01-04
1488
-
1489
1670
  ## [0.34.1] - 2026-01-04
1490
1671
 
1491
1672
  ### Added