export async function register() { if (process.env.NEXT_RUNTIME === 'nodejs') { try { // Dynamic imports — avoids bundling SQLite into client const { listDeploymentIds } = await import('@/lib/vfs/adapters/sqlite-connection'); listDeploymentIds(); // Verify SQLite is available (throws in browser mode) const { Scheduler } = await import('@/lib/scheduler'); const { createDeploymentSchedulerTask } = await import('@/lib/scheduler/deployment-scheduler'); const scheduler = new Scheduler({ pollIntervalMs: 30000 }); scheduler.registerTask(createDeploymentSchedulerTask()); scheduler.start(); } catch (err) { // Browser mode or SQLite not available — skip if (process.env.ADMIN_PASSWORD) { // Only log in server mode (ADMIN_PASSWORD indicates server deployment) console.warn('[Scheduler] Failed to initialize:', err instanceof Error ? err.message : err); } } // Rebuild the Caddy config from the deployment routing table on boot, so a // freshly (re)deployed instance serves every existing deployment subdomain // without waiting for the next publish to regenerate it. No-op unless // STATIC_PROXY=true. try { const { regenerateInstanceCaddy } = await import('@/lib/caddy/regenerate'); await regenerateInstanceCaddy(); } catch (err) { if (process.env.ADMIN_PASSWORD) { console.warn('[Caddy] Startup regeneration failed:', err instanceof Error ? err.message : err); } } } }