mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 18:01:22 +00:00
- Remove session_before_new and session_new hook events - Add reason: 'new' | 'resume' to session_before_switch and session_switch events - Remove 'new' reason from custom tool onSession (use 'switch' for both /new and /resume) - Rename reset() to newSession(options?) in AgentSession - Add NewSessionOptions with optional parentSession for lineage tracking - Rename branchedFrom to parentSession in SessionHeader - Rename RPC reset command to new_session with optional parentSession - Update example hooks to use new event structure - Update documentation and changelog Based on discussion in #293
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
/**
|
|
* Status Line Hook
|
|
*
|
|
* Demonstrates ctx.ui.setStatus() for displaying persistent status text in the footer.
|
|
* Shows turn progress with themed colors.
|
|
*/
|
|
|
|
import type { HookAPI } from "@mariozechner/pi-coding-agent";
|
|
|
|
export default function (pi: HookAPI) {
|
|
let turnCount = 0;
|
|
|
|
pi.on("session_start", async (_event, ctx) => {
|
|
const theme = ctx.ui.theme;
|
|
ctx.ui.setStatus("status-demo", theme.fg("dim", "Ready"));
|
|
});
|
|
|
|
pi.on("turn_start", async (_event, ctx) => {
|
|
turnCount++;
|
|
const theme = ctx.ui.theme;
|
|
const spinner = theme.fg("accent", "●");
|
|
const text = theme.fg("dim", ` Turn ${turnCount}...`);
|
|
ctx.ui.setStatus("status-demo", spinner + text);
|
|
});
|
|
|
|
pi.on("turn_end", async (_event, ctx) => {
|
|
const theme = ctx.ui.theme;
|
|
const check = theme.fg("success", "✓");
|
|
const text = theme.fg("dim", ` Turn ${turnCount} complete`);
|
|
ctx.ui.setStatus("status-demo", check + text);
|
|
});
|
|
|
|
pi.on("session_switch", async (event, ctx) => {
|
|
if (event.reason === "new") {
|
|
turnCount = 0;
|
|
const theme = ctx.ui.theme;
|
|
ctx.ui.setStatus("status-demo", theme.fg("dim", "Ready"));
|
|
}
|
|
});
|
|
}
|