Files
boss/tests/fixtures/codex-app-server-runtime.mjs
2026-05-17 02:20:08 +08:00

102 lines
2.1 KiB
JavaScript

#!/usr/bin/env node
import readline from "node:readline";
const rl = readline.createInterface({ input: process.stdin });
const received = [];
function send(message) {
process.stdout.write(`${JSON.stringify(message)}\n`);
}
rl.on("line", (line) => {
const message = JSON.parse(line);
received.push(message);
if (message.method === "initialize") {
send({
id: message.id,
result: {
userAgent: "boss-test-codex-app-server",
platformFamily: "mac",
platformOs: "darwin",
},
});
return;
}
if (message.method === "initialized") {
return;
}
if (message.method === "thread/resume") {
send({
id: message.id,
result: {
thread: {
id: message.params?.threadId ?? "thread-fixture",
name: "fixture thread",
},
},
});
return;
}
if (message.method === "thread/start") {
send({
id: message.id,
result: {
thread: {
id: "thread-started-fixture",
name: "new fixture thread",
},
},
});
return;
}
if (message.method === "turn/start") {
const text = message.params?.input?.find?.((item) => item?.type === "text")?.text ?? "";
send({
id: message.id,
result: {
turn: {
id: "turn-fixture",
threadId: message.params?.threadId,
},
},
});
if (process.env.BOSS_CODEX_APP_SERVER_FIXTURE_EXIT_AFTER_TURN_START === "1") {
process.exit(0);
}
send({
method: "item/agentMessage/delta",
params: {
threadId: message.params?.threadId,
turnId: "turn-fixture",
delta: `APP_SERVER_REPLY:${text}`,
},
});
send({
method: "turn/completed",
params: {
threadId: message.params?.threadId,
turn: {
id: "turn-fixture",
status: "completed",
},
},
});
process.stderr.write(`${JSON.stringify({ received })}\n`);
return;
}
send({
id: message.id,
error: {
code: -32601,
message: `unknown method ${message.method}`,
},
});
});