mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2026-01-31 06:14:18 -05:00
Removes the `Chat Prompt.txt`, `VSCode Agent/Prompt.txt`, `Warp.dev/Prompt.txt`, and `v0 Prompts and Tools/Prompt.txt` files. These files likely contain outdated prompts or configurations that are no longer needed in the current project. Removing them helps to clean up the codebase and prevent potential confusion or conflicts.
135 lines
3.5 KiB
TypeScript
135 lines
3.5 KiB
TypeScript
import express from 'express';
|
|
import cors from 'cors';
|
|
import helmet from 'helmet';
|
|
import compression from 'compression';
|
|
import { createServer } from 'http';
|
|
import { Server } from 'socket.io';
|
|
import dotenv from 'dotenv';
|
|
import { Logger } from './utils/logger';
|
|
import { NowhereCore } from './core/nowhere';
|
|
import { setupRoutes } from './routes';
|
|
import { setupWebSocket } from './websocket';
|
|
import { errorHandler } from './middleware/error-handler';
|
|
import { rateLimiter } from './middleware/rate-limiter';
|
|
|
|
// Load environment variables
|
|
dotenv.config();
|
|
|
|
const app = express();
|
|
const server = createServer(app);
|
|
const io = new Server(server, {
|
|
cors: {
|
|
origin: process.env.FRONTEND_URL || "*",
|
|
methods: ["GET", "POST", "PUT", "DELETE"],
|
|
credentials: true
|
|
}
|
|
});
|
|
|
|
const logger = new Logger('Server');
|
|
const PORT = process.env.PORT || 3001;
|
|
|
|
// Initialize Nowhere Core
|
|
const nowhere = new NowhereCore();
|
|
|
|
// Security middleware
|
|
app.use(helmet({
|
|
contentSecurityPolicy: {
|
|
directives: {
|
|
defaultSrc: ["'self'"],
|
|
styleSrc: ["'self'", "'unsafe-inline'"],
|
|
scriptSrc: ["'self'"],
|
|
imgSrc: ["'self'", "data:", "https:"],
|
|
},
|
|
},
|
|
}));
|
|
|
|
// Compression middleware
|
|
app.use(compression());
|
|
|
|
// CORS middleware
|
|
app.use(cors({
|
|
origin: process.env.FRONTEND_URL || "*",
|
|
credentials: true,
|
|
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
|
|
allowedHeaders: ['Content-Type', 'Authorization', 'X-Requested-With']
|
|
}));
|
|
|
|
// Body parsing middleware
|
|
app.use(express.json({ limit: '10mb' }));
|
|
app.use(express.urlencoded({ extended: true, limit: '10mb' }));
|
|
|
|
// Rate limiting
|
|
app.use(rateLimiter);
|
|
|
|
// Health check endpoint
|
|
app.get('/health', (req, res) => {
|
|
res.json({
|
|
status: 'ok',
|
|
message: 'Nowhere AI Agent Backend is running',
|
|
timestamp: new Date().toISOString(),
|
|
version: '2.0.0',
|
|
environment: process.env.NODE_ENV || 'development'
|
|
});
|
|
});
|
|
|
|
// Setup API routes
|
|
setupRoutes(app, nowhere);
|
|
|
|
// Setup WebSocket
|
|
setupWebSocket(io, nowhere);
|
|
|
|
// Error handling middleware (must be last)
|
|
app.use(errorHandler);
|
|
|
|
// Graceful shutdown
|
|
process.on('SIGTERM', async () => {
|
|
logger.info('SIGTERM received, shutting down gracefully');
|
|
await nowhere.close();
|
|
server.close(() => {
|
|
logger.info('Server closed');
|
|
process.exit(0);
|
|
});
|
|
});
|
|
|
|
process.on('SIGINT', async () => {
|
|
logger.info('SIGINT received, shutting down gracefully');
|
|
await nowhere.close();
|
|
server.close(() => {
|
|
logger.info('Server closed');
|
|
process.exit(0);
|
|
});
|
|
});
|
|
|
|
// Start server
|
|
server.listen(PORT, () => {
|
|
logger.info(`🚀 Nowhere AI Agent Backend running on port ${PORT}`);
|
|
logger.info(`📊 Health check: http://localhost:${PORT}/health`);
|
|
logger.info(`🔧 API status: http://localhost:${PORT}/api/v1/status`);
|
|
logger.info(`💬 WebSocket: ws://localhost:${PORT}`);
|
|
logger.info(`🌍 Environment: ${process.env.NODE_ENV || 'development'}`);
|
|
|
|
// Log available features
|
|
logger.info('✅ Features enabled:', {
|
|
voiceCommands: true,
|
|
autopilotMode: true,
|
|
memorySystem: true,
|
|
realTimeCommunication: true,
|
|
advancedAIProcessing: true,
|
|
multiModelSupport: true,
|
|
security: true,
|
|
logging: true
|
|
});
|
|
});
|
|
|
|
// Handle uncaught exceptions
|
|
process.on('uncaughtException', (error) => {
|
|
logger.error('Uncaught Exception', { error: error.message, stack: error.stack });
|
|
process.exit(1);
|
|
});
|
|
|
|
process.on('unhandledRejection', (reason, promise) => {
|
|
logger.error('Unhandled Rejection', { reason, promise });
|
|
process.exit(1);
|
|
});
|
|
|
|
export { app, server, io, nowhere };
|