#!/usr/bin/env python3 import json import subprocess import sys import os def run_memory_hook(user_msg, assistant_msg, agent_id="case", session="main"): """Run the auto-memory-hook.py script with command-line arguments.""" cmd = [ "python3", "/home/wdjones/.openclaw/workspace/tools/auto-memory-hook.py", "--user", user_msg, "--assistant", assistant_msg, "--agent-id", agent_id, "--session", session ] try: result = subprocess.run(cmd, capture_output=True, text=True, timeout=30) if result.returncode != 0: print(f"Error running auto-memory-hook: {result.stderr}", file=sys.stderr) return result.returncode == 0 except subprocess.TimeoutExpired: print("auto-memory-hook timed out", file=sys.stderr) return False except Exception as e: print(f"Exception running auto-memory-hook: {e}", file=sys.stderr) return False def main(): # Get conversations from the extraction script extract_script = "/home/wdjones/.openclaw/workspace/extract_assistant_turns.py" try: result = subprocess.run(["python3", extract_script], capture_output=True, text=True) if result.returncode != 0: print(f"Error running extraction script: {result.stderr}", file=sys.stderr) return # Parse each line as JSON lines = result.stdout.strip().split('\n') conversations = [] for line in lines: if line.strip(): try: conv = json.loads(line) conversations.append(conv) except json.JSONDecodeError as e: print(f"Error parsing JSON: {e}", file=sys.stderr) continue print(f"Processing {len(conversations)} conversations...", file=sys.stderr) # Process each conversation success_count = 0 for i, conv in enumerate(conversations): user_msg = conv.get('user', '') assistant_msg = conv.get('assistant', '') agent_id = conv.get('agent_id', 'case') session = conv.get('session', 'main') if user_msg and assistant_msg: if run_memory_hook(user_msg, assistant_msg, agent_id, session): success_count += 1 print(f"Processed conversation {i+1}/{len(conversations)}", file=sys.stderr) else: print(f"Failed to process conversation {i+1}/{len(conversations)}", file=sys.stderr) print(f"Successfully processed {success_count}/{len(conversations)} conversations", file=sys.stderr) except Exception as e: print(f"Error in main: {e}", file=sys.stderr) if __name__ == "__main__": main()