/** * File Trigger Hook * * Watches a trigger file and injects its contents into the conversation. * Useful for external systems to send messages to the agent. * * Usage: * echo "Run the tests" > /tmp/agent-trigger.txt */ import * as fs from "node:fs"; import type { HookAPI } from "@mariozechner/pi-coding-agent/hooks"; export default function (pi: HookAPI) { pi.on("session", async (event, ctx) => { if (event.reason !== "start") return; const triggerFile = "/tmp/agent-trigger.txt"; fs.watch(triggerFile, () => { try { const content = fs.readFileSync(triggerFile, "utf-8").trim(); if (content) { pi.send(`External trigger: ${content}`); fs.writeFileSync(triggerFile, ""); // Clear after reading } } catch { // File might not exist yet } }); if (ctx.hasUI) { ctx.ui.notify(`Watching ${triggerFile}`, "info"); } }); }