Files
loki/docs/testing/plans/03-sessions.md
2026-04-16 10:17:03 -06:00

2.4 KiB

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.rsuse_session, exit_session, empty_session
  • src/config/session.rsSession struct, new, load, save
  • src/config/request_context.rsuse_session, exit_session