67 lines
2.4 KiB
Markdown
67 lines
2.4 KiB
Markdown
# Test Plan: Sessions
|
|
|
|
## Feature description
|
|
|
|
Sessions persist conversation history across multiple turns. They
|
|
store messages, role context, model info, and optional MCP config.
|
|
Sessions can be temporary, named, or auto-named.
|
|
|
|
## Behaviors to test
|
|
|
|
### Session creation
|
|
- [ ] Temp session created with TEMP_SESSION_NAME
|
|
- [ ] Named session created at correct file path
|
|
- [ ] New session captures current role via extract_role
|
|
- [ ] New session captures save_session from AppConfig
|
|
- [ ] Session tracks model_id
|
|
|
|
### Session loading
|
|
- [ ] Named session loads from YAML file
|
|
- [ ] Loaded session resolves model via Model::retrieve_model
|
|
- [ ] Loaded session restores role_prompt if role exists
|
|
- [ ] Auto-named sessions (prefixed `_/`) handled correctly
|
|
|
|
### Session saving
|
|
- [ ] Session saved to correct path
|
|
- [ ] Session file contains messages, model_id, role info
|
|
- [ ] save_session flag controls whether session is persisted
|
|
- [ ] set_save_session_this_time overrides for current turn
|
|
|
|
### Session lifecycle
|
|
- [ ] use_session creates or loads session
|
|
- [ ] Already in session → error
|
|
- [ ] exit_session saves and clears
|
|
- [ ] empty_session clears messages but keeps session active
|
|
|
|
### Session carry-over
|
|
- [ ] New empty session with last_message prompts "incorporate?"
|
|
- [ ] If accepted, last Q&A added to session
|
|
- [ ] If declined, session starts fresh
|
|
- [ ] Only prompts when continuous and output not empty
|
|
|
|
### Session compression
|
|
- [ ] maybe_compress_session returns true when threshold exceeded
|
|
- [ ] compress_session reduces message count
|
|
- [ ] Compression message shown to user
|
|
- [ ] Session usable after compression
|
|
|
|
### Session autoname
|
|
- [ ] maybe_autoname_session returns true for new sessions
|
|
- [ ] Auto-naming sets session name based on content
|
|
- [ ] Autoname only triggers once per session
|
|
|
|
### Session info
|
|
- [ ] session_info returns formatted session details
|
|
- [ ] Shows message count, model, role, tokens
|
|
|
|
## Context switching scenarios
|
|
- [ ] Session → role change: role updated within session
|
|
- [ ] Session → exit session: messages saved, state cleared
|
|
- [ ] Agent session → exit: agent session cleanup
|
|
- [ ] Session with MCP → exit: MCP servers handled
|
|
|
|
## Old code reference
|
|
- `src/config/mod.rs` — `use_session`, `exit_session`, `empty_session`
|
|
- `src/config/session.rs` — `Session` struct, new, load, save
|
|
- `src/config/request_context.rs` — `use_session`, `exit_session`
|