43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import {
|
|
isOpenCodePromptDeliveryObserveLaterResponseState,
|
|
isOpenCodePromptDeliveryRetryAttemptDue,
|
|
isOpenCodePromptDeliveryRetryableResponseState,
|
|
} from '@main/services/team/opencode/delivery/OpenCodePromptDeliveryWatchdog';
|
|
|
|
describe('OpenCodePromptDeliveryWatchdog retry policy', () => {
|
|
it('treats stale OpenCode sessions as retryable after observation', () => {
|
|
expect(isOpenCodePromptDeliveryObserveLaterResponseState('session_stale')).toBe(true);
|
|
expect(isOpenCodePromptDeliveryRetryableResponseState('session_stale')).toBe(true);
|
|
});
|
|
|
|
it('does not retry prompt indexing states before OpenCode has had a chance to answer', () => {
|
|
expect(isOpenCodePromptDeliveryObserveLaterResponseState('prompt_not_indexed')).toBe(true);
|
|
expect(isOpenCodePromptDeliveryRetryableResponseState('prompt_not_indexed')).toBe(false);
|
|
});
|
|
|
|
it('lets due accepted stale-session records proceed to a fresh send attempt', () => {
|
|
expect(
|
|
isOpenCodePromptDeliveryRetryAttemptDue({
|
|
attemptDue: true,
|
|
ledgerRecord: {
|
|
status: 'accepted',
|
|
responseState: 'session_stale',
|
|
},
|
|
})
|
|
).toBe(true);
|
|
});
|
|
|
|
it('keeps non-due stale-session records in observation mode', () => {
|
|
expect(
|
|
isOpenCodePromptDeliveryRetryAttemptDue({
|
|
attemptDue: false,
|
|
ledgerRecord: {
|
|
status: 'accepted',
|
|
responseState: 'session_stale',
|
|
},
|
|
})
|
|
).toBe(false);
|
|
});
|
|
});
|