Hooks
Hooks let you react to events in the chat and tool lifecycle.
- Service hooks — observe and control the send loop lifecycle via
service.hook().beforeSendLoop().do(cb) - Stream hooks — observe streaming output (content, reasoning, tool-call deltas, finish) via
service.stream().hook().chunks().do(cb) - Chat hooks — subscribe to messages by role/regex
- Tool hooks — before, after, and error hooks on tool execution
- JSON hooks — declare hooks as
.jsonfiles in a configurable directory, auto-loaded at startup - HookMessageWriter — how hooks queue messages with
origin: Hook
Framework types
Two base types underpin all hook builders:
HookBuilderBase<TCallback>— abstract class that every hook builder extends. Provides.do(cb)which registers the hook and returns aHookfor disposal.HasHooks<THookBuilder>— interface for any class that exposes a.hook()method returning a builder. Implemented byChatInterface,ChunkStreamInterface,ToolSuiteInterface, andChatService.
Users rarely work with these directly; they are exported for type annotations when wrapping or composing hook builders.