feat: improve codex app controls and recovery

This commit is contained in:
shiyue
2026-06-15 13:22:36 +08:00
parent 3a4006b7d3
commit ed3238fa49
8 changed files with 448 additions and 29 deletions

View File

@@ -25,6 +25,7 @@ if (args[0] !== 'app-server') {
const threads = new Map();
const pendingServerRequests = new Map();
let nextServerRequestId = 1;
let mcpReloadCount = 0;
function send(message) {
process.stdout.write(`${JSON.stringify(message)}\n`);
@@ -429,6 +430,20 @@ function startTurn(params) {
},
});
if (/runtime warning/i.test(text)) {
const message = 'Heads up: Long threads and multiple compactions can cause the model to be less accurate. Start a new thread when possible to keep threads small and targeted.';
for (let i = 0; i < 2; i += 1) {
send({
method: 'warning',
params: {
threadId: thread.id,
turnId,
message,
},
});
}
}
if (/collaboration/i.test(text)) {
completeTurn(thread, turnId, `collaboration mode: ${collaborationSummary(params)}`);
return { turn: { id: turnId, status: 'running', items: [] } };
@@ -516,6 +531,11 @@ function handleRequest(message) {
send({ id, result: { data: [{ mode: 'default' }, { mode: 'plan' }] } });
return;
}
if (method === 'config/mcpServer/reload') {
mcpReloadCount += 1;
send({ id, result: { reloaded: true, reloadCount: mcpReloadCount } });
return;
}
if (method === 'thread/start') {
const thread = ensureThread(null, params);
send({ id, result: { thread: threadPayload(thread), model: params.model || 'gpt-5.5', cwd: thread.cwd, modelProvider: 'mock', approvalPolicy: params.approvalPolicy || 'never', approvalsReviewer: 'user', sandbox: params.sandbox || 'danger-full-access' } });