feat: interrupt canceled codex app-server turns

This commit is contained in:
AI Bot
2026-06-03 13:12:23 +08:00
parent 142fb2a4b3
commit 13201e6aee
11 changed files with 517 additions and 1 deletions

View File

@@ -7,6 +7,7 @@ const received = [];
let injectedItems = [];
let extraSkillRoots = [];
let overloadedTurnStartEmitted = false;
let interruptibleTurn = null;
function send(message) {
process.stdout.write(`${JSON.stringify(message)}\n`);
@@ -645,6 +646,13 @@ rl.on("line", (line) => {
if (process.env.BOSS_CODEX_APP_SERVER_FIXTURE_EXIT_AFTER_TURN_START === "1") {
process.exit(0);
}
if (process.env.BOSS_CODEX_APP_SERVER_FIXTURE_WAIT_FOR_INTERRUPT === "1") {
interruptibleTurn = {
threadId: message.params?.threadId,
turnId: "turn-fixture",
};
return;
}
if (process.env.BOSS_CODEX_APP_SERVER_FIXTURE_EMIT_PROGRESS === "1") {
send({
method: "turn/plan/updated",
@@ -1503,6 +1511,25 @@ rl.on("line", (line) => {
return;
}
if (message.method === "turn/interrupt") {
send({
id: message.id,
result: {},
});
send({
method: "turn/completed",
params: {
threadId: message.params?.threadId ?? interruptibleTurn?.threadId,
turn: {
id: message.params?.turnId ?? interruptibleTurn?.turnId,
status: "interrupted",
},
},
});
process.stderr.write(`${JSON.stringify({ received })}\n`);
return;
}
if (message.method === "turn/steer") {
const text = message.params?.input?.find?.((item) => item?.type === "text")?.text ?? "";
send({