import hashlib import importlib.metadata import json import os from pathlib import Path import sys import time import tinker ROOT = Path(__file__).resolve().parent sys.path.insert(0, '/home/ubuntu/repos/research-exchange') from research_exchange.experiment_features import check_applicability text = (ROOT / 'launch-instructions.md').read_text() assert hashlib.sha256(text.encode()).hexdigest() == 'ce6b64e8bbf72916acd8309c1888a1e3dbf86b3c9ed8e0522e26ee5b5b95b935' spec, _ = json.JSONDecoder().raw_decode(text.split('Experiment spec:\n', 1)[1]) (ROOT / 'spec.json').write_text(json.dumps(spec, indent=2) + '\n') started = time.perf_counter() service = tinker.ServiceClient( base_url=os.environ['TINKER_BASE_URL'], api_key=os.environ['TINKER_API_KEY'], default_headers={ 'Modal-Key': os.environ['MODAL_PROXY_TOKEN_ID'], 'Modal-Secret': os.environ['MODAL_PROXY_TOKEN_SECRET'], }, ) capabilities = service.get_server_capabilities().model_dump(mode='json') result = { 'tinker_version': importlib.metadata.version('tinker'), 'capabilities': capabilities, 'generation_audit_applicability': check_applicability(spec, 'generation_audit'), 'discovery_seconds': time.perf_counter() - started, 'created_training_clients': [], 'optimizer_updates': 0, } (ROOT / 'discovery.json').write_text(json.dumps(result, indent=2) + '\n') print(json.dumps(result, indent=2))