Files
aiturk-hermes-ide/apps/desktop/assets/codex-bridge/native_watch_launcher.py
T

43 lines
1.8 KiB
Python

"""Owned startup entry. No user environment/config changes or override discovery."""
import json
import os
from pathlib import Path
import subprocess
import sys
import threading
from native_speech_mux import NativeSpeechMux, stdio_invocation, verified_original
from bekci_watch import Ledger, WatchOwner
def main(manifest, args):
cfg = json.loads(Path(manifest).read_text(encoding='utf-8-sig'))
original = verified_original(cfg['original'], cfg['original_sha256'])
if not stdio_invocation(args):
return subprocess.call([original,*args])
# Existing public catalog and original model passthrough handler is reused.
# A per-child CLI setting selects the ephemeral owned bridge; no global file edit.
saved_env = dict(os.environ)
os.environ['AITURK_CODEX_BRIDGE_HOME'] = cfg['bridge_home']
os.environ['HERMES_HOME'] = cfg['hermes_home']
try:
import kopru
finally:
os.environ.clear(); os.environ.update(saved_env)
from http.server import ThreadingHTTPServer
server = ThreadingHTTPServer(('127.0.0.1',0), kopru.H)
mux = NativeSpeechMux([original,*args,'-c',f'openai_base_url="http://127.0.0.1:{server.server_port}/backend-api/codex"'],observer=True)
Path(cfg['bridge_home']).mkdir(parents=True,exist_ok=True)
owner = WatchOwner(mux,Ledger(str(Path(cfg['bridge_home'])/'native-watch-ledger.sqlite3')))
kopru.WATCH_OWNER = owner
threading.Thread(target=server.serve_forever,daemon=True).start()
try:
return mux.run()
finally:
owner.close(); server.shutdown(); server.server_close()
if __name__ == '__main__':
try:
raise SystemExit(main(sys.argv[1],sys.argv[2:]))
except (OSError,ValueError,KeyError):
sys.stderr.write('Owned native launcher configuration/integrity failure.\n')
raise SystemExit(78)