import { serveStdio } from '@modelcontextprotocol/server/stdio';
import { loadConfig } from './config.js';
import { createComputerMcpServerFactory } from './server.js';

const config = await loadConfig();
const handle = serveStdio(createComputerMcpServerFactory(config), { legacy: 'reject' });

if (config.logLevel !== 'silent') {
  console.error('ChatGPT-Computer-MCP listening on stdio (MCP 2026-07-28, legacy rejected)');
}

let closing = false;
async function shutdown(signal: string): Promise<void> {
  if (closing) return;
  closing = true;
  if (config.logLevel !== 'silent') console.error(`ChatGPT-Computer-MCP shutting down (${signal})`);
  try {
    await handle.close();
    process.exitCode = 0;
  } catch (error) {
    console.error(error);
    process.exitCode = 1;
  }
}

process.once('SIGINT', () => { void shutdown('SIGINT'); });
process.once('SIGTERM', () => { void shutdown('SIGTERM'); });
