76 lines
2.8 KiB
Python
76 lines
2.8 KiB
Python
#!/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() |