import { Application, Request, Response } from 'express';
import { activeSessions, updateActiveConnections } from '../../hub.js';
export function statusEndpoint(
app: Application,
type: string,
res: Response, // <-- Add this
sessionServers: Map<string, any>,
activeConnections: number,
MAX_CONCURRENT_CONNECTIONS: number
): void {
// Clean up stale sessions (older than 1 hour)
const oneHourAgo = Date.now() - (60 * 60 * 1000);
let staleSessions = 0;
for (const [sessionId, session] of activeSessions.entries()) {
if (session.lastActivity < oneHourAgo) {
activeSessions.delete(sessionId);
sessionServers.delete(sessionId);
staleSessions++;
}
}
res.json({
status: 'ok',
activeConnections,
activeSessions: activeSessions.size,
maxConnections: MAX_CONCURRENT_CONNECTIONS,
staleSessions,
sessions: Array.from(activeSessions.entries()).map(([id, session]) => ({
id,
startTime: new Date(session.startTime).toISOString(),
lastActivity: new Date(session.lastActivity).toISOString(),
clientInfo: session.clientInfo,
capabilities: session.capabilities,
toolsUsed: session.toolsUsed.length,
successfulTasks: session.successfulTasks,
achievements: session.achievements.length,
idleTime: Math.round((Date.now() - session.lastActivity) / 1000) + 's'
})),
explanation: {
activeConnections: "HTTP requests currently being processed",
activeSessions: "Total client sessions that have initialized",
difference: "Sessions persist after requests finish"
},
timestamp: new Date().toISOString()
});
}