import * as Sentry from '@sentry/node'; import { env } from './env.js'; import { logger } from './logger.js'; let initialized = false; export function initSentry(service: 'bot-manager' | 'bot-shard' | 'webui'): void { if (initialized || !env.SENTRY_DSN) { return; } Sentry.init({ dsn: env.SENTRY_DSN, environment: env.NODE_ENV, release: process.env.npm_package_version ? `nexumi@${process.env.npm_package_version}` : 'nexumi@0.1.0', tracesSampleRate: env.NODE_ENV === 'production' ? 0.1 : 1.0, initialScope: { tags: { service } } }); initialized = true; logger.info({ service }, 'Sentry initialized'); } export function captureException(error: unknown, context?: Record): void { if (!env.SENTRY_DSN) { return; } Sentry.withScope((scope) => { if (context) { scope.setExtras(context); } Sentry.captureException(error); }); }