Files
pikasTech-unidesk/scripts/fake-responses-provider-service.ts
T
2026-06-28 02:34:20 +00:00

52 lines
1.5 KiB
TypeScript

#!/usr/bin/env bun
// SPEC: issue-1190 fake Responses provider P0/P1.
// Responsibility: Bun entrypoint for the deterministic fake Responses provider.
import { createFakeResponsesProviderService, loadFakeResponsesProviderConfig } from "./src/fake-responses-provider-service";
const args = process.argv.slice(2);
const config = loadFakeResponsesProviderConfig({
...process.env,
...(optionValue("--host") === undefined ? {} : { LISTEN_HOST: optionValue("--host") }),
...(optionValue("--port") === undefined ? {} : { PORT: optionValue("--port") }),
...(optionValue("--model") === undefined ? {} : { FAKE_RESPONSES_MODEL_ID: optionValue("--model") }),
});
const service = createFakeResponsesProviderService(config);
if (args.includes("--once")) {
console.log(JSON.stringify(service.health(), null, 2));
process.exit(0);
}
const server = Bun.serve({
hostname: config.host,
port: config.port,
fetch: service.fetch,
});
console.log(JSON.stringify({
ok: true,
command: "fake-responses-provider-service",
url: server.url.href,
health: service.health(),
valuesPrinted: false,
}, null, 2));
process.on("SIGTERM", () => {
server.stop(true);
process.exit(0);
});
process.on("SIGINT", () => {
server.stop(true);
process.exit(0);
});
await new Promise(() => undefined);
function optionValue(name: string): string | undefined {
const index = args.indexOf(name);
if (index === -1) return undefined;
const value = args[index + 1];
if (value === undefined || value.startsWith("--")) throw new Error(`${name} requires a value`);
return value;
}