Files
daily-journal-prompt/AGENTS.md

7.1 KiB

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)
      1. Fill prompt pool using API
      1. View combined statistics (replaces separate pool and history stats)
      1. 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.


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)
      1. Fill prompt pool using API
      1. View combined statistics
      1. Generate and rate theme feedback words (NEW)
      1. 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.

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