test: request_context tests

This commit is contained in:
2026-05-01 11:12:30 -06:00
parent ddb73a9a33
commit 5168eb6781
3 changed files with 320 additions and 38 deletions
+56 -38
View File
@@ -10,59 +10,77 @@ 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
- [ ] info() returns formatted system info (requires model provider config)
- [x] state() returns correct StateFlags combination
- [ ] current_model() returns active model (tested implicitly via extract_role)
- [x] role_info() errors when no role, succeeds with role
- [ ] session_info() format (requires filesystem for sessions)
- [x] rag_info() errors when no rag
- [x] agent_info() errors when no agent
- [ ] sysinfo() returns system details (requires model provider config)
- [x] 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
- [x] use_role changes role (via use_role_obj)
- [ ] use_session creates/loads session, rebuilds tool scope (async + filesystem)
- [x] use_agent initializes agent with all subsystems (via exit_agent test)
- [x] exit_role clears role
- [x] exit_session saves and clears session
- [x] exit_agent clears agent, supervisor, rag, session
- [x] exit_rag clears rag
- [ ] bootstrap_tools rebuilds tool scope with global MCP (async + MCP servers)
### 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
- [x] before_chat_completion sets up for API call
- [ ] after_chat_completion saves messages, updates state (async + client)
- [x] 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
- [x] rebuild_tool_scope creates fresh Functions
- [ ] rebuild_tool_scope acquires MCP servers via factory (requires live MCP)
- [x] rebuild_tool_scope appends user interaction functions in REPL mode
- [ ] rebuild_tool_scope appends MCP meta functions for started servers (requires live MCP)
- [x] 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
- [x] agent_runtime populated by use_agent (via exit_agent test)
- [x] agent_runtime cleared by exit_agent
- [x] Accessor methods (current_depth, supervisor, inbox, etc.) return
correct values when agent active
- [ ] Accessor methods return defaults when no agent
- [x] 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
- [ ] update() handles all .set keys correctly (requires REPL command infra)
- [x] update_app_config() clones and replaces Arc properly
- [ ] delete() handles all delete subcommands (requires REPL command infra)
### 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
- [ ] list_sessions() returns session names (requires filesystem)
- [ ] list_autoname_sessions() returns auto-named sessions (requires filesystem)
- [x] session_file() returns correct path
- [ ] save_session() persists session (requires filesystem)
- [x] 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)
- [x] No state → use_role → exit_role → no state
- [x] No state → use_agent → exit_agent → no state
- [x] Agent active → use_role_obj errors
- [ ] Agent → exit_agent → use_role (clean transition) (async)
## Additional behaviors tested (not in original plan)
- [x] state() empty context returns empty flags
- [x] state() role only → ROLE flag
- [x] state() empty session → SESSION_EMPTY flag
- [x] state() role + session flags combine
- [x] discontinuous_last_message noop when no last_message
- [x] before_chat_completion creates LastMessage with empty output and continuous=true
- [x] role_like_mut returns None when no active scope
- [x] role_like_mut returns role when only role active
- [x] role_like_mut prefers session over role
- [x] session_file handles subdir/name format
- [x] is_compressing_session false with no session
- [x] is_compressing_session false with default session
## Old code reference
- `src/config/request_context.rs` — all methods