feat: add session rename and delete functionality with validation
- Introduced `SessionRename` model for renaming sessions with validation on name length and content. - Implemented `rename_session` endpoint in `session_routes.py` to handle session renaming. - Added `delete_session` endpoint to remove sessions, ensuring proper cleanup of associated data. - Enhanced `SessionStore` with `rename` and `delete` methods, including validation and transaction management. - Updated `SessionManager` to manage session renaming and deletion, ensuring live terminal state is preserved. - Added tests for renaming and deleting sessions, ensuring proper functionality and validation. - Introduced a new `tool_catalog.py` for managing guest tool selections and installation recipes.
This commit is contained in:
@@ -823,6 +823,11 @@ passwords in reports.
|
||||
5. Use **Session history** to switch between that VM's sessions. Active sessions
|
||||
reconnect to their existing shell; ended sessions replay saved output.
|
||||
6. Use **End session** when finished, or run `exit` inside the shell.
|
||||
7. Use **Rename** in the history row or terminal toolbar to save a custom label.
|
||||
Names accept 1–80 printable characters, with surrounding whitespace trimmed.
|
||||
8. Use **Delete** to permanently remove a session and its saved output. Confirming
|
||||
deletion closes an active shell before removing its history. **End session**
|
||||
retains history for later viewing.
|
||||
|
||||
Sessions continue while you navigate elsewhere, reload, or sign out of the
|
||||
dashboard. VM shutdown/restart or Nest shutdown ends the shell. Session metadata,
|
||||
@@ -830,6 +835,9 @@ start/end times, exit status, and output survive Nest restarts in
|
||||
`$UVM_BASE/nest/sessions.sqlite3`; files are mode `0600` in a mode-`0700` directory.
|
||||
Only sessions belonging to the selected exact VM ID are shown. Reusing a VM name
|
||||
does not attach another VM's history.
|
||||
Renaming works for active and ended sessions and keeps their IDs and URLs stable.
|
||||
Deleting the open session clears the terminal selection; other sessions continue
|
||||
to appear under their own history entries.
|
||||
|
||||
The retained transcript is capped at its latest 8 MiB, and the terminal viewer
|
||||
has a 10,000-line scrollback. A truncation note appears when older output is
|
||||
@@ -916,6 +924,8 @@ curl --cacert /path/to/ca.pem \
|
||||
| `GET` | `/vms/{vm_id}/sessions` | List saved sessions for an exact VM ID (Nest) |
|
||||
| `POST` | `/vms/{vm_id}/sessions` | Launch a terminal, with `{}` or optional `rows`/`cols` (Nest) |
|
||||
| `GET` | `/vms/{vm_id}/sessions/{session_id}` | Inspect a session (Nest) |
|
||||
| `PATCH` | `/vms/{vm_id}/sessions/{session_id}` | Rename with `{"name":"Deployment"}`; returns updated metadata (Nest) |
|
||||
| `DELETE` | `/vms/{vm_id}/sessions/{session_id}` | End the shell and remove its record/output; HTTP 204 (Nest) |
|
||||
| `POST` | `/vms/{vm_id}/sessions/{session_id}/close` | End a session and retain its output (Nest) |
|
||||
| `WS` | `/vms/{vm_id}/sessions/{session_id}/terminal` | Authenticated live terminal/replay (Nest) |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user