/workspaces refactor

This commit is contained in:
2026-02-19 16:07:00 +00:00
parent 4dde3aec66
commit 9870fa7ae8
21 changed files with 716 additions and 227 deletions
+17 -3
View File
@@ -7,12 +7,19 @@ import { verify } from './servers/jwt';
import { officerdb, TokenBlacklist } from 'officerdb';
import { claudeWebsocket } from './servers/api/claude/websocket';
import { opencodeWebsocket } from './servers/api/opencode/websocket';
import { terminalWebsocket } from './servers/api/terminal/websocket';
import { terminalWebsocket, initTerminalSidecars } from './servers/api/terminal/websocket';
import officerWeb from './apps/officer-web/index.html';
const { PORT = '5000' } = process.env;
type WSData = { userId: number; email: string; provider: 'claude' | 'opencode' | 'terminal' };
type WSData = {
userId: number;
email: string;
role: string;
provider: 'claude' | 'opencode' | 'terminal';
sandboxed: boolean;
sessionId?: string;
};
const handlers: Record<string, typeof claudeWebsocket> = {
claude: claudeWebsocket,
@@ -35,7 +42,12 @@ async function upgradeWs(req: Request, server: any, provider: 'claude' | 'openco
if (blacklisted) return new Response('Unauthorized', { status: 401 });
}
const ok = server.upgrade(req, { data: { userId: user.id, email: user.email, provider } });
const url = new URL(req.url);
const sessionId = url.searchParams.get('sessionId') ?? undefined;
const sandboxed = url.searchParams.get('sandboxed') !== 'false';
const ok = server.upgrade(req, {
data: { userId: user.id, email: user.email, role: user.role, provider, sandboxed, sessionId },
});
if (!ok) return new Response('Upgrade failed', { status: 500 });
} catch {
return new Response('Unauthorized', { status: 401 });
@@ -84,3 +96,5 @@ const server = serve({
});
console.log(`🚀 Server running at ${server.url}`);
void initTerminalSidecars();