#!/usr/bin/env node // Load environment variables before other imports execute import './load-env.js'; import fs, { promises as fsPromises } from 'fs'; import path from 'path'; import os from 'os'; import http from 'http'; import { spawn } from 'child_process'; import express from 'express'; import cors from 'cors'; import mime from 'mime-types'; import { AppError, WORKSPACES_ROOT, validateWorkspacePath } from '@/shared/utils.js'; import { closeSessionsWatcher, initializeSessionsWatcher } from '@/modules/providers/index.js'; import { createWebSocketServer } from '@/modules/websocket/index.js'; import { getConnectableHost } from '../shared/networkHosts.js'; import { findAppRoot, getModuleDir } from './utils/runtime-paths.js'; import { queryClaudeSDK, abortClaudeSDKSession, isClaudeSDKSessionActive, getActiveClaudeSDKSessions, resolveToolApproval, getPendingApprovalsForSession, reconnectSessionWriter, } from './claude-sdk.js'; import { spawnCursor, abortCursorSession, isCursorSessionActive, getActiveCursorSessions, } from './cursor-cli.js'; import { queryCodex, abortCodexSession, isCodexSessionActive, getActiveCodexSessions, } from './openai-codex.js'; import { spawnGemini, abortGeminiSession, isGeminiSessionActive, getActiveGeminiSessions, } from './gemini-cli.js'; import sessionManager from './sessionManager.js'; import { stripAnsiSequences, normalizeDetectedUrl, extractUrlsFromText, shouldAutoOpenUrlFromOutput, } from './utils/url-detection.js'; import gitRoutes from './routes/git.js'; import authRoutes from './routes/auth.js'; import cursorRoutes from './routes/cursor.js'; import taskmasterRoutes from './routes/taskmaster.js'; import mcpUtilsRoutes from './routes/mcp-utils.js'; import commandsRoutes from './routes/commands.js'; import settingsRoutes from './routes/settings.js'; import agentRoutes from './routes/agent.js'; import projectModuleRoutes from './modules/projects/projects.routes.js'; import userRoutes from './routes/user.js'; import geminiRoutes from './routes/gemini.js'; import pluginsRoutes from './routes/plugins.js'; import modelsRoutes from './routes/models.js'; import providerRoutes from './modules/providers/provider.routes.js'; import { startEnabledPluginServers, stopAllPlugins, getPluginPort } from './utils/plugin-process-manager.js'; import { initializeDatabase, projectsDb } from './modules/database/index.js'; import { configureWebPush } from './services/vapid-keys.js'; import { validateApiKey, authenticateToken, authenticateWebSocket } from './middleware/auth.js'; import { IS_PLATFORM } from './constants/config.js'; import { c } from './utils/colors.js';