import { loadRuntimeConfig } from "../config/runtime.js";
import { startServer } from "../mcp/server.js";
import { logError, logInfo } from "../shared/logging.js";
async function start(): Promise<void> {
logInfo("bootstrap", "stdio_startup_begin");
const runtime = loadRuntimeConfig();
// Set up signal handlers
let shuttingDown = false;
const shutdown = async (signal?: NodeJS.Signals) => {
if (shuttingDown) {
return;
}
shuttingDown = true;
logInfo("bootstrap", "shutdown_begin", signal ? { signal } : undefined);
process.exit(0);
};
process.once("SIGINT", () => {
logInfo("bootstrap", "signal_received", { signal: "SIGINT" });
void shutdown("SIGINT");
});
process.once("SIGTERM", () => {
logInfo("bootstrap", "signal_received", { signal: "SIGTERM" });
void shutdown("SIGTERM");
});
await startServer(runtime);
logInfo("bootstrap", "stdio_ready", { transport: "stdio" });
}
start().catch(error => {
const reason = error instanceof Error ? error.message : String(error);
logError("bootstrap", "stdio_startup_failed", { reason });
process.exitCode = 1;
});