mirror of
https://github.com/openai/codex.git
synced 2026-08-23 13:09:46 +00:00
## What changed - Pin `openai-codex` to the `0.147.0` CLI runtime and regenerate its protocol models and lockfile. - Allow stable Python SDK release tags and require their versions to match the pinned runtime. - Expose the regenerated API additions, including thread sections, environment connection notifications, audio inputs, and the `section_id` thread-list filter. ## Testing - Update release staging, generated-contract, notification, and public-signature coverage for the new runtime. GitOrigin-RevId: 8b99ef6781e01c34d9d697c8c44247fb4e4fe3ab
58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
from __future__ import annotations
|
|
|
|
import importlib.metadata
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
GENERATED_TARGETS = [
|
|
Path("src/openai_codex/generated/notification_registry.py"),
|
|
Path("src/openai_codex/generated/v2_all.py"),
|
|
Path("src/openai_codex/api.py"),
|
|
]
|
|
|
|
|
|
def _snapshot_target(root: Path, rel_path: Path) -> dict[str, bytes] | bytes | None:
|
|
"""Capture one generated artifact so regeneration drift is easy to compare."""
|
|
target = root / rel_path
|
|
if not target.exists():
|
|
return None
|
|
if target.is_file():
|
|
return target.read_bytes()
|
|
|
|
snapshot: dict[str, bytes] = {}
|
|
for path in sorted(target.rglob("*")):
|
|
if path.is_file() and "__pycache__" not in path.parts:
|
|
snapshot[str(path.relative_to(target))] = path.read_bytes()
|
|
return snapshot
|
|
|
|
|
|
def _snapshot_targets(root: Path) -> dict[str, dict[str, bytes] | bytes | None]:
|
|
"""Capture all checked-in generated artifacts before and after regeneration."""
|
|
return {str(rel_path): _snapshot_target(root, rel_path) for rel_path in GENERATED_TARGETS}
|
|
|
|
|
|
def test_generated_files_are_up_to_date():
|
|
"""Regenerating from the pinned runtime package should leave artifacts unchanged."""
|
|
before = _snapshot_targets(ROOT)
|
|
|
|
# Regenerate contract artifacts via the pinned runtime package, not a local
|
|
# app-server binary from the checkout or CI environment.
|
|
assert importlib.metadata.version("openai-codex-cli-bin") == "0.147.0"
|
|
env = os.environ.copy()
|
|
env.pop("CODEX_EXEC_PATH", None)
|
|
python_bin = str(Path(sys.executable).parent)
|
|
env["PATH"] = f"{python_bin}{os.pathsep}{env.get('PATH', '')}"
|
|
|
|
subprocess.run(
|
|
[sys.executable, "scripts/update_sdk_artifacts.py", "generate-types"],
|
|
cwd=ROOT,
|
|
check=True,
|
|
env=env,
|
|
)
|
|
|
|
after = _snapshot_targets(ROOT)
|
|
assert before == after, "Generated files drifted after regeneration"
|