Format routing simplification files
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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',
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user