mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 16:02:32 +00:00
Fix CLI-launched agent terminal viewport (#2561)
Co-authored-by: Orca <help@stably.ai>
This commit is contained in:
@@ -1,39 +1,69 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
|
||||
import { shouldForceVisibleCodexTerminal } from './codex-command-classification'
|
||||
import {
|
||||
shouldUseRendererBackedCodexTerminal,
|
||||
shouldUseRendererBackedInteractiveTerminal
|
||||
} from './codex-command-classification'
|
||||
|
||||
describe('shouldForceVisibleCodexTerminal', () => {
|
||||
it('forces visible terminal creation for interactive Codex sessions', () => {
|
||||
expect(shouldForceVisibleCodexTerminal('codex')).toBe(true)
|
||||
expect(shouldForceVisibleCodexTerminal('codex -m gpt-5 "fix the flaky test"')).toBe(true)
|
||||
expect(shouldForceVisibleCodexTerminal('codex resume --last')).toBe(true)
|
||||
expect(shouldForceVisibleCodexTerminal('codex fork')).toBe(true)
|
||||
expect(shouldForceVisibleCodexTerminal('codex login')).toBe(true)
|
||||
expect(shouldForceVisibleCodexTerminal('codex cloud')).toBe(true)
|
||||
expect(shouldForceVisibleCodexTerminal('codex -c active=cloud cloud')).toBe(true)
|
||||
expect(shouldForceVisibleCodexTerminal('codex.cmd resume --last')).toBe(true)
|
||||
expect(shouldForceVisibleCodexTerminal('env OPENAI_API_KEY=stub codex')).toBe(true)
|
||||
describe('shouldUseRendererBackedCodexTerminal', () => {
|
||||
it('uses renderer-backed terminal creation for interactive Codex sessions', () => {
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex')).toBe(true)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex -m gpt-5 "fix the flaky test"')).toBe(true)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex resume --last')).toBe(true)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex fork')).toBe(true)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex login')).toBe(true)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex cloud')).toBe(true)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex -c active=cloud cloud')).toBe(true)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex.cmd resume --last')).toBe(true)
|
||||
expect(shouldUseRendererBackedCodexTerminal('env OPENAI_API_KEY=stub codex')).toBe(true)
|
||||
})
|
||||
|
||||
it('keeps one-shot Codex commands on the background path', () => {
|
||||
expect(shouldForceVisibleCodexTerminal('codex exec summarize')).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('codex -m gpt-5 review')).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('codex login status')).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('codex login --with-api-key')).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('codex cloud list --json')).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('codex -c active=cloud cloud list --json')).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('codex cloud --enable foo list --json')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex exec summarize')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex -m gpt-5 review')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex login status')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex login --with-api-key')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex cloud list --json')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex -c active=cloud cloud list --json')).toBe(
|
||||
false
|
||||
)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex cloud --enable foo list --json')).toBe(false)
|
||||
expect(
|
||||
shouldForceVisibleCodexTerminal('env -u DEBUG CODEX_HOME=/tmp/codex codex exec summarize')
|
||||
shouldUseRendererBackedCodexTerminal(
|
||||
'env -u DEBUG CODEX_HOME=/tmp/codex codex exec summarize'
|
||||
)
|
||||
).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('codex cloud exec "fix it"')).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('codex cloud --version')).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('codex --help')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex cloud exec "fix it"')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex cloud --version')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('codex --help')).toBe(false)
|
||||
})
|
||||
|
||||
it('ignores non-Codex commands', () => {
|
||||
expect(shouldForceVisibleCodexTerminal(undefined)).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('claude')).toBe(false)
|
||||
expect(shouldForceVisibleCodexTerminal('npm exec codex')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal(undefined)).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('claude')).toBe(false)
|
||||
expect(shouldUseRendererBackedCodexTerminal('npm exec codex')).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
describe('shouldUseRendererBackedInteractiveTerminal', () => {
|
||||
it('uses renderer-backed terminal creation for interactive Claude sessions', () => {
|
||||
expect(shouldUseRendererBackedInteractiveTerminal('claude')).toBe(true)
|
||||
expect(shouldUseRendererBackedInteractiveTerminal('claude --prefill "review this"')).toBe(true)
|
||||
expect(shouldUseRendererBackedInteractiveTerminal('/opt/anthropic/bin/claude')).toBe(true)
|
||||
expect(shouldUseRendererBackedInteractiveTerminal('env ANTHROPIC_BASE_URL=test claude')).toBe(
|
||||
true
|
||||
)
|
||||
})
|
||||
|
||||
it('keeps one-shot Claude commands on the background path', () => {
|
||||
expect(shouldUseRendererBackedInteractiveTerminal('claude -p "summarize"')).toBe(false)
|
||||
expect(shouldUseRendererBackedInteractiveTerminal('claude --print "summarize"')).toBe(false)
|
||||
expect(shouldUseRendererBackedInteractiveTerminal('claude --help')).toBe(false)
|
||||
expect(shouldUseRendererBackedInteractiveTerminal('claude --version')).toBe(false)
|
||||
})
|
||||
|
||||
it('preserves Codex command classification', () => {
|
||||
expect(shouldUseRendererBackedInteractiveTerminal('codex')).toBe(true)
|
||||
expect(shouldUseRendererBackedInteractiveTerminal('codex exec summarize')).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user