- 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
134 lines
4.5 KiB
Markdown
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> |