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<string, unknown>): void {
  if (!env.SENTRY_DSN) {
    return;
  }
  Sentry.withScope((scope) => {
    if (context) {
      scope.setExtras(context);
    }
    Sentry.captureException(error);
  });
}
