CoolFace
Modelpublic

ScottzillaSystems/conversation-memory

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes
memory_cli.py76 linesDownload Raw Back to root
1#!/usr/bin/env python32"""Memory CLI - Search and retrieve saved conversations."""3 4import argparse5import json6import os7from memory_system import ConversationMemory8 9 10def main():11    parser = argparse.ArgumentParser(description="Conversation Memory CLI")12    subparsers = parser.add_subparsers(dest="command")13 14    search_parser = subparsers.add_parser("search", help="Search memories by text")15    search_parser.add_argument("query", help="Search query")16    search_parser.add_argument("--thread", help="Limit to specific thread")17 18    subparsers.add_parser("threads", help="List all conversation threads")19 20    show_parser = subparsers.add_parser("show", help="Show a specific thread")21    show_parser.add_argument("thread_id", help="Thread ID to display")22 23    export_parser = subparsers.add_parser("export", help="Export memories")24    export_parser.add_argument("--thread", help="Export specific thread")25    export_parser.add_argument("--all", action="store_true", help="Export all threads")26    export_parser.add_argument("--format", choices=["json", "md"], default="json")27 28    args = parser.parse_args()29    memory = ConversationMemory(user_id="scottzilla")30 31    if args.command == "search":32        results = memory.search(args.query, thread_id=args.thread)33        print(f"\n๐Ÿ” Found {len(results)} results for '{args.query}':\n")34        for r in results:35            thread = r.get("thread_id", "unknown")36            print(f"  [{r['role'].upper()}] {r['content'][:120]}...")37            print(f"           Thread: {thread} | {r['timestamp']}\n")38 39    elif args.command == "threads":40        threads = memory.get_all_threads()41        print(f"\n๐Ÿ“š {len(threads)} conversation threads:\n")42        for t in threads:43            print(f"  ๐Ÿ“ {t['thread_id']}")44            print(f"     Messages: {t['message_count']} | Started: {t['started']} | Last: {t['last_message']}")45 46    elif args.command == "show":47        messages = memory.get_thread(args.thread_id)48        print(f"\n๐Ÿ“„ Thread: {args.thread_id} ({len(messages)} messages)\n")49        for m in messages:50            emoji = "๐Ÿ‘ค" if m['role'] == 'user' else "๐Ÿค–"51            print(f"{emoji} {m['role'].title()} ({m['timestamp']}):")52            print(f"   {m['content']}\n")53 54    elif args.command == "export":55        os.makedirs("./memory_exports", exist_ok=True)56        if args.all:57            memory.export_to_json("./memory_exports/all_memories.json")58            print("โœ… Exported all memories")59        elif args.thread:60            ext = "md" if args.format == "md" else "json"61            filepath = f"./memory_exports/{args.thread}.{ext}"62            if args.format == "md":63                memory.export_to_markdown(filepath, args.thread)64            else:65                memory.export_to_json(filepath, args.thread)66        else:67            print("โŒ Use --thread <id> or --all")68    else:69        parser.print_help()70 71    memory.close()72 73 74if __name__ == "__main__":75    main()76