import { readFileSync } from "node:fs"; import { join } from "node:path"; import { TyphonApplication } from "./app/TyphonApplication"; import { AppConfig } from "./config/AppConfig"; function readVersion(): string { try { const packagePath = join(process.cwd(), "package.json"); const parsed = JSON.parse(readFileSync(packagePath, "utf-8")) as { version?: string }; return parsed.version ?? "0.0.0"; } catch { return "0.0.0"; } } async function main(): Promise { const config = AppConfig.fromEnv(); const version = readVersion(); const app = new TyphonApplication(config, version); await app.start(); } void main().catch((error) => { const message = error instanceof Error ? error.message : String(error); console.error(JSON.stringify({ level: "error", component: "typhon", message })); process.exit(1); });