42 lines
1.2 KiB
TypeScript
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);
|
|
});
|
|
});
|
|
}
|