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:
116
.planning/phases/06-cli-interface/06-05-PLAN.md
Normal file
116
.planning/phases/06-cli-interface/06-05-PLAN.md
Normal 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>
|
||||
Reference in New Issue
Block a user