Fix terminal review issues: security, lifecycle, reactivity
- TerminalManager.open now accepts exec_tokens to use create_subprocess_exec
  for restricted commands instead of always using shell
- Fix kill/terminate order: SIGTERM first, SIGKILL fallback
- Pop closed sessions from _sessions dict to prevent memory leak
- Add terminal_manager.shutdown() to AppContainer.shutdown()
- Wait for reader tasks in foreground open before returning output
- Add _MAX_TERMINALS_PER_SESSION limit (10)
- Wrap cleanup_idle tasks in _close_one_safe with error logging
- send_input catches BrokenPipeError/ConnectionResetError specifically
- Foreground terminals auto-close after gathering output
- Vue reactivity: replace terminals object immutably instead of mutating
- onTerminalClosed marks matching tool card as no longer pending
- Update tests for new behavior (foreground auto-close, max limit)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 788da27 commit dc7b6ca4b35c84aa2342fa8bd20c40afee5267dc
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored on 26 May
Showing 8 changed files
View
navi/core/container.py
View
navi/tools/terminal.py
View
navi/tools/terminal_manager.py
View
tests/unit/tools/test_terminal.py
View
webclient/dist/assets/index-B50AY83P.js 0 → 100644
Not supported
View
webclient/dist/assets/index-Bi8yRzwg.js 100644 → 0
Not supported
View
webclient/dist/index.html
View
webclient/src/stores/chat.js