Files
Mai/.planning/phases/06-cli-interface/06-05-PLAN.md
Mai Development b1d71bc22b fix(06): revise plans based on checker feedback
- Added missing <verify> element to Plan 06-05
- Created Plan 06-07 for help system gap
- Created Plan 06-08 for exit command gap
- Now addresses all 4 gaps identified by checker
2026-01-26 23:00:15 -05:00

134 lines
4.5 KiB
Markdown

---
phase: 06-cli-interface
plan: 05
type: execute
wave: 1
depends_on: [06-02]
files_modified: [src/mai/conversation/state.py]
autonomous: true
gap_closure: true
must_haves:
truths:
- "Start a conversation, exit CLI, and restart. Session continues with contextual message about time elapsed"
artifacts:
- path: "src/mai/conversation/state.py"
provides: "ConversationState class with session history management"
contains: "set_conversation_history method"
key_links:
- from: "src/mai/conversation/state.py"
to: "session restoration"
via: "set_conversation_history method converts Ollama messages to ConversationTurn objects"
pattern: "def set_conversation_history"
---
<objective>
Fix session persistence by adding missing set_conversation_history method to ConversationState class
Purpose: Resolve the "ConversationState object has no attribute 'set_conversation_history'" error that prevents session restoration from working properly
Output: Working session persistence with contextual recovery messages
</objective>
<execution_context>
@~/.opencode/get-shit-done/workflows/execute-plan.md
@~/.opencode/get-shit-done/templates/summary.md
</execution_context>
<context>
@.planning/PROJECT.md
@.planning/ROADMAP.md
@.planning/STATE.md
# Gap closure context from UAT
@.planning/phases/06-cli-interface/06-UAT.md
# Previous session persistence implementation
@.planning/phases/06-cli-interface/06-02-SUMMARY.md
</context>
<tasks>
<task type="auto">
<name>Fix ConversationState missing set_conversation_history method</name>
<files>src/mai/conversation/state.py</files>
<action>
Add the missing set_conversation_history method to the ConversationState class:
1. Examine the existing ConversationState class structure in src/mai/conversation/state.py
2. Add set_conversation_history method that:
- Accepts a list of Ollama message dictionaries as input
- Converts each message back to ConversationTurn objects using the existing conversion logic
- Preserves the message order (user then assistant pairs)
- Updates the conversation history and current state appropriately
3. Ensure the method handles edge cases like empty lists, malformed messages, and None values
4. Add proper type hints for the method signature
Reference the existing message conversion logic used when saving sessions to ensure consistent transformation.
Gap reason: "Missing set_conversation_history method in ConversationState class"
Root cause: Session restoration tries to call this method but it doesn't exist
</action>
<verify>
# Test the method exists and works
python -c "
from src.mai.conversation.state import ConversationState
import inspect
# Check method exists
if hasattr(ConversationState, 'set_conversation_history'):
print('✓ set_conversation_history method exists')
# Check method signature
sig = inspect.signature(ConversationState.set_conversation_history)
print(f'✓ Method signature: {sig}')
else:
print('✗ set_conversation_history method missing')
exit(1)
"
</verify>
<verify>
# Test the method exists and works
python -c "
from src.mai.conversation.state import ConversationState
import inspect
# Check method exists
if hasattr(ConversationState, 'set_conversation_history'):
print('✓ set_conversation_history method exists')
# Check method signature
sig = inspect.signature(ConversationState.set_conversation_history)
print(f'✓ Method signature: {sig}')
else:
print('✗ set_conversation_history method missing')
exit(1)
"
</verify>
<done>
ConversationState class has set_conversation_history method that can convert Ollama messages back to ConversationTurn objects for session restoration
</done>
</task>
</tasks>
<verification>
Test session persistence by:
1. Starting a conversation with a few messages
2. Exiting the CLI
3. Restarting the CLI
4. Verifying the welcome message shows time elapsed and conversation history is restored
Expected: No "ConversationState object has no attribute 'set_conversation_history'" error
</verification>
<success_criteria>
- set_conversation_history method exists in ConversationState class
- Method accepts list of Ollama message dictionaries
- Method properly converts messages to ConversationTurn objects
- Session restoration works without AttributeError
- Welcome back message shows correct time elapsed
</success_criteria>
<output>
After completion, create `.planning/phases/06-cli-interface/06-05-SUMMARY.md`
</output>