docs(06): create gap closure plans for CLI interface issues

Phase 06: CLI Interface Gap Closure
- 2 plans addressing 3 UAT-identified issues
- Session persistence: Add missing set_conversation_history method
- Session feedback: Add verbose messaging for session file operations
- Resource display: Fix color coding with force_terminal=True
- Ready for execution to close CLI interface gaps
This commit is contained in:
Mai Development
2026-01-26 22:51:49 -05:00
parent c70ee8816e
commit 54f6b4b40d
3 changed files with 351 additions and 0 deletions

View File

@@ -0,0 +1,116 @@
---
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>
<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>