#!/usr/bin/env python3
import json
import re
from datetime import datetime, timedelta, timezone
from pathlib import Path
import requests
import os

WORKSPACE = Path('/Users/ahmad/.openclaw/workspace')
CRED = WORKSPACE / 'fathom_credentials.md'
OUT = WORKSPACE / 'knowledge_base' / 'fathom_meetings_daily.md'


def load_key():
    env_path = WORKSPACE / '.secrets' / 'fathom.env'
    if env_path.exists():
        for ln in env_path.read_text(encoding='utf-8', errors='ignore').splitlines():
            if ln.startswith('FATHOM_API_KEY='):
                return ln.split('=', 1)[1].strip()
    if os.getenv('FATHOM_API_KEY'):
        return os.getenv('FATHOM_API_KEY').strip()
    txt = CRED.read_text(encoding='utf-8') if CRED.exists() else ''
    m = re.search(r'API\s*Key[^A-Za-z0-9._\-]*([A-Za-z0-9._\-]+)', txt, re.IGNORECASE)
    if not m:
        return None
    return m.group(1).strip()


def main():
    OUT.parent.mkdir(parents=True, exist_ok=True)
    key = load_key()

    lines = [
        '# Fathom Meetings Daily Ingest',
        f'- Generated: {datetime.now().isoformat(timespec="seconds")}',
        '',
        '## Summary',
    ]

    if not key:
        lines += [
            '- Missing Fathom API key.',
            '',
            '## Key Findings',
            '- Credentials file not found or key parse failed.',
            '',
            '## Actions',
            '- Add valid key to fathom_credentials.md',
            '',
            '## Risks / Gaps',
            '- No meeting transcript ingestion possible.',
            '',
            '## Next Run Improvements',
            '- Validate endpoint connectivity with sample call.',
        ]
        OUT.write_text('\n'.join(lines), encoding='utf-8')
        print(str(OUT))
        return

    created_after = (datetime.now(timezone.utc) - timedelta(days=7)).strftime('%Y-%m-%dT%H:%M:%SZ')
    created_before = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ')

    meetings = []
    err = None

    # Fathom API pattern from docs
    try:
        r = requests.get(
            'https://api.fathom.ai/external/v1/meetings',
            headers={'X-Api-Key': key},
            params={
                'include_transcript': 'true',
                'created_after': created_after,
                'created_before': created_before,
                'limit': 25,
            },
            timeout=25,
        )
        if r.status_code >= 400:
            err = f'HTTP {r.status_code}: {r.text[:240]}'
        else:
            j = r.json()
            if isinstance(j, dict):
                meetings = j.get('items') or j.get('meetings') or j.get('data') or []
            elif isinstance(j, list):
                meetings = j
    except Exception as e:
        err = str(e)

    lines.append(f'- Meetings fetched (last 7d): {len(meetings)}')
    lines.append('')
    lines.append('## Key Findings')

    if err:
        lines.append(f'- API call issue: {err}')
    elif not meetings:
        lines.append('- No meetings returned in selected date range.')
    else:
        for m in meetings[:10]:
            title = m.get('title') or m.get('name') or '(untitled meeting)'
            when = m.get('created_at') or m.get('start_time') or ''
            summary = m.get('summary') or ''
            lines.append(f'- {title} | {when}')
            if summary:
                lines.append(f'  - Summary: {str(summary)[:220]}')

    lines.append('')
    lines.append('## Actions')
    if meetings:
        lines.append('- Link key meeting action items into ClickUp follow-ups in next revision.')
    else:
        lines.append('- Validate API scope/date filters and rerun.')

    lines.append('')
    lines.append('## Risks / Gaps')
    lines.append('- Endpoint/schema may vary by account tier; parser may need adjustment.')
    lines.append('')
    lines.append('## Next Run Improvements')
    lines.append('- Add transcript-to-action-item extraction and owner/date parsing.')

    OUT.write_text('\n'.join(lines), encoding='utf-8')
    print(str(OUT))


if __name__ == '__main__':
    main()
