Files
orca/src/shared/codex-native-notice.test.ts
T
Neil 8c394bdbed fix(orchestration): fail a Codex worker's dispatch when its session can't reconnect (#33543)
A Codex terminal worker whose remote app-server reconnect fails no longer hangs its orchestration dispatch forever: Codex's reconnect-failed error cell (column-0 U+25A0 notice, detected on the settled screen via the shared Codex notice tracker, Codex panes only) fails the active dispatch with stage agent_session_lost and escalates to the coordinator; the terminal stays open.

Fixes #24791
2026-10-25 07:03:38 -07:00

52 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, expect, it, vi } from 'vitest'
import { CODEX_CAPACITY_MESSAGE, createCodexCapacityNoticeTracker } from './codex-native-notice'
describe('Codex capacity candidate bounds', () => {
it('reads neither the screen nor its mode during ordinary output', () => {
const tracker = createCodexCapacityNoticeTracker()
const readScreen = vi.fn(() => [])
const readSynchronized = vi.fn(() => false)
tracker.observe('ordinary output'.repeat(1000), readScreen, readSynchronized)
expect(readScreen).not.toHaveBeenCalled()
expect(readSynchronized).not.toHaveBeenCalled()
})
it('does not inspect a partial synchronized frame with combined ANSI modes', () => {
const tracker = createCodexCapacityNoticeTracker()
const readScreen = vi.fn(() => [`■ ${CODEX_CAPACITY_MESSAGE}`, '›'])
expect(tracker.observe(`\x1b[?25;2026h■ ${CODEX_CAPACITY_MESSAGE}`, readScreen)).toBe(false)
expect(readScreen).not.toHaveBeenCalled()
expect(tracker.observe('\x1b[?2026;25l', readScreen)).toBe(true)
expect(readScreen).toHaveBeenCalledTimes(1)
})
it('ignores repeated unrelated markers and still accepts a later native notice', () => {
const tracker = createCodexCapacityNoticeTracker()
const readScreen = vi.fn(() => [`■ ${CODEX_CAPACITY_MESSAGE}`, '›'])
expect(tracker.observe('■'.repeat(100_000), readScreen)).toBe(false)
expect(readScreen).not.toHaveBeenCalled()
expect(tracker.observe(`■ ${CODEX_CAPACITY_MESSAGE}`, readScreen)).toBe(true)
expect(readScreen).toHaveBeenCalledTimes(1)
})
it('finds the notice inside a large text chunk after unrelated warning markers', () => {
const tracker = createCodexCapacityNoticeTracker()
const readScreen = vi.fn(() => [`■ ${CODEX_CAPACITY_MESSAGE}`, '›'])
expect(
tracker.observe(
`⚠ unrelated\n${'x'.repeat(1024 * 1024)}\n■ ${CODEX_CAPACITY_MESSAGE}`,
readScreen
)
).toBe(true)
expect(readScreen).toHaveBeenCalledTimes(1)
})
it('recognizes a split notice immediately after abandoning an unrelated warning', () => {
const tracker = createCodexCapacityNoticeTracker()
const readScreen = vi.fn(() => [`⚠ ${CODEX_CAPACITY_MESSAGE}`, '›'])
expect(tracker.observe('⚠ 1 warning · f2 to view', readScreen)).toBe(false)
expect(readScreen).not.toHaveBeenCalled()
expect(tracker.observe('⚠ Selected model is ', readScreen)).toBe(false)
expect(tracker.observe('at capacity. Please try a different model.', readScreen)).toBe(true)
expect(tracker.observe('ordinary output'.repeat(100_000), readScreen)).toBe(false)
expect(readScreen).toHaveBeenCalledTimes(1)
})
})