feat(booterm): add PTY session registry + listing endpoint

In-memory SessionMeta registry tracks active terminal sessions with
paneId, sessionId, projectPath, title, createdAt, lastActivityAt.
GET /api/term/sessions returns all active sessions as JSON array.
Registry is updated on WS attach and cleaned up on disconnect.
This commit is contained in:
2026-06-07 22:40:27 +00:00
parent 89a6ffe8a0
commit 7ef479639a
4 changed files with 68 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ import {
} from '../pty/manager.js';
import { attachPty } from '../pty/pty.js';
import { getUser } from '../auth.js';
import { register, unregister } from '../pty/registry.js';
export function registerWsAttachRoute(app: FastifyInstance, tmuxConfPath: string): void {
app.get<{
@@ -57,6 +58,8 @@ export function registerWsAttachRoute(app: FastifyInstance, tmuxConfPath: string
return;
}
register(sid, pid, session.project_path);
let handle: IPty;
try {
handle = attachPty({
@@ -157,6 +160,7 @@ export function registerWsAttachRoute(app: FastifyInstance, tmuxConfPath: string
// teardown happens via the /kill route called from the frontend when the
// user closes the pane.
socket.on('close', () => {
unregister(pid);
try {
handle.kill();
} catch {