mirror of
https://github.com/stablyai/orca.git
synced 2026-10-20 16:03:20 +00:00
fix(terminal): skip output for certified-dead renderers
This commit is contained in:
@@ -1534,6 +1534,9 @@ describe('pane terminal output scheduler', () => {
|
||||
expect(hasTerminalParseProgressSince(terminal, generation)).toBe(false)
|
||||
expect(recoveryReasons).toEqual(['write-stalled'])
|
||||
expect(isTerminalWritePipelineCertifiedDead(terminal)).toBe(true)
|
||||
// Only the first rejection touches xterm; later PTY deliveries credit
|
||||
// directly while recovery owns the certified-dead instance.
|
||||
expect(terminal.write).toHaveBeenCalledTimes(1)
|
||||
expect(onParsed).not.toHaveBeenCalled()
|
||||
for (const ackCredit of ackCredits) {
|
||||
expect(ackCredit).toHaveBeenCalledTimes(1)
|
||||
|
||||
@@ -21,6 +21,7 @@ import {
|
||||
armTerminalWriteStallWatch,
|
||||
cancelTerminalWriteStallWatch,
|
||||
failTerminalWriteStallWatch,
|
||||
isTerminalWritePipelineCertifiedDead,
|
||||
settleTerminalWriteStallWatch
|
||||
} from './terminal-write-pipeline-health'
|
||||
import {
|
||||
@@ -1123,6 +1124,12 @@ export function writeTerminalOutput(
|
||||
options: WriteTerminalOutputOptions
|
||||
): void {
|
||||
exposeDebugApi()
|
||||
// Why: recovery may be budget-delayed while PTY output keeps flowing. Main
|
||||
// owns the authoritative buffer; credit delivery without waking dead xterm.
|
||||
if (isTerminalWritePipelineCertifiedDead(terminal)) {
|
||||
options.ackCredit?.()
|
||||
return
|
||||
}
|
||||
if (!data) {
|
||||
// Why: an empty write still consumed its delivery — credit or main's
|
||||
// in-flight window leaks.
|
||||
|
||||
Reference in New Issue
Block a user