[papyrus] Per-session tabs + Connect/resume as a stateless silverwood projection master
Render one tab per attached silverwood session (from 'session ls') instead of one terminal per workstream. A disconnected tab shows a Connect pane; Connect resumes that session (claude --resume <id>) in the checkout, gated on the advisory lock (a 409 carries the holder -> Force connect). A '+' starts a fresh session. The server runtime is now a per-session live-PTY registry ONLY (keyed by the claude session id, or a provisional uuid until the plugin hook reports it): it caches no durable data and re-reads silverwood on every GET /api/state, and the client reconciles that projection every ~1s (drag-safe, no invented state). Locks are acquired on connect / fresh-session record and released on disconnect/exit/SIGINT; status-update now records under session.workstreamId. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>