docs: update CHANGELOG and hooks.md with missing items

- tools.ts example hook
- Multiple messages from before_agent_start
- getSettingsListTheme/getSelectListTheme optional theme param
- Hook error stack traces
This commit is contained in:
Mario Zechner 2026-01-04 19:01:35 +01:00
parent b06bd1d24c
commit 5318b42bd2
2 changed files with 6 additions and 2 deletions

View file

@ -5,9 +5,13 @@
### Added
- Hook API: `before_agent_start` handlers can now return `systemPromptAppend` to dynamically append text to the system prompt for that turn. Multiple hooks' appends are concatenated.
- New example hook: `pirate.ts` demonstrates using `systemPromptAppend` to make the agent speak like a pirate when `/pirate` mode is enabled
- Hook API: `before_agent_start` handlers can now return multiple messages (all are injected, not just the first)
- New example hook: `tools.ts` - Interactive `/tools` command to enable/disable tools with session persistence
- New example hook: `pirate.ts` - Demonstrates `systemPromptAppend` to make the agent speak like a pirate
- Tool registry now contains all built-in tools (read, bash, edit, write, grep, find, ls) even when `--tools` limits the initially active set. Hooks can enable any tool from the registry via `pi.setActiveTools()`.
- System prompt now automatically rebuilds when tools change via `setActiveTools()`, updating tool descriptions and guidelines to match the new tool set
- `getSettingsListTheme()` and `getSelectListTheme()` now accept optional theme parameter for use in hooks loaded via jiti
- Hook errors now display full stack traces for easier debugging
### Changed

View file

@ -279,7 +279,7 @@ pi.on("before_agent_start", async (event, ctx) => {
});
```
**message**: Persisted as `CustomMessageEntry` and sent to the LLM.
**message**: Persisted as `CustomMessageEntry` and sent to the LLM. Multiple hooks can each return a message; all are injected in order.
**systemPromptAppend**: Appended to the base system prompt for this agent run only. Multiple hooks can each return `systemPromptAppend` strings, which are concatenated. This is useful for dynamic instructions based on hook state (e.g., plan mode, persona toggles).