refactor(team): move opencode retry policy helper

This commit is contained in:
777genius 2026-04-27 13:47:04 +03:00
parent 9fe9f81046
commit afe50439b1
3 changed files with 20 additions and 15 deletions

View file

@ -133,6 +133,7 @@ import {
} from './opencode/delivery/OpenCodePromptDeliveryLedger';
import {
isOpenCodePromptDeliveryObserveLaterResponseState,
isOpenCodePromptDeliveryRetryAttemptDue,
isOpenCodePromptDeliveryRetryableResponseState,
isOpenCodeVisibleReplySemanticallySufficient,
isOpenCodeVisibleReplyReadCommitAllowed,
@ -1504,20 +1505,6 @@ function nowIso(): string {
return new Date().toISOString();
}
export function isOpenCodePromptDeliveryRetryAttemptDue(input: {
attemptDue: boolean;
ledgerRecord: Pick<OpenCodePromptDeliveryLedgerRecord, 'status' | 'responseState'>;
}): boolean {
if (!input.attemptDue) {
return false;
}
return (
input.ledgerRecord.status === 'retry_scheduled' ||
input.ledgerRecord.status === 'failed_retryable' ||
isOpenCodePromptDeliveryRetryableResponseState(input.ledgerRecord.responseState)
);
}
function createInitialMemberSpawnStatusEntry(): MemberSpawnStatusEntry {
const updatedAt = nowIso();
return {

View file

@ -1,5 +1,6 @@
import type { AgentActionMode, InboxMessage, TaskRef } from '@shared/types/team';
import type { OpenCodeDeliveryResponseState } from '../bridge/OpenCodeBridgeCommandContract';
import type { OpenCodePromptDeliveryStatus } from './OpenCodePromptDeliveryLedger';
export const OPENCODE_PROMPT_DELIVERY_OBSERVE_DELAY_MS = 3_000;
export const OPENCODE_PROMPT_DELIVERY_RETRY_DELAY_MS = 15_000;
@ -96,6 +97,23 @@ export function isOpenCodePromptDeliveryRetryableResponseState(
);
}
export function isOpenCodePromptDeliveryRetryAttemptDue(input: {
attemptDue: boolean;
ledgerRecord: {
status: OpenCodePromptDeliveryStatus;
responseState: OpenCodeDeliveryResponseState;
};
}): boolean {
if (!input.attemptDue) {
return false;
}
return (
input.ledgerRecord.status === 'retry_scheduled' ||
input.ledgerRecord.status === 'failed_retryable' ||
isOpenCodePromptDeliveryRetryableResponseState(input.ledgerRecord.responseState)
);
}
export function isOpenCodePromptDeliveryObserveLaterResponseState(
state: OpenCodeDeliveryResponseState | undefined
): boolean {

View file

@ -2,9 +2,9 @@ import { describe, expect, it } from 'vitest';
import {
isOpenCodePromptDeliveryObserveLaterResponseState,
isOpenCodePromptDeliveryRetryAttemptDue,
isOpenCodePromptDeliveryRetryableResponseState,
} from '@main/services/team/opencode/delivery/OpenCodePromptDeliveryWatchdog';
import { isOpenCodePromptDeliveryRetryAttemptDue } from '@main/services/team/TeamProvisioningService';
describe('OpenCodePromptDeliveryWatchdog retry policy', () => {
it('treats stale OpenCode sessions as retryable after observation', () => {