feat: add VM Health page to devops dashboard
Backend (Fastify):
- New module: modules/vm/ (types, repository, routes)
- GET /api/vm/health — runs vm-health-check.sh --json, returns structured result
- GET /api/vm/cleanup-log — tails /var/log/vm-cleanup.log
- POST /api/vm/cleanup — triggers vm-cleanup.sh (weekly / monthly / dry-run)
- Registered vmRoutes in server.ts
Frontend (Next.js):
- New page: /vm — VM Health
- Overall status banner (OK/WARN/CRIT) with issue summary
- Per-check cards: disk, load, RAM, swap, crash loops, container health,
build cache, docker images, journal, syslog — color-coded by level
- Cleanup trigger buttons (dry-run, weekly, monthly) with output viewer
- Collapsible cleanup log viewer (last 40 lines)
- Auto-refresh every 60s
- sidebar-nav.tsx: added 'VM Health' entry with Server icon
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>