Files
codex-mmo/tests/helpers/tui_probe_launcher.py
T
2026-08-24 08:11:59 -07:00

47 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""Enter an allocated pseudo-terminal and invoke the real MMO TUI launcher."""
from __future__ import annotations
import fcntl
import json
import os
import sys
import termios
from mmo_runtime import launch_interactive
def main() -> int:
try:
# Popen(start_new_session=True) made this process a session leader. The
# slave PTY descriptors were inherited, so explicitly claim the terminal
# before MMO performs normal foreground process-group handoff.
fcntl.ioctl(sys.stdin.fileno(), termios.TIOCSCTTY, 0)
os.tcsetpgrp(sys.stdin.fileno(), os.getpgrp())
initial = termios.tcgetattr(sys.stdin.fileno())
exit_code = launch_interactive(profile=sys.argv[1], cwd=sys.argv[2])
restored = termios.tcgetattr(sys.stdin.fileno())
print(
json.dumps(
{
"event": "launcher_returned",
"exit_code": exit_code,
"echo_enabled": bool(restored[3] & termios.ECHO),
"attributes_restored": restored == initial,
"pgrp": os.getpgrp(),
"foreground_pgrp": os.tcgetpgrp(sys.stdin.fileno()),
},
sort_keys=True,
),
flush=True,
)
return exit_code
except BaseException as exc:
print(json.dumps({"event": "launcher_error", "error": repr(exc)}), flush=True)
return 97
if __name__ == "__main__":
raise SystemExit(main())