import { readFileSync } from "node:fs";
import { homedir } from "node:os";
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";

export interface AnalyticsConfig {
  serverName: string;
  serverVersion: string;
  dbPath: string;
  hookLogPath: string;
}

function readPackageVersion(): string {
  try {
    const currentDir = dirname(fileURLToPath(import.meta.url));
    const packageJsonPath = resolve(currentDir, "..", "package.json");
    const packageJsonContent = readFileSync(packageJsonPath, "utf8");
    const packageJson = JSON.parse(packageJsonContent) as { version?: unknown };
    if (typeof packageJson.version === "string" && packageJson.version.length > 0) {
      return packageJson.version;
    }
  } catch {
    // ignore and fallback
  }
  return "0.1.0";
}

export function defaultAnalyticsDbPath(): string {
  return resolve(homedir(), ".mcp-servers", "analytics", "analytics.sqlite");
}

export function loadConfig(): AnalyticsConfig {
  const dbPath = process.env.ANALYTICS_DB_PATH?.trim() || defaultAnalyticsDbPath();
  const dbDir = dirname(dbPath);
  return {
    serverName: "analytics-node",
    serverVersion: readPackageVersion(),
    dbPath,
    hookLogPath: resolve(dbDir, "hooks", "events.jsonl")
  };
}
