- New Terminal tab in the workspace shell, backed by xterm.js, that connects
to the worker's PTY WebSocket using a short-lived token minted by
/api/agent-jobs/:id/terminal-token (owner-auth'd, never exposes the worker
secret to the browser)
- Site-matched xterm theme (light/dark, live theme switching), Victor Mono,
binary stdin + JSON resize protocol, reconnect, graceful 'not configured'
state when NEXT_PUBLIC_SPOON_AGENT_WORKER_WS_URL is unset
- env: NEXT_PUBLIC_SPOON_AGENT_WORKER_WS_URL (client), SPOON_AGENT_TERMINAL_SECRET