/** * WebSocket Main Router * * This is the main entry point for all WebSocket routes. * All module routers are imported from their respective folders and merged here. * * Structure follows backend/routes pattern: * - Each feature group has its own folder (demo/, chat/, terminal/, etc.) * - Each folder contains handlers and an index.ts that exports the router * - This file imports and merges all routers into a single API type */ import { createRouter } from '$shared/utils/ws-server'; // Import all module routers import { authRouter } from './auth'; import { chatRouter } from './chat'; import { terminalRouter } from './terminal'; import { previewRouter } from './preview'; import { snapshotRouter } from './snapshot'; import { projectsRouter } from './projects'; import { sessionsRouter } from './sessions'; import { messagesRouter } from './messages'; import { settingsRouter } from './settings'; import { userRouter } from './user'; import { filesRouter } from './files'; import { workspaceRouter } from './workspace'; import { systemRouter } from './system'; import { tunnelRouter } from './tunnel'; import { gitRouter } from './git'; import { engineRouter } from './engine'; import { stackRouter } from './stack'; import { dbClientRouter } from './db-client'; import { sshRouter } from './ssh'; import { portsRouter } from './ports'; import { containersRouter } from './containers'; import { mcpRouter } from './mcp'; import { integrationsRouter } from './integrations'; import { skillsRouter } from './skills'; import { subagentsRouter } from './subagents'; import { instructionsRouter } from './instructions'; import { permissionsRouter } from './permissions'; import { profilesRouter } from './profiles'; import { artifactsRouter } from './artifacts'; import { memoryRouter } from './memory'; import { worktreesRouter } from './worktrees'; import { notesRouter } from './notes'; import { workRouter } from './work'; import { deploymentsRouter } from './deployments'; // ============================================ // Main App Router - Merge All Module Routers // ============================================ export const wsRouter = createRouter() // Authentication .merge(authRouter) // Terminal System .merge(terminalRouter) // Preview .merge(previewRouter) // Chat System .merge(chatRouter) // Snapshot System .merge(snapshotRouter) // Worktrees (isolated project copies) .merge(worktreesRouter) // CRUD Operations .merge(projectsRouter) .merge(sessionsRouter) .merge(messagesRouter) .merge(settingsRouter) .merge(userRouter) .merge(filesRouter) .merge(workspaceRouter) .merge(systemRouter) .merge(tunnelRouter) // Git Source Control .merge(gitRouter) // AI Engine Management .merge(engineRouter) // Stack (install Git, Claude Code, OpenCode, Chrome binaries) .merge(stackRouter) // DB Client (global database management) .merge(dbClientRouter) // SSH client (terminal, SFTP, port forwarding) .merge(sshRouter) .merge(portsRouter) .merge(containersRouter) // External MCP server management (install from the official registry) .merge(mcpRouter) .merge(integrationsRouter) // Agent Skills management — model-invoked skills AND user-invoked `/slash` // prompts are one feature (create, import, install from a marketplace) .merge(skillsRouter) // Subagents and Project Instructions (artifact framework) .merge(subagentsRouter) .merge(instructionsRouter) .merge(permissionsRouter) // Profiles (reusable artifact bundles activated per-session) .merge(profilesRouter) .merge(artifactsRouter) // Memory Graph (one store of memories, shared by every engine) .merge(memoryRouter) // Notes (project-scoped markdown) .merge(notesRouter) // Issues & PRs surface — work items, pull requests and CI for the current project .merge(workRouter) // Deployments surface — builds, logs and what is live, for the current project .merge(deploymentsRouter); // Export API type for frontend type-safe access export type WSAPI = typeof wsRouter['$api'];