Format routing simplification files
This commit is contained in:
@@ -31,9 +31,7 @@ import {
|
|||||||
preparePairedExecutionContext,
|
preparePairedExecutionContext,
|
||||||
} from './paired-execution-context.js';
|
} from './paired-execution-context.js';
|
||||||
import { resolveCodexFallbackHandoff } from './paired-turn-fallback.js';
|
import { resolveCodexFallbackHandoff } from './paired-turn-fallback.js';
|
||||||
import {
|
import { resolveExecutionTarget } from './message-runtime-rules.js';
|
||||||
resolveExecutionTarget,
|
|
||||||
} from './message-runtime-rules.js';
|
|
||||||
import {
|
import {
|
||||||
isRetryableClaudeSessionFailureAttempt,
|
isRetryableClaudeSessionFailureAttempt,
|
||||||
resolveClaudeRetryTrigger,
|
resolveClaudeRetryTrigger,
|
||||||
|
|||||||
@@ -23,9 +23,10 @@ function mergeHumanAndTurnOutputMessages(
|
|||||||
humanMessages: NewMessage[],
|
humanMessages: NewMessage[],
|
||||||
turnOutputs: PairedTurnOutput[],
|
turnOutputs: PairedTurnOutput[],
|
||||||
): NewMessage[] {
|
): NewMessage[] {
|
||||||
return [...humanMessages, ...turnOutputsToMessages(turnOutputs, chatJid)].sort(
|
return [
|
||||||
(a, b) => a.timestamp.localeCompare(b.timestamp),
|
...humanMessages,
|
||||||
);
|
...turnOutputsToMessages(turnOutputs, chatJid),
|
||||||
|
].sort((a, b) => a.timestamp.localeCompare(b.timestamp));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function buildPairedTurnPrompt(args: {
|
export function buildPairedTurnPrompt(args: {
|
||||||
@@ -40,7 +41,9 @@ export function buildPairedTurnPrompt(args: {
|
|||||||
return formatMessages(args.labeledFallbackMessages, args.timezone);
|
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(
|
return formatMessages(
|
||||||
mergeHumanAndTurnOutputMessages(
|
mergeHumanAndTurnOutputMessages(
|
||||||
args.chatJid,
|
args.chatJid,
|
||||||
|
|||||||
@@ -87,7 +87,11 @@ describe('message-runtime-rules', () => {
|
|||||||
|
|
||||||
it('honors an arbiter forced role only when arbiter is configured', () => {
|
it('honors an arbiter forced role only when arbiter is configured', () => {
|
||||||
const resolution = resolveExecutionTarget({
|
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',
|
pairedTaskStatus: 'active',
|
||||||
groupFolder: 'group-1',
|
groupFolder: 'group-1',
|
||||||
groupAgentType: 'claude-code',
|
groupAgentType: 'claude-code',
|
||||||
@@ -122,11 +126,11 @@ describe('message-runtime-rules', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('always gives arbiter a dedicated session folder', () => {
|
it('always gives arbiter a dedicated session folder', () => {
|
||||||
expect(
|
expect(resolveSessionFolder('group-1', 'arbiter', 'claude-code')).toBe(
|
||||||
resolveSessionFolder('group-1', 'arbiter', 'claude-code'),
|
'group-1:arbiter',
|
||||||
).toBe('group-1:arbiter');
|
);
|
||||||
expect(
|
expect(resolveSessionFolder('group-1', 'arbiter', 'codex')).toBe(
|
||||||
resolveSessionFolder('group-1', 'arbiter', 'codex'),
|
'group-1:arbiter',
|
||||||
).toBe('group-1:arbiter');
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -162,8 +162,8 @@ export function resolveExecutionTarget(args: {
|
|||||||
const inferredRole = resolveActiveRole(args.pairedTaskStatus);
|
const inferredRole = resolveActiveRole(args.pairedTaskStatus);
|
||||||
const canHonorForcedRole = Boolean(
|
const canHonorForcedRole = Boolean(
|
||||||
args.forcedRole === 'owner' ||
|
args.forcedRole === 'owner' ||
|
||||||
(args.forcedRole === 'reviewer' && args.lease.reviewer_agent_type) ||
|
(args.forcedRole === 'reviewer' && args.lease.reviewer_agent_type) ||
|
||||||
(args.forcedRole === 'arbiter' && args.lease.arbiter_agent_type),
|
(args.forcedRole === 'arbiter' && args.lease.arbiter_agent_type),
|
||||||
);
|
);
|
||||||
const activeRole = canHonorForcedRole ? args.forcedRole! : inferredRole;
|
const activeRole = canHonorForcedRole ? args.forcedRole! : inferredRole;
|
||||||
const effectiveServiceId = resolveLeaseServiceId(args.lease, activeRole);
|
const effectiveServiceId = resolveLeaseServiceId(args.lease, activeRole);
|
||||||
|
|||||||
Reference in New Issue
Block a user