Files
daily-journal-prompt/AGENTS.md

164 lines
7.1 KiB
Markdown
Raw Normal View History

2026-01-03 00:20:26 -07:00
# Task: Combine pool and history stats into a single function and single menu item
## Changes Made
### 1. Created New Combined Stats Function
- Added `show_combined_stats()` method to `JournalPromptGenerator` class
- Combines both pool statistics and history statistics into a single function
- Displays two tables: "Prompt Pool Statistics" and "Prompt History Statistics"
### 2. Updated Interactive Menu
- Changed menu from 5 options to 4 options:
- 1. Draw prompts from pool (no API call)
- 2. Fill prompt pool using API
- 3. View combined statistics (replaces separate pool and history stats)
- 4. Exit
- Updated menu handling logic to use the new combined stats function
### 3. Updated Command-Line Arguments
- Removed `--pool-stats` argument
- Updated `--stats` argument description to "Show combined statistics (pool and history)"
- Updated main function logic to use `show_combined_stats()` instead of separate functions
### 4. Removed Old Stats Functions
- Removed `show_pool_stats()` method
- Removed `show_history_stats()` method
- All functionality consolidated into `show_combined_stats()`
### 5. Code Cleanup
- Removed unused imports and references to old stats functions
- Ensured all menu options work correctly with the new combined stats
## Testing
- Verified `--stats` command-line argument works correctly
- Tested interactive mode shows updated menu
- Confirmed combined stats display both pool and history information
- Tested default mode (draw from pool) still works
- Verified fill-pool option starts correctly
## Result
Successfully combined pool and history statistics into a single function and single menu item, simplifying the user interface while maintaining all functionality.
2026-01-02 23:35:34 -07:00
---
# Task: Implement theme feedback words functionality with new menu item
## Changes Made
### 1. Added New Theme Feedback Words API Call
- Created `generate_theme_feedback_words()` method that:
- Loads `ds_feedback.txt` prompt template
- Sends historic prompts to AI API for analysis
- **INCLUDES current feedback words from `feedback_words.json` in the API payload**
- Receives 6 theme words as JSON response
- Parses and validates the response
### 2. Added User Rating System
- Created `collect_feedback_ratings()` method that:
- Presents each of the 6 theme words to the user
- Collects ratings from 0-6 for each word
- Creates structured feedback items with keys (feedback00-feedback05)
- Includes weight values based on user ratings
### 3. Added Feedback Words Update System
- Created `update_feedback_words()` method that:
- Replaces existing feedback words with new ratings
- Saves updated feedback words to `feedback_words.json`
- Maintains the required JSON structure
### 4. Updated Interactive Menu
- Expanded menu from 4 options to 5 options:
- 1. Draw prompts from pool (no API call)
- 2. Fill prompt pool using API
- 3. View combined statistics
- 4. Generate and rate theme feedback words (NEW)
- 5. Exit
- Added complete implementation for option 4
### 5. Enhanced Data Handling
- Added `_save_feedback_words()` method for saving feedback data
- Updated `_load_feedback_words()` to handle JSON structure properly
- Ensured feedback words are included in AI prompts when generating new prompts
## Testing
- Verified all new methods exist and have correct signatures
- Confirmed `ds_feedback.txt` file exists and is readable
- Tested feedback words JSON structure validation
- Verified interactive menu displays new option correctly
- Confirmed existing functionality remains intact
## Result
Successfully implemented a new menu item and functionality for generating theme feedback words. The system now:
1. Makes an API call with historic prompts and `ds_feedback.txt` template
2. Receives 6 theme words from the AI
3. Collects user ratings (0-6) for each word
4. Updates `feedback_words.json` with the new ratings
5. Integrates the feedback into future prompt generation
The implementation maintains backward compatibility while adding valuable feedback functionality to improve prompt generation quality over time.
2026-01-03 01:54:56 -07:00
Too many tests, so I moved all of them into the tests directory.
---
# Task: Implement feedback_historic.json cyclic buffer system (30 items)
## Changes Made
### 1. Added Feedback Historic System
- Created `feedback_historic.json` file to store previous feedback words (without weights)
- Implemented a cyclic buffer system with 30-item capacity (feedback00-feedback29)
- When new feedback is generated (6 words), they become feedback00-feedback05
- All existing items shift down by 6 positions
- Items beyond feedback29 are discarded
### 2. Updated Class Initialization
- Added `feedback_historic` attribute to `JournalPromptGenerator` class
- Updated `__init__` method to load `feedback_historic.json`
- Added `_load_feedback_historic()` method to load historic feedback words
- Added `_save_feedback_historic()` method to save historic feedback words (keeping only first 30)
### 3. Enhanced Feedback Words Management
- Updated `add_feedback_words_to_history()` method to:
- Extract just the words from current feedback words (no weights)
- Add 6 new words to the historic buffer
- Shift all existing words down by 6 positions
- Maintain 30-item limit by discarding oldest items
- Updated `update_feedback_words()` to automatically call `add_feedback_words_to_history()`
### 4. Improved AI Prompt Generation
- Updated `generate_theme_feedback_words()` method to include historic feedback words in API call
- The prompt now includes three sections:
1. Previous prompts (historic prompts)
2. Current feedback themes (with weights)
3. Historic feedback themes (just words, no weights)
- This helps the AI avoid repeating previously used theme words
### 5. Data Structure Design
- Historic feedback words are stored as a list of dictionaries with keys (feedback00, feedback01, etc.)
- Each dictionary contains only the word (no weight field)
- Structure mirrors `prompts_historic.json` but for feedback words
- 30-item limit provides sufficient history while preventing excessive repetition
## Testing
- Created comprehensive test to verify cyclic buffer functionality
- Tested that new items are added at the beginning (feedback00-feedback05)
- Verified that existing items shift down correctly
- Confirmed 30-item limit is enforced (oldest items are dropped)
- Tested that historic feedback words are included in AI prompts
- Verified that weights are not stored in historic buffer (only words)
## Result
Successfully implemented a feedback historic cyclic buffer system that:
1. Stores previous feedback words in `feedback_historic.json` (30-item limit)
2. Automatically adds new feedback words to history when they are updated
3. Includes historic feedback words in AI prompts to avoid repetition
4. Maintains consistent data structure with the rest of the system
5. Provides a memory of previous theme words to improve AI suggestions over time
The system now has a complete feedback loop where:
- Historic prompts and feedback words inform new theme word generation
- New theme words are rated by users and become current feedback words
- Current feedback words are added to the historic buffer
- Historic feedback words help avoid repetition in future theme word generation