[Sync] Lua Hyprland chain, licence cleanup

This commit is contained in:
Coja committed 2026-11-09 18:25:35 +01:00
1 parent 93b4f695ce
commit 47166d877f
183 files changed
+5618 -5839

No files matched your search

@@ -0,0 +1,26 @@
/**
* Pi agent-state extension: mirrors Pi's state into the tmux pane it runs in via
* ~/.config/tmux/scripts/agent-state.sh (pi busy|done|input|off), so the tmux status bar
* shows which pane is done or waiting for you. The script is a no-op outside tmux.
*/
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { execFile } from "node:child_process";
import { homedir } from "node:os";
import { join } from "node:path";
const SCRIPT = join(homedir(), ".config", "tmux", "scripts", "agent-state.sh");
function state(s: "busy" | "done" | "input" | "error" | "off"): void {
if (!process.env.TMUX_PANE) return;
execFile(SCRIPT, ["pi", s], () => {});
}
export default function (pi: ExtensionAPI) {
pi.on("agent_start", async () => state("busy"));
// agent_settled, not agent_end: Pi may still retry, compact, or run queued follow-ups.
pi.on("agent_settled", async () => state("done"));
// Blocking confirm/select prompts from extensions (permission-gate, confirm-destructive, questionnaire).
pi.on("ui_prompt_start", async () => state("input"));
pi.on("ui_prompt_end", async () => state("busy"));
pi.on("session_shutdown", async () => state("off"));
}