Format routing simplification files

This commit is contained in:
ejclaw
2026-04-06 22:45:04 +09:00
parent a74d08be1b
commit 1c1bc13e04
4 changed files with 21 additions and 16 deletions

View File

@@ -31,9 +31,7 @@ import {
preparePairedExecutionContext,
} from './paired-execution-context.js';
import { resolveCodexFallbackHandoff } from './paired-turn-fallback.js';
import {
resolveExecutionTarget,
} from './message-runtime-rules.js';
import { resolveExecutionTarget } from './message-runtime-rules.js';
import {
isRetryableClaudeSessionFailureAttempt,
resolveClaudeRetryTrigger,

View File

@@ -23,9 +23,10 @@ function mergeHumanAndTurnOutputMessages(
humanMessages: NewMessage[],
turnOutputs: PairedTurnOutput[],
): NewMessage[] {
return [...humanMessages, ...turnOutputsToMessages(turnOutputs, chatJid)].sort(
(a, b) => a.timestamp.localeCompare(b.timestamp),
);
return [
...humanMessages,
...turnOutputsToMessages(turnOutputs, chatJid),
].sort((a, b) => a.timestamp.localeCompare(b.timestamp));
}
export function buildPairedTurnPrompt(args: {
@@ -40,7 +41,9 @@ export function buildPairedTurnPrompt(args: {
return formatMessages(args.labeledFallbackMessages, args.timezone);
}
const humanMessages = args.missedMessages.filter((message) => !message.is_bot_message);
const humanMessages = args.missedMessages.filter(
(message) => !message.is_bot_message,
);
return formatMessages(
mergeHumanAndTurnOutputMessages(
args.chatJid,

View File

@@ -87,7 +87,11 @@ describe('message-runtime-rules', () => {
it('honors an arbiter forced role only when arbiter is configured', () => {
const resolution = resolveExecutionTarget({
lease: { ...baseLease, arbiter_agent_type: null, arbiter_service_id: null },
lease: {
...baseLease,
arbiter_agent_type: null,
arbiter_service_id: null,
},
pairedTaskStatus: 'active',
groupFolder: 'group-1',
groupAgentType: 'claude-code',
@@ -122,11 +126,11 @@ describe('message-runtime-rules', () => {
});
it('always gives arbiter a dedicated session folder', () => {
expect(
resolveSessionFolder('group-1', 'arbiter', 'claude-code'),
).toBe('group-1:arbiter');
expect(
resolveSessionFolder('group-1', 'arbiter', 'codex'),
).toBe('group-1:arbiter');
expect(resolveSessionFolder('group-1', 'arbiter', 'claude-code')).toBe(
'group-1:arbiter',
);
expect(resolveSessionFolder('group-1', 'arbiter', 'codex')).toBe(
'group-1:arbiter',
);
});
});

View File

@@ -162,8 +162,8 @@ export function resolveExecutionTarget(args: {
const inferredRole = resolveActiveRole(args.pairedTaskStatus);
const canHonorForcedRole = Boolean(
args.forcedRole === 'owner' ||
(args.forcedRole === 'reviewer' && args.lease.reviewer_agent_type) ||
(args.forcedRole === 'arbiter' && args.lease.arbiter_agent_type),
(args.forcedRole === 'reviewer' && args.lease.reviewer_agent_type) ||
(args.forcedRole === 'arbiter' && args.lease.arbiter_agent_type),
);
const activeRole = canHonorForcedRole ? args.forcedRole! : inferredRole;
const effectiveServiceId = resolveLeaseServiceId(args.lease, activeRole);