fix sidecar websocket: routes handler was intercepting upgrade requests

The Bun routes option matched "/" before fetch could handle the
WebSocket upgrade, so the API server could never connect. Moved
route handling into fetch after the upgrade check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-05 09:53:31 +00:00
co-authored by Claude Opus 4.6
parent 28f5cefb5b
commit 5925ac49a1
+11 -10
View File
@@ -203,22 +203,23 @@ const server = Bun.serve({
port: PORT,
hostname: '127.0.0.1',
routes: {
'/': () => new Response('process-sidecar'),
'/health': () => new Response(JSON.stringify({
status: 'ok',
uptime: Date.now() - startedAt,
piSessions: piManager.getAllSessions().length,
claudeSessions: claudeManager.getActiveSessionKeys().length,
}), { headers: { 'Content-Type': 'application/json' } }),
},
fetch(req, server) {
if (req.headers.get('upgrade') === 'websocket') {
const ok = server.upgrade(req);
if (!ok) return new Response('Upgrade failed', { status: 500 });
return;
}
const url = new URL(req.url);
if (url.pathname === '/') return new Response('process-sidecar');
if (url.pathname === '/health') {
return new Response(JSON.stringify({
status: 'ok',
uptime: Date.now() - startedAt,
piSessions: piManager.getAllSessions().length,
claudeSessions: claudeManager.getActiveSessionKeys().length,
}), { headers: { 'Content-Type': 'application/json' } });
}
return new Response('Not found', { status: 404 });
},