#!/usr/bin/env bun import { createCloudApiServer } from "../../internal/cloud/server.ts"; import { applyCloudApiImageEnv, parsePort, parseTimeout } from "./runtime-options.ts"; const host = process.env.HWLAB_CLOUD_API_HOST || "0.0.0.0"; const port = parsePort(process.env.HWLAB_CLOUD_API_PORT, parsePort(process.env.PORT, 6667)); const codeAgentTimeoutMs = parseTimeout(process.env.HWLAB_CODE_AGENT_TIMEOUT_MS, 1200000, { min: 1000, max: 2400000 }); const codeAgentHardTimeoutMs = parseTimeout(process.env.HWLAB_CODE_AGENT_HARD_TIMEOUT_MS, Math.max(1200000, codeAgentTimeoutMs * 4), { min: codeAgentTimeoutMs, max: 3600000 }); applyCloudApiImageEnv(process.env); const server = createCloudApiServer({ codeAgentTimeoutMs, codeAgentHardTimeoutMs }); server.listen(port, host, () => { const address = server.address(); const resolvedPort = typeof address === "object" && address ? address.port : port; process.stdout.write( `${JSON.stringify({ serviceId: "hwlab-cloud-api", status: "listening", host, port: resolvedPort })}\n` ); }); for (const signal of ["SIGINT", "SIGTERM"]) { process.on(signal, () => { server.close(() => { process.exit(0); }); }); }