shinroute / src /server-init.ts
shinmentakezo07
Add OmniRoute codebase without binary assets
9e4583c
Raw
History Blame Contribute Delete
1.8 kB
// Server startup script
import initializeCloudSync from "./shared/services/initializeCloudSync";
import { enforceSecrets } from "./shared/utils/secretsValidator";
import { initAuditLog, cleanupExpiredLogs, logAuditEvent } from "./lib/compliance/index";
import { initConsoleInterceptor } from "./lib/consoleInterceptor";
async function startServer() {
// Console interceptor: capture all console output to log file (must be first)
initConsoleInterceptor();
// FASE-01: Validate required secrets before anything else (fail-fast)
enforceSecrets();
// Compliance: Initialize audit_log table
try {
initAuditLog();
console.log("[COMPLIANCE] Audit log table initialized");
} catch (err) {
console.warn("[COMPLIANCE] Could not initialize audit log:", err.message);
}
// Compliance: One-time cleanup of expired logs
try {
const cleanup = cleanupExpiredLogs();
if (cleanup.deletedUsage || cleanup.deletedCallLogs || cleanup.deletedAuditLogs) {
console.log("[COMPLIANCE] Expired log cleanup:", cleanup);
}
} catch (err) {
console.warn("[COMPLIANCE] Log cleanup failed:", err.message);
}
console.log("Starting server with cloud sync...");
try {
// Initialize cloud sync
await initializeCloudSync();
console.log("Server started with cloud sync initialized");
// Log server start event to audit log
logAuditEvent({ action: "server.start", details: { timestamp: new Date().toISOString() } });
} catch (error) {
console.error("[FATAL] Error initializing cloud sync:", error);
process.exit(1);
}
}
// Start the server initialization
startServer().catch((err) => {
console.error("[FATAL] Server initialization failed:", err);
process.exit(1);
});
// Export for use as module if needed
export default startServer;