Files
pikasTech-HWLAB/cmd/hwlab-cloud-api/main.ts
T

42 lines
1.2 KiB
TypeScript

#!/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);
});
});
}