feat: add controlled codex thread rollback

This commit is contained in:
AI Bot
2026-06-03 13:30:24 +08:00
parent 13201e6aee
commit 7a30c2a8d9
11 changed files with 421 additions and 2 deletions

View File

@@ -483,6 +483,7 @@ export type ComputerControlIntentCategory =
| "discussion_only"
| "project_development"
| "thread_collaboration"
| "thread_rollback"
| "browser_control"
| "desktop_control";
export type ComputerControlRuntimeKind =
@@ -1345,6 +1346,8 @@ export interface MasterAgentTask {
projectUnderstandingNotifyOnCompletion?: boolean;
relayViaMasterAgent?: boolean;
mirrorBossUserMessageToCodexDesktop?: boolean;
rollbackNumTurns?: number;
rollbackReason?: string;
intentCategory?: ComputerControlIntentCategory;
runtimeKind?: ComputerControlRuntimeKind;
controlPlatform?: ComputerControlPlatform;
@@ -4727,10 +4730,16 @@ export function migrateBossState(raw: Partial<BossState> | undefined): BossState
relayViaMasterAgent: task.relayViaMasterAgent === true ? true : undefined,
mirrorBossUserMessageToCodexDesktop:
task.mirrorBossUserMessageToCodexDesktop === true ? true : undefined,
rollbackNumTurns:
Number.isFinite(Number(task.rollbackNumTurns)) && Number(task.rollbackNumTurns) >= 1
? Math.floor(Number(task.rollbackNumTurns))
: undefined,
rollbackReason: trimToDefined(task.rollbackReason),
intentCategory:
task.intentCategory === "discussion_only" ||
task.intentCategory === "project_development" ||
task.intentCategory === "thread_collaboration" ||
task.intentCategory === "thread_rollback" ||
task.intentCategory === "browser_control" ||
task.intentCategory === "desktop_control"
? task.intentCategory
@@ -8795,6 +8804,8 @@ export async function queueMasterAgentTask(payload: {
projectUnderstandingNotifyOnCompletion?: boolean;
relayViaMasterAgent?: boolean;
mirrorBossUserMessageToCodexDesktop?: boolean;
rollbackNumTurns?: number;
rollbackReason?: string;
intentCategory?: ComputerControlIntentCategory;
runtimeKind?: ComputerControlRuntimeKind;
controlPlatform?: ComputerControlPlatform;
@@ -8856,6 +8867,11 @@ export async function queueMasterAgentTask(payload: {
relayViaMasterAgent: payload.relayViaMasterAgent === true ? true : undefined,
mirrorBossUserMessageToCodexDesktop:
payload.mirrorBossUserMessageToCodexDesktop === true ? true : undefined,
rollbackNumTurns:
Number.isFinite(Number(payload.rollbackNumTurns)) && Number(payload.rollbackNumTurns) >= 1
? Math.floor(Number(payload.rollbackNumTurns))
: undefined,
rollbackReason: trimToDefined(payload.rollbackReason),
intentCategory: payload.intentCategory,
runtimeKind: payload.runtimeKind,
controlPlatform: payload.controlPlatform,