Files
loki/docs/testing/plans/08-request-context.md
2026-04-15 12:56:00 -06:00

2.6 KiB

Test Plan: RequestContext

Feature description

RequestContext is the per-request mutable state container. It holds the active model, role, session, agent, RAG, tool scope, and agent runtime. It provides methods for scope transitions, state queries, and chat completion lifecycle.

Behaviors to test

State management

  • info() returns formatted system info
  • state() returns correct StateFlags combination
  • current_model() returns active model
  • role_info(), session_info(), rag_info(), agent_info() format correctly
  • sysinfo() returns system details
  • working_mode correctly distinguishes Repl vs Cmd

Scope transitions

  • use_role changes role, rebuilds tool scope
  • use_session creates/loads session, rebuilds tool scope
  • use_agent initializes agent with all subsystems
  • exit_role clears role
  • exit_session saves and clears session
  • exit_agent clears agent, supervisor, rag, session
  • exit_rag clears rag
  • bootstrap_tools rebuilds tool scope with global MCP

Chat completion lifecycle

  • before_chat_completion sets up for API call
  • after_chat_completion saves messages, updates state
  • discontinuous_last_message marks last message as non-continuous

ToolScope management

  • rebuild_tool_scope creates fresh Functions
  • rebuild_tool_scope acquires MCP servers via factory
  • rebuild_tool_scope appends user interaction functions in REPL mode
  • rebuild_tool_scope appends MCP meta functions for started servers
  • Tool tracker preserved across scope rebuilds

AgentRuntime management

  • agent_runtime populated by use_agent
  • agent_runtime cleared by exit_agent
  • Accessor methods (current_depth, supervisor, inbox, etc.) return correct values when agent active
  • Accessor methods return defaults when no agent

Settings update

  • update() handles all .set keys correctly
  • update_app_config() clones and replaces Arc properly
  • delete() handles all delete subcommands

Session helpers

  • list_sessions() returns session names
  • list_autoname_sessions() returns auto-named sessions
  • session_file() returns correct path
  • save_session() persists session
  • empty_session() clears messages

Context switching scenarios

  • No state → use_role → exit_role → no state
  • No state → use_agent → exit_agent → no state
  • Role → use_agent (error: agent requires exiting role first)
  • Agent → exit_agent → use_role (clean transition)

Old code reference

  • src/config/request_context.rs — all methods
  • src/config/mod.rs — original Config methods (for parity)