#!/usr/bin/env python3
"""
Simple converter for OpenCode.ai chat JSON to Markdown.
"""

import json
import sys
from datetime import datetime
from pathlib import Path

def convert_opencode_to_md(input_file, output_file=None):
    # Read JSON
    with open(input_file, 'r', encoding='utf-8') as f:
        data = json.load(f)
    
    messages = data.get('messages', [])
    
    # Prepare markdown
    md_lines = [
        "# OpenCode.ai Chat Export",
        "",
        f"*Exported on: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}*",
        "",
        "## Conversation",
        ""
    ]
    
    for i, msg in enumerate(messages, 1):
        # Extract role
        role = 'unknown'
        if 'info' in msg and 'role' in msg['info']:
            role = msg['info']['role']
        
        # Extract content
        content = ""
        if 'parts' in msg and isinstance(msg['parts'], list):
            parts_text = []
            for part in msg['parts']:
                if isinstance(part, dict):
                    if 'content' in part:
                        parts_text.append(part['content'])
                    elif 'text' in part:
                        parts_text.append(part['text'])
                    elif 'value' in part:
                        parts_text.append(part['value'])
                elif isinstance(part, str):
                    parts_text.append(part)
            content = '\n\n'.join(parts_text)
        
        # Format role
        role_display = 'User' if role == 'user' else 'Assistant' if role == 'assistant' else role.title()
        
        # Add to markdown
        md_lines.append(f"### {role_display}")
        md_lines.append("")
        if content:
            md_lines.append(content)
        else:
            md_lines.append("*(No content)*")
        md_lines.append("")
        md_lines.append("---")
        md_lines.append("")
    
    # Write file
    if output_file is None:
        output_file = Path(input_file).with_suffix('.md')
    
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write('\n'.join(md_lines))
    
    print(f"✅ Converted to: {output_file}")
    print(f"   Messages: {len(messages)}")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python opencode_to_md.py <input.json> [output.md]")
        sys.exit(1)
    
    input_file = sys.argv[1]
    output_file = sys.argv[2] if len(sys.argv) > 2 else None
    convert_opencode_to_md(input_file, output_file)