47 lines
1.1 KiB
Markdown
47 lines
1.1 KiB
Markdown
# TerminalView Component
|
||
|
||
> Status: ✅ Operational
|
||
|
||
---
|
||
|
||
## Overview
|
||
|
||
The terminal console is implemented using:
|
||
|
||
- **xterm.js** — frontend terminal renderer
|
||
- **WebSocket transport** — connects portal to agent
|
||
- **PTY session** — managed by the agent via `creack/pty`
|
||
|
||
`TerminalView` owns the WebSocket lifecycle. `ServerConsole` owns policy and session gating.
|
||
|
||
The file panel does not interrupt the console lifecycle.
|
||
|
||
---
|
||
|
||
## Reconnect Behavior
|
||
|
||
The terminal automatically reconnects when the WebSocket closes unexpectedly.
|
||
|
||
Behavior:
|
||
|
||
- Reconnect delay: 1–5 seconds
|
||
- Backoff capped at 5 seconds
|
||
- Console session recreated automatically
|
||
|
||
The user no longer needs to refresh the page to regain console access after navigating away from the console tab or after a transient disconnect.
|
||
|
||
---
|
||
|
||
## Agent Side
|
||
|
||
- One PTY read loop per `{vmid, container_type}`
|
||
- PTY-backed WebSocket served at `/console/ws`
|
||
- Commands sent via `GET /console/command?cmd=<cmd>` to server stdin
|
||
|
||
---
|
||
|
||
## Constraints
|
||
|
||
- Portal never calls the agent directly — all traffic through API
|
||
- Console does not enforce real policy — agent enforces
|