Merge pull request #17701 from NousResearch/bb/mouse-mode-self-heal

fix(cli): recover leaked mouse tracking terminal state
This commit is contained in:
brooklyn! 2026-04-30 10:09:39 -07:00 committed by GitHub
commit 285e9efb3f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 210 additions and 10 deletions

View file

@ -0,0 +1,31 @@
import { describe, expect, it, vi } from 'vitest'
import { resetTerminalModes, TERMINAL_MODE_RESET } from '../lib/terminalModes.js'
describe('terminal mode reset', () => {
it('includes the sticky input modes Hermes enables', () => {
expect(TERMINAL_MODE_RESET).toContain('\x1b[?1006l')
expect(TERMINAL_MODE_RESET).toContain('\x1b[?1003l')
expect(TERMINAL_MODE_RESET).toContain('\x1b[?1002l')
expect(TERMINAL_MODE_RESET).toContain('\x1b[?1000l')
expect(TERMINAL_MODE_RESET).toContain('\x1b[?1004l')
expect(TERMINAL_MODE_RESET).toContain('\x1b[?2004l')
expect(TERMINAL_MODE_RESET).toContain('\x1b[?1049l')
expect(TERMINAL_MODE_RESET).toContain('\x1b[<u')
expect(TERMINAL_MODE_RESET).toContain('\x1b[>4m')
})
it('writes reset sequence to TTY streams without fds', () => {
const write = vi.fn()
expect(resetTerminalModes({ isTTY: true, write } as unknown as NodeJS.WriteStream)).toBe(true)
expect(write).toHaveBeenCalledWith(TERMINAL_MODE_RESET)
})
it('skips non-TTY streams', () => {
const write = vi.fn()
expect(resetTerminalModes({ isTTY: false, write } as unknown as NodeJS.WriteStream)).toBe(false)
expect(write).not.toHaveBeenCalled()
})
})