2.6 KiB
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 methodssrc/config/mod.rs— original Config methods (for parity)