feat: add vmux setup and vmux hook for Claude Code integration

- vmux setup: idempotently adds hooks to ~/.claude/settings.json
- vmux hook: receives Claude Code hook events via env vars and forwards to daemon
- Daemon handles "hook" action on Unix socket (no HTTP server needed)
- Hooks provide instant state detection (permission/question/idle)
This commit is contained in:
Pierre Martin
2026-03-23 23:11:47 +01:00
parent 994b78aee5
commit 0e4ced5b1f
3 changed files with 128 additions and 1 deletions

View File

@@ -452,6 +452,15 @@ func (d *Daemon) handleConnection(conn net.Conn) {
d.focus.Set(time.Duration(args.Minutes) * time.Minute)
writeResponse(conn, Response{OK: true, FocusRemaining: d.focus.Remaining().Minutes()})
case "hook":
var event HookEvent
if err := json.Unmarshal(req.Args, &event); err != nil {
writeResponse(conn, Response{Error: "invalid hook args: " + err.Error()})
return
}
d.processHookEvent(event)
writeResponse(conn, Response{OK: true})
case "stop":
writeResponse(conn, Response{OK: true})
d.Stop()