Simplify paired turn routing and prompt builders

This commit is contained in:
ejclaw
2026-04-06 22:44:38 +09:00
parent f22947ba61
commit b62eebc25b
7 changed files with 519 additions and 227 deletions

View File

@@ -5,6 +5,7 @@ import {
isCodexRotationReason,
} from './agent-error-detection.js';
import { detectCodexRotationTrigger } from './codex-token-rotation.js';
import { resolveNextTurnAction } from './message-runtime-rules.js';
import type { PairedRoomRole, PairedTaskStatus } from './types.js';
import { getErrorMessage } from './utils.js';
@@ -123,26 +124,29 @@ export function resolvePairedFollowUpQueueAction(args: {
sawOutput: boolean;
taskStatus: PairedTaskStatus | null;
}): PairedFollowUpQueueAction {
const nextTurnAction = resolveNextTurnAction({
taskStatus: args.taskStatus,
lastTurnOutputRole:
args.executionStatus === 'succeeded' && args.sawOutput
? args.completedRole
: null,
});
if (args.executionStatus === 'succeeded' && args.sawOutput) {
if (
args.completedRole === 'owner' &&
args.taskStatus === 'review_ready'
) {
if (nextTurnAction.kind === 'reviewer-turn') {
return 'generic';
}
return args.completedRole === 'reviewer' &&
args.taskStatus === 'merge_ready'
nextTurnAction.kind === 'finalize-owner-turn'
? 'skip-inline-finalize'
: 'none';
}
const shouldRequeuePendingPairedTurn =
(args.completedRole === 'reviewer' || args.completedRole === 'arbiter') &&
(args.taskStatus === 'review_ready' ||
args.taskStatus === 'in_review' ||
args.taskStatus === 'arbiter_requested' ||
args.taskStatus === 'in_arbitration' ||
args.taskStatus === 'merge_ready');
(nextTurnAction.kind === 'reviewer-turn' ||
nextTurnAction.kind === 'arbiter-turn' ||
nextTurnAction.kind === 'finalize-owner-turn');
return shouldRequeuePendingPairedTurn ? 'pending' : 'none';
}