"""Read only synthetic effort evidence; omit models, paths and native identifiers."""
import json
import pathlib
import sqlite3
import sys

side, database, parent_id, transcript_root, child_agent_id = sys.argv[1:]
con = sqlite3.connect(pathlib.Path(database).resolve().as_uri() + '?mode=ro', uri=True)
rows = [json.loads(r[0]) for r in con.execute('select payload_json from orchestration_v2_projection_threads')]
parent = next(r for r in rows if r['id'] == parent_id)
child = next(r for r in rows if r.get('lineage', {}).get('parentThreadId') == parent_id)
root = pathlib.Path(transcript_root)
child_file = next(root.glob('*/subagents/agent-' + child_agent_id + '.jsonl'))
parent_file = child_file.parent.parent.with_suffix('.jsonl')
calls = []
for line in parent_file.read_text().splitlines():
    obj = json.loads(line)
    content = obj.get('message', {}).get('content', [])
    if not isinstance(content, list):
        continue
    for item in content:
        if item.get('type') == 'tool_use' and item.get('name') == 'Agent':
            calls.append({'tool': 'Agent', 'input': item['input']})
efforts = []
for line in child_file.read_text().splitlines():
    obj = json.loads(line)
    if obj.get('type') == 'api-request':
        efforts.append(obj.get('params', {}).get('output_config', {}).get('effort'))
print(json.dumps({'side': side, 'parentOptions': parent['modelSelection'].get('options', []),
    'agentCalls': calls, 'childOptions': child['modelSelection'].get('options', []),
    'childTranscriptRequestEfforts': efforts}, indent=2))
