From 4f0eb4ff0b8fcba8d0b19e29d4a07701f3738f31 Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Mon, 29 Dec 2025 02:15:09 +0400 Subject: [PATCH] feat: add exec-bridge model flag --- codex_telegram_bridge/readme.md | 1 + .../src/codex_telegram_bridge/exec_bridge.py | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/codex_telegram_bridge/readme.md b/codex_telegram_bridge/readme.md index 7657841..96be368 100644 --- a/codex_telegram_bridge/readme.md +++ b/codex_telegram_bridge/readme.md @@ -47,6 +47,7 @@ Optional flags: - `--codex-command-timeout FLOAT` (default: disabled, debug defaults to 60s) - `--codex-no-child-timeout FLOAT` (default `15.0`, set `0` to disable) - `--workdir PATH` (override `codex_workspace`) +- `--model NAME` (pass through to `codex exec`) ## Option 2: MCP server diff --git a/codex_telegram_bridge/src/codex_telegram_bridge/exec_bridge.py b/codex_telegram_bridge/src/codex_telegram_bridge/exec_bridge.py index 0378665..eab38b0 100644 --- a/codex_telegram_bridge/src/codex_telegram_bridge/exec_bridge.py +++ b/codex_telegram_bridge/src/codex_telegram_bridge/exec_bridge.py @@ -334,6 +334,11 @@ def run( "--workdir", help="Override codex workspace (--cd) for this exec-bridge run.", ), + model: Optional[str] = typer.Option( + None, + "--model", + help="Codex model to pass to `codex exec`.", + ), ) -> None: setup_file_logger(log_file if log_file else None) config = load_telegram_config() @@ -354,6 +359,25 @@ def run( else: extra_args = shlex.split(str(raw_exec_args)) # e.g. "--full-auto --search" + def _strip_model_args(args: list[str]) -> list[str]: + stripped: list[str] = [] + i = 0 + while i < len(args): + arg = args[i] + if arg in ("--model", "-m"): + i += 2 + continue + if arg.startswith("--model=") or arg.startswith("-m="): + i += 1 + continue + stripped.append(arg) + i += 1 + return stripped + + if model: + extra_args = _strip_model_args(extra_args) + extra_args.extend(["--model", model]) + def _has_notify_override(args: list[str]) -> bool: for i, arg in enumerate(args): if arg in ("-c", "--config"):