Implement before_agent_start hook event

- Add BeforeAgentStartEvent and BeforeAgentStartEventResult types
- Add emitBeforeAgentStart to HookRunner
- Call in AgentSession.prompt() before agent.prompt()
- Hook can return a message to inject into context (persisted + visible)
- Add test hook demonstrating custom message rendering and before_agent_start
This commit is contained in:
Mario Zechner 2025-12-28 14:50:22 +01:00
parent bbdc350394
commit 57146de202
6 changed files with 170 additions and 16 deletions

View file

@ -490,6 +490,29 @@ export class AgentSession {
// Expand file-based slash commands if requested
const expandedText = expandCommands ? expandSlashCommand(text, [...this._fileCommands]) : text;
// Emit before_agent_start hook event
if (this._hookRunner) {
const result = await this._hookRunner.emitBeforeAgentStart(expandedText, options?.images);
if (result?.message) {
// Append hook message to agent state and session
const hookMessage: HookMessage = {
role: "hookMessage",
customType: result.message.customType,
content: result.message.content,
display: result.message.display,
details: result.message.details,
timestamp: Date.now(),
};
this.agent.appendMessage(hookMessage);
this.sessionManager.appendCustomMessageEntry(
result.message.customType,
result.message.content,
result.message.display,
result.message.details,
);
}
}
await this.agent.prompt(expandedText, options?.images);
await this.waitForRetry();
}