Hook commands: remove string return, use sendMessage() for prompting

- Command handler now returns Promise<void> instead of Promise<string | undefined>
- To trigger LLM response, use sendMessage() with triggerTurn: true
- Simplify _tryExecuteHookCommand to return boolean

Added example hook and slash command in .pi/:
- .pi/hooks/test-command.ts - /greet command using sendMessage
- .pi/commands/review.md - file-based /review command
This commit is contained in:
Mario Zechner 2025-12-27 01:21:18 +01:00
parent c8d9382aaa
commit 30cd723411
5 changed files with 50 additions and 23 deletions

24
.pi/hooks/test-command.ts Normal file
View file

@ -0,0 +1,24 @@
/**
* Test hook that registers a /greet command.
* Usage: /greet [name]
*/
import type { HookAPI } from "@mariozechner/pi-coding-agent/hooks";
export default function (pi: HookAPI) {
pi.registerCommand("greet", {
description: "Send a greeting message to the LLM",
handler: async (ctx) => {
const name = ctx.args.trim() || "world";
// Insert a custom message and trigger LLM response
ctx.sendMessage(
{
customType: "greeting",
content: `Hello, ${name}! Please say something nice about them.`,
display: true,
},
true, // triggerTurn - get LLM to respond
);
},
});
}