| 89 | |
| 90 | |
| 91 | def configure_codex_exec( |
| 92 | *, |
| 93 | path: str | None = None, |
| 94 | sandbox: str | None = None, |
| 95 | profile: str | None = None, |
| 96 | full_auto: bool | None = None, |
| 97 | reasoning_effort: str | None = None, |
| 98 | use_sdk: str | None = None, |
| 99 | network_access: bool | None = None, |
| 100 | web_search: bool | None = None, |
| 101 | approval_policy: str | None = None, |
| 102 | ) -> None: |
| 103 | global CODEX_EXEC_PATH, CODEX_EXEC_SANDBOX, CODEX_EXEC_PROFILE, CODEX_EXEC_FULL_AUTO, CODEX_EXEC_REASONING_EFFORT, CODEX_EXEC_USE_SDK, CODEX_EXEC_NETWORK_ACCESS, CODEX_EXEC_WEB_SEARCH, CODEX_EXEC_APPROVAL_POLICY |
| 104 | if path is not None: |
| 105 | CODEX_EXEC_PATH = str(path).strip() or "codex" |
| 106 | os.environ["CODEX_EXEC_PATH"] = CODEX_EXEC_PATH |
| 107 | if sandbox is not None: |
| 108 | CODEX_EXEC_SANDBOX = str(sandbox).strip() or "workspace-write" |
| 109 | os.environ["CODEX_EXEC_SANDBOX"] = CODEX_EXEC_SANDBOX |
| 110 | if profile is not None: |
| 111 | CODEX_EXEC_PROFILE = str(profile).strip() |
| 112 | os.environ["CODEX_EXEC_PROFILE"] = CODEX_EXEC_PROFILE |
| 113 | if full_auto is not None: |
| 114 | CODEX_EXEC_FULL_AUTO = bool(full_auto) |
| 115 | os.environ["CODEX_EXEC_FULL_AUTO"] = "true" if CODEX_EXEC_FULL_AUTO else "false" |
| 116 | if reasoning_effort is not None: |
| 117 | CODEX_EXEC_REASONING_EFFORT = str(reasoning_effort).strip() or "none" |
| 118 | os.environ["CODEX_EXEC_REASONING_EFFORT"] = CODEX_EXEC_REASONING_EFFORT |
| 119 | if use_sdk is not None: |
| 120 | CODEX_EXEC_USE_SDK = str(use_sdk).strip().lower() or "auto" |
| 121 | os.environ["CODEX_EXEC_USE_SDK"] = CODEX_EXEC_USE_SDK |
| 122 | if network_access is not None: |
| 123 | CODEX_EXEC_NETWORK_ACCESS = bool(network_access) |
| 124 | os.environ["CODEX_EXEC_NETWORK_ACCESS"] = "true" if CODEX_EXEC_NETWORK_ACCESS else "false" |
| 125 | if web_search is not None: |
| 126 | CODEX_EXEC_WEB_SEARCH = bool(web_search) |
| 127 | os.environ["CODEX_EXEC_WEB_SEARCH"] = "true" if CODEX_EXEC_WEB_SEARCH else "false" |
| 128 | if approval_policy is not None: |
| 129 | CODEX_EXEC_APPROVAL_POLICY = str(approval_policy).strip() or "never" |
| 130 | os.environ["CODEX_EXEC_APPROVAL_POLICY"] = CODEX_EXEC_APPROVAL_POLICY |
| 131 | |
| 132 | |
| 133 | def get_codex_exec_config() -> dict[str, str | bool | int]: |