/**
 * src/session/tmux.ts (H1) — thin synchronous wrappers around the tmux CLI.
 *
 * Used only when cfg.useTmux is on. Running the shell inside a tmux session
 * lets it survive a server/host restart: the node-pty process is just a tmux
 * *client*; killing it detaches, and the tmux server keeps the shell alive.
 *
 * Every call is best-effort and never throws (tmux missing / session gone are
 * treated as "false"/no-op).
 */

import { execFileSync } from 'node:child_process'

/** Is the tmux binary available on PATH? */
export function tmuxAvailable(): boolean {
  try {
    execFileSync('tmux', ['-V'], { stdio: 'ignore' })
    return true
  } catch {
    return false
  }
}

/** tmux session name for a web-terminal session id (UUIDs are tmux-safe). */
export function tmuxName(sessionId: string): string {
  return `web_${sessionId}`
}

/** Does a tmux session with this name already exist (e.g. after a restart)? */
export function hasSession(name: string): boolean {
  try {
    execFileSync('tmux', ['has-session', '-t', name], { stdio: 'ignore' })
    return true
  } catch {
    return false
  }
}

/** Kill a tmux session (ends the shell). No-op if it's already gone. */
export function killSession(name: string): void {
  try {
    execFileSync('tmux', ['kill-session', '-t', name], { stdio: 'ignore' })
  } catch {
    // already gone — fine
  }
}
