#!/usr/bin/env bash
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
THEME="$ROOT/themes/oscura-midnight.json"
EXTENSION="$ROOT/extensions/oscura-theme.ts"
BASE_AGENT_DIR="${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}"
PREVIEW_AGENT_DIR="$(mktemp -d "${TMPDIR:-/tmp}/pi-oscura-preview.XXXXXX")"
ALT_SCREEN=0

cleanup() {
  if [[ "$ALT_SCREEN" == "1" ]]; then
    tput rmcup 2>/dev/null || true
  fi
  rm -rf "$PREVIEW_AGENT_DIR"
}
trap cleanup EXIT INT TERM HUP

node - "$BASE_AGENT_DIR/settings.json" "$PREVIEW_AGENT_DIR/settings.json" <<'NODE'
const fs = require("node:fs");
const [source, target] = process.argv.slice(2);
let settings = {};
try {
  settings = JSON.parse(fs.readFileSync(source, "utf8"));
} catch {}
settings.packages = [];
settings.extensions = [];
settings.skills = [];
settings.prompts = [];
settings.themes = [];
settings.quietStartup = true;
settings.theme = "oscura-midnight";
settings.hideThinkingBlock = true;
settings.editorPaddingX = 2;
settings.outputPad = 1;
settings.enableInstallTelemetry = false;
fs.writeFileSync(target, `${JSON.stringify(settings, null, 2)}\n`, { mode: 0o600 });
NODE

for file in auth.json models.json models-store.json trust.json; do
  if [[ -f "$BASE_AGENT_DIR/$file" ]]; then
    ln -s "$BASE_AGENT_DIR/$file" "$PREVIEW_AGENT_DIR/$file"
  fi
done
if [[ -d "$BASE_AGENT_DIR/bin" ]]; then
  ln -s "$BASE_AGENT_DIR/bin" "$PREVIEW_AGENT_DIR/bin"
fi

if [[ -t 1 && "${PI_OSCURA_ALT_SCREEN:-1}" != "0" ]] && command -v tput >/dev/null 2>&1; then
  tput smcup
  ALT_SCREEN=1
fi

PI_CODING_AGENT_DIR="$PREVIEW_AGENT_DIR" PI_OFFLINE=1 pi \
  --no-extensions \
  --no-themes \
  --no-context-files \
  --no-session \
  --theme "$THEME" \
  --extension "$EXTENSION" \
  "$@"
