#!/usr/bin/env python3
"""Synthetic fixture and delayed real Codex wrapper for the startup reproduction.
Run from each checkout: python3 seed.py --home .t3 --root <scratch> --real-codex <binary>
Then launch T3CODE_DEV_SEED=0 vp run dev and follow reproduction.md.
"""
import argparse,json,subprocess
from pathlib import Path
p=argparse.ArgumentParser()
p.add_argument('--home',required=True);p.add_argument('--root',required=True)
p.add_argument('--real-codex',required=True);p.add_argument('--delay',default='25')
a=p.parse_args();root=Path(a.root).resolve();root.mkdir(parents=True,exist_ok=True)
(root/'delay').write_text(a.delay)
wrapper=root/'codex'
import shlex
wrapper.write_text('#!/bin/sh\nsleep "$(cat '+shlex.quote(str(root/'delay'))+')"\nexec '+shlex.quote(a.real_codex)+' "$@"\n')
wrapper.chmod(0o755)
state=Path(a.home)/'userdata';state.mkdir(parents=True,exist_ok=True)
settings={'providerInstances':{'codex':{'driver':'codex','enabled':True,'config':{'binaryPath':str(wrapper)}},**{x:{'driver':x,'enabled':False,'config':{}} for x in ['claudeAgent','cursor','grok','opencode','antigravity','kiro']}}}
(state/'settings.json').write_text(json.dumps(settings))
project=root/'startup-demo';skill=project/'.agents/skills/startup-proof';skill.mkdir(parents=True,exist_ok=True)
(project/'README.md').write_text('Synthetic Codex startup verification project.\n')
(skill/'SKILL.md').write_text('---\nname: startup-proof\ndescription: Synthetic skill for verifying slow Codex startup discovery.\n---\nRespond with startup discovery verified.\n')
subprocess.run(['git','init','--quiet','--initial-branch=main',str(project)],check=True)
subprocess.run(['git','-C',str(project),'add','.'],check=True)
subprocess.run(['git','-C',str(project),'-c','user.name=Proof','-c','user.email=proof@example.invalid','commit','--quiet','-m','Synthetic fixture'],check=True)
print('After starting the server, add the project:')
print('node apps/server/src/bin.ts project add '+shlex.quote(str(project))+' --title Startup-demo --base-dir '+shlex.quote(a.home))
