import json, os, pathlib, subprocess, sys
# Public copy: credentials and runtime identifier are supplied externally.
root = pathlib.Path(sys.argv[1]).resolve()
scratch = pathlib.Path(__file__).resolve().parent
project = root / 'user-approval-demo'
project.mkdir(exist_ok=True)
(project / 'README.md').write_text('Synthetic approval demonstration.\n')
(project / '.proof-isolated-user').write_text('ask')
if not (project / '.git').exists():
 for args in [['init','-q','--initial-branch=main'],['add','.'],['-c','user.name=Proof','-c','user.email=proof@example.invalid','commit','-qm','Initial commit']]:
  subprocess.run(['git',*args],cwd=project,check=True)
 subprocess.run(['git','init','--bare','-q',str(root/'user-remote.git')],check=True)
 subprocess.run(['git','remote','add','origin','../user-remote.git'],cwd=project,check=True)
config = scratch / (root.name+'-ask-claude-config')
config.mkdir(exist_ok=True)
(config/'settings.json').write_text(json.dumps({'env':json.loads(os.environ.get('PROOF_AUTH_ENV_JSON','{}')),'skipAutoPermissionPrompt':True,'permissions':{'ask':['Bash(git push:*)']}}))
settings=root/'.t3/userdata/settings.json'
data=json.loads(settings.read_text()) if settings.exists() else {}
data['defaultRuntimeMode']='auto'
data['defaultModelSelection']={'instanceId':'claudeAgent','model':os.environ['PROOF_MODEL']}
data['providerInstances']={'claudeAgent':{'driver':'claudeAgent','displayName':'Claude','config':{'binaryPath':os.environ['PROOF_CLAUDE_WRAPPER'],'customModels':[{'slug':os.environ['PROOF_MODEL'],'name':'Claude'}]}}}
settings.parent.mkdir(parents=True,exist_ok=True)
settings.write_text(json.dumps(data,indent=2))
