import { jsonResponse, errorResponse } from '../utils/cors' import { PORT_TERMINAL } from '../config' /** * Proxy GET /api/session-state → terminal server. * Returns session-state + terminal-registry combined, * so external clients (Android widget) get everything in one call. */ export async function handleSessionStateProxy(url: URL): Promise { const controller = new AbortController() const timeout = setTimeout(() => controller.abort(), 6000) try { const [stateResp, registryResp] = await Promise.all([ fetch(`http://localhost:${PORT_TERMINAL}/session-state`, { signal: controller.signal }), fetch(`http://localhost:${PORT_TERMINAL}/terminal-registry`, { signal: controller.signal }) ]) const stateData = stateResp.ok ? await stateResp.json() : { ptySessions: {} } const registryData = registryResp.ok ? await registryResp.json() : { registry: [] } return jsonResponse({ ptySessions: stateData.ptySessions ?? {}, registry: registryData.registry ?? [] }) } catch (e: any) { const msg = e.name === 'AbortError' ? 'Terminal server timeout (6s)' : `Failed to reach terminal server: ${e.message}` return errorResponse(msg, 502) } finally { clearTimeout(timeout) } }