2026-05-27 22:45:26 -04:00
|
|
|
#!/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';
|
2026-05-29 06:54:49 -04:00
|
|
|
import modelsRoutes from './routes/models.js';
|
2026-05-27 22:45:26 -04:00
|
|
|
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';
|
2026-05-29 06:54:49 -04:00
|
|
|
import { c } from './utils/colors.js';
|