#!/usr/bin/env python3 """View stored messages from the database. This script displays stored LLM messages with filtering options. Usage: python scripts/view_messages.py [--company COMPANY] [--type TYPE] [--limit LIMIT] """ import sys import os import argparse from datetime import datetime # Add parent directory to path sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from SPARC import config from SPARC.database import DatabaseClient def main(): """Display messages from the database.""" parser = argparse.ArgumentParser(description="View stored SPARC messages") parser.add_argument( "--company", type=str, help="Filter by company name" ) parser.add_argument( "--type", type=str, choices=["single_patent", "portfolio"], help="Filter by analysis type" ) parser.add_argument( "--limit", type=int, default=10, help="Maximum number of messages to display (default: 10)" ) args = parser.parse_args() print("SPARC Stored Messages") print("=" * 70) try: db_client = DatabaseClient(config.database_url) messages = db_client.get_messages( company_name=args.company, analysis_type=args.type, limit=args.limit ) if not messages: print("\nNo messages found.") return print(f"\nShowing {len(messages)} message(s):\n") for i, msg in enumerate(messages, 1): print(f"Message #{msg['id']} - {msg['timestamp']}") print(f"Company: {msg['company_name'] or '(unknown)'}") print(f"Type: {msg['analysis_type'] or '(unknown)'}") print(f"Model: {msg['model'] or '(unknown)'}") print(f"\nPrompt (first 200 chars):") print(f" {msg['prompt'][:200]}...") print(f"\nResponse (first 200 chars):") print(f" {msg['response'][:200] if msg['response'] else '(no response)'}...") print("\n" + "-" * 70 + "\n") except Exception as e: print(f"Error retrieving messages: {e}") sys.exit(1) if __name__ == "__main__": main()