Remove detached delivery from review/start (#57667)

## What changed

`review/start` now supports only inline reviews on the supplied thread and returns that thread's id as `reviewThreadId`. Clients can omit `delivery`, send `null`, or specify `"inline"`; `"detached"` is no longer supported.

For a separate review thread, call `thread/start` followed by `review/start`. To preserve conversation history with custom review instructions, use `thread/fork` followed by `turn/start`.

Remove detached review execution and its app-server dependency on `codex-agent-extension`, and update the protocol schemas and generated clients. Preserve `ReviewDelivery.inline` as a Python enum member.

## Testing

Add a Python regression test verifying that inline review delivery parses as `ReviewDelivery.inline` and round-trips to the original JSON.

GitOrigin-RevId: ed16c5271c3315ae3afcb3ee78883ed421394b4d
This commit is contained in:
yansenzhou-oai
2026-10-28 07:12:32 +00:00
committed by copyberry
parent 154e8736a5
commit 26ad281fd1
26 changed files with 90 additions and 570 deletions
@@ -23,6 +23,8 @@ from openai_codex.generated.v2_all import (
PlanType,
ReasoningEffort,
ReasoningEffortOption,
ReviewDelivery,
ReviewStartParams,
ThreadForkParams,
ThreadListParams,
ThreadQueueChangedNotification,
@@ -39,6 +41,14 @@ from openai_codex.types import ThreadSource
ROOT = Path(__file__).resolve().parents[1]
def test_inline_review_delivery_round_trips_as_an_enum() -> None:
wire = {"threadId": "thread-1", "target": {"type": "uncommittedChanges"}, "delivery": "inline"}
params = ReviewStartParams.model_validate(wire)
assert params.delivery is ReviewDelivery.inline
assert params.model_dump(mode="json", by_alias=True) == wire
@pytest.mark.parametrize(
("model", "fields"),
[