[Sync] Lua Hyprland chain, licence cleanup
This commit is contained in:
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"));
|
||||
}
|
||||
Reference in new issue
Block a user