#!/usr/bin/env python3
"""Recreate the isolated systemd server setup used for this proof.
Usage: seed-and-start.py CHECKOUT NODE OPENCODE_BINARY ROOT SIDE SERVER_PORT WEB_PORT
Start the matching Vite web client separately, pair, then use browser-refresh.js.
"""
import json, pathlib, subprocess, sys
checkout, node, opencode, root, side, port, web = sys.argv[1:]
root = pathlib.Path(root).resolve()
home = root / side / 'home'
data = root / side / 'data'
helpers = root / 'common-bin'
for path in [home / 'login-bin', data / 'userdata', helpers]:
    path.mkdir(parents=True, exist_ok=True)
label = helpers / 'hostnamectl'
label.write_text('#!/bin/sh\necho "PATH recovery demo"\n')
label.chmod(0o755)
binary = home / 'login-bin/opencode'
if not binary.exists():
    binary.symlink_to(pathlib.Path(opencode).resolve())
(home / '.bash_profile').write_text(
    f'/bin/sleep 8\nexport PATH="$HOME/login-bin:{helpers}:/usr/bin:/bin"\n')
providers = {name: {'driver': name, 'enabled': False} for name in
             ['codex', 'claudeAgent', 'cursor', 'grok', 'muse', 'pi', 'antigravity']}
providers['opencode'] = {'driver': 'opencode', 'enabled': True}
(data / 'userdata/settings.json').write_text(json.dumps({'providerInstances': providers}))
subprocess.run(['systemd-run', '--user', '--unit=path-proof-' + side,
    '--property=WorkingDirectory=' + checkout,
    '/usr/bin/env', '-i', 'HOME=' + str(home), 'SHELL=/bin/bash',
    'PATH=' + str(helpers) + ':/usr/bin:/bin', 'T3CODE_DEV_SEED=0',
    'T3CODE_TELEMETRY_ENABLED=false', node, checkout + '/apps/server/src/bin.ts',
    'serve', '--base-dir', str(data), '--port', port, '--host', '127.0.0.1',
    '--dev-url', 'http://localhost:' + web], check=True)
