import os,json,pathlib,datetime,hashlib
root=pathlib.Path(__file__).parent
fixture=root/'transcripts'
manifest=[]
text='Synthetic transcript content for usage performance evidence. '*200
now=datetime.datetime.now(datetime.timezone.utc).replace(hour=12,minute=0,second=0,microsecond=0)
for provider in ['claude','codex']:
 d=fixture/provider/('projects/demo' if provider=='claude' else 'sessions/2026/11/13');d.mkdir(parents=True,exist_ok=True)
 for f in range(24):
  p=d/f'session-{f:03}.jsonl'
  with p.open('w') as out:
   if provider=='codex':
    for typ,payload in [('session_meta',{'id':f'session-{f}'}),('turn_context',{'model':'gpt-5.4','turn_id':f'turn-{f}'}),('event_msg',{'type':'thread_settings_applied','thread_settings':{'service_tier':'standard'}})]:out.write(json.dumps({'type':typ,'payload':payload})+'\n')
   for i in range(5600):
    ts=(now-datetime.timedelta(days=i%28)).isoformat()
    if provider=='claude':
     obj={'type':'assistant','timestamp':ts,'sessionId':f'claude-{f}','requestId':f'req-{f}-{i}','message':{'id':f'msg-{f}-{i}','model':'claude-sonnet-4-6','content':[{'type':'text','text':text}],'usage':{'input_tokens':100,'output_tokens':20,'cache_read_input_tokens':30,'cache_creation_input_tokens':10}}}
    else:
     obj={'type':'token_usage_record','timestamp':ts,'payload':{'response_id':f'resp-{i}','usage':{'input_tokens':140,'cached_input_tokens':30,'cache_write_input_tokens':10,'output_tokens':20},'content':text}}
    out.write(json.dumps(obj,separators=(',',':'))+'\n')
    if i%1000==0:out.write(json.dumps(obj,separators=(',',':'))+'\n')
   if provider=='codex':out.write(json.dumps({'type':'turn_context','payload':{'model':'gpt-5.4','turn_id':f'bad-{f}'}})+'\n');out.write(json.dumps({'type':'event_msg','timestamp':now.isoformat(),'payload':{'type':'token_count','info':{'last_token_usage':{'input_tokens':-1,'output_tokens':2}}}})+'\n')
  manifest.append({'provider':provider,'file':str(p.relative_to(fixture)),'bytes':p.stat().st_size,'sha256':hashlib.sha256(p.read_bytes()).hexdigest()})
(root/'manifest.json').write_text(json.dumps({'files':manifest,'totalBytes':sum(x['bytes'] for x in manifest),'expectedTokens':43008000,'expectedRecords':268800,'expectedMalformed':24},indent=2))
print(sum(x['bytes'] for x in manifest),flush=True)
