Add structured asynchronous user input requests (#42178)

## What changed

- Replace `send_user_message_async` with `request_user_input_async`, accepting one or more questions with optional suggested answers while allowing the turn to continue.
- Attach structured question metadata to asynchronous agent messages while retaining readable fallback text, and preserve it through app-server events, thread history, and generated schemas.
- Continue enabling the new tool for model catalogs that advertise either the old or new tool name.

## Testing

- Cover tool registration, question validation, emitted items, continued turn execution, history preservation, and backwards-compatible deserialization.

GitOrigin-RevId: ffc49aebde2e854c3c50a122aa52805fec3fc6b3
This commit is contained in:
rka-oai authored and copyberry committed 2026-09-02 02:09:35 +00:00
1 parent b21f2e3081
commit 2c79ee6dac
80 files changed
+1110 -146

No files matched your search

+2
View File
@@ -389,6 +389,7 @@ fn turn_items_for_thread_returns_matching_turn_items() {
phase: None,
memory_citation: None,
delivery: None,
questions: None,
}],
status: codex_app_server_protocol::TurnStatus::Completed,
error: None,
@@ -420,6 +421,7 @@ fn turn_items_for_thread_returns_matching_turn_items() {
phase: None,
memory_citation: None,
delivery: None,
questions: None,
}])
);
assert_eq!(turn_items_for_thread(&thread, "missing-turn"), None);