feat(admin): Administration page — Users tab + Server tab (hardware, per-user CPU/memory/home share)

/users becomes /admin (redirected), a tab shell over the existing Users view
and a new Server tab backed by GET /api/host (server/lib/host-stats.js):
hostname/OS/uptime, CPU and load, memory and swap, every real disk with
HDD/SSD, NVIDIA GPUs, and each user's live share from two /proc samples —
attributed by the member's Linux uid (S3) or, for host processes, by the
inherited AGENTHUB_LANE_ID's workspace owner. Read-only, staff-only (/host
in STAFF_ONLY_PREFIXES), comm names only. Members' tmux card moves to the
Server tab.
This commit is contained in:
2026-10-15 16:33:32 +07:00
parent 758609775f
commit b6b40b0c1b
20 changed files with 1333 additions and 22 deletions
+2
View File
@@ -129,6 +129,7 @@ const authRouter = require("./routes/auth");
const meRouter = require("./routes/me");
const accountsRouter = require("./routes/accounts");
const usersRouter = require("./routes/users");
const hostRouter = require("./routes/host");
const { auditGuard } = require("./lib/audit");
const { authGuard, isServerMode, hasAdmin } = require("./lib/auth");
const { scopeGuard } = require("./lib/scope");
@@ -179,6 +180,7 @@ function createApp() {
app.use("/api/me", meRouter);
app.use("/api/accounts", accountsRouter);
app.use("/api/users", usersRouter);
app.use("/api/host", hostRouter);
app.use("/api/sessions", sessionsRouter);
app.use("/api/agents", agentsRouter);