import json, pathlib, sys
root=pathlib.Path(sys.argv[1])
for target,waiting in [('apps/server/scripts/dev-replay/command_output_transcript.ndjson',False),('apps/server/src/orchestration-v2/testkit/fixtures/todo_list/registry_transcript.ndjson',True)]:
    update={'sessionUpdate':'tool_call','toolCallId':'proof-task','kind':'other' if waiting else 'execute','title':'t3_thread_wait' if waiting else 'Review synthetic task','status':'in_progress','rawInput':{'threadId':'synthetic-thread'}}
    if waiting: update['_meta']={'toolName':'mcp::t3-code::t3_thread_wait','serverId':'t3-code','provenance':'mcp'}
    def frame(u, delay=0):
        return {'type':'emit_inbound','afterMs':delay,'frame':{'kind':'notification','method':'session/update','params':{'sessionId':'replay-session','update':u}}}
    entries=[{'type':'transcript_start','provider':'acpRegistry','protocol':'acp.ndjson-jsonrpc','version':'1','scenario':'accessibility-proof'}, {'type':'expect_outbound','frame':{'kind':'request','method':'session/prompt','params':'<any>'}},frame(update)]
    entries += [frame({'sessionUpdate':'agent_message_chunk','content':{'type':'text','text':'Synthetic task remains active.\n'}},2000) for _ in range(300)]
    entries += [frame({'sessionUpdate':'tool_call_update','toolCallId':'proof-task','status':'completed'}), {'type':'emit_inbound','frame':{'kind':'response','method':'session/prompt','result':{'stopReason':'end_turn'}}}]
    (root/target).write_text('\n'.join(map(json.dumps,entries))+'\n')
