maestro/src/bridge/console-admin-api.ts
2026-06-03 05:08:00 +00:00

28 lines
1018 B
TypeScript

import { Router, type Request, type Response } from 'express';
import type { SessionRegistry } from '../ssh/console-registry.js';
export function createConsoleAdminRouter(deps: {
registry: SessionRegistry;
requireAdmin: any;
}): Router {
const r = Router();
r.get('/ssh/console-sessions', deps.requireAdmin, (_req: Request, res: Response) => {
const sessions = deps.registry.listAll().map((s) => ({
task_id: s.localTaskId,
owner_id: s.ownerId,
connection_id: s.connectionId,
started_at: new Date(s.startedAt).toISOString(),
last_activity_at: new Date(s.lastActivityAt).toISOString(),
total_input_bytes: s.totalInputBytes,
total_output_bytes: s.totalOutputBytes,
}));
res.json({ sessions });
});
r.post('/ssh/console-sessions/:taskId/kill', deps.requireAdmin, async (req: Request, res: Response) => {
const taskId = req.params.taskId!;
await deps.registry.closeForTask(taskId, 'admin_kill');
res.json({ closed: true });
});
return r;
}