import { hostname } from 'os'; import { getPluginConfig } from '../core/config'; import { startManagedMonitor } from '../core/managed-monitor'; export function registerGatewayStartHook(api: any, deps: { logger: any; pushMetaToMonitor: () => Promise; startCalendarScheduler: () => void; setMetaPushInterval: (handle: ReturnType) => void; }) { const { logger, pushMetaToMonitor, startCalendarScheduler, setMetaPushInterval } = deps; api.on('gateway_start', () => { logger.info('HarborForge plugin active'); const live = getPluginConfig(api); startManagedMonitor(logger, { managedMonitor: live.managedMonitor, backendUrl: live.backendUrl, identifier: live.identifier, apiKey: live.apiKey, monitor_port: live.monitor_port, reportIntervalSec: live.reportIntervalSec, logLevel: live.logLevel, }); const intervalSec = live.reportIntervalSec || 30; setTimeout(() => void pushMetaToMonitor(), 2000); setMetaPushInterval(setInterval(() => void pushMetaToMonitor(), intervalSec * 1000)); if (live.enabled !== false && live.calendarEnabled !== false) { setTimeout(() => startCalendarScheduler(), 5000); } logger.info(`HarborForge startup config identifier=${live.identifier || hostname()} backend=${live.backendUrl}`); }); }