ningyi-oai
be13f03c39
Pass turn id with feedback uploads ( #17314 )
...
## Summary
- Add an optional `tags` dictionary to feedback upload params.
- Capture the active app-server turn id in the TUI and submit it as
`tags.turn_id` with `/feedback` uploads.
- Merge client-provided feedback tags into Sentry feedback tags while
preserving reserved system fields like `thread_id`, `classification`,
`cli_version`, `session_source`, and `reason`.
## Behavior / impact
Existing feedback upload callers remain compatible because `tags` is
optional and nullable. The wire shape is still a normal JSON object /
TypeScript dictionary, so adding future feedback metadata will not
require a new top-level protocol field each time. This change only adds
feedback metadata for Codex CLI/TUI uploads; it does not affect existing
pipelines, DAGs, exports, or downstream consumers unless they choose to
read the new `turn_id` feedback tag.
## Tests
- `cargo fmt -- --config imports_granularity=Item` passed; stable
rustfmt warned that `imports_granularity` is nightly-only.
- `cargo run -p codex-app-server-protocol --bin write_schema_fixtures`
- `cargo test -p codex-feedback
upload_tags_include_client_tags_and_preserve_reserved_fields`
- `cargo test -p codex-app-server-protocol
schema_fixtures_match_generated`
- `cargo test -p codex-tui build_feedback_upload_params`
- `cargo test -p codex-tui
live_app_server_turn_started_sets_feedback_turn_id`
- `cargo check -p codex-app-server --tests`
- `git diff --check`
---------
Co-authored-by: Codex <noreply@openai.com >
2026-04-11 00:23:50 -07:00
..
2026-02-01 23:38:43 -08:00
2026-04-10 23:33:13 +00:00
2026-04-10 23:33:13 +00:00
2026-02-01 23:38:43 -08:00
2026-03-06 00:03:39 +00:00
2026-02-09 23:10:26 -08:00
2026-03-06 00:03:39 +00:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-02-01 23:38:43 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-08 17:38:01 -07:00
2026-02-01 23:38:43 -08:00
2026-03-13 15:27:00 -07:00
2026-04-06 19:38:51 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-03-23 10:19:44 -07:00
2026-03-25 02:27:00 +00:00
2026-03-25 02:27:00 +00:00
2026-02-05 20:04:01 +00:00
2026-02-05 23:31:04 +00:00
2026-02-25 02:11:51 -08:00
2026-02-25 02:11:51 -08:00
2026-02-25 02:11:51 -08:00
2026-02-25 02:11:51 -08:00
2026-04-11 00:23:50 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-04-07 11:22:28 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-04-07 11:22:28 -07:00
2026-03-24 15:52:13 -07:00
2026-04-07 11:22:28 -07:00
2026-04-07 11:22:28 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-02-01 23:38:43 -08:00
2026-04-10 23:33:13 +00:00
2026-04-10 23:33:13 +00:00
2026-03-25 19:18:03 -07:00
2026-03-25 19:18:03 -07:00
2026-04-07 11:10:21 -07:00
2026-04-10 20:02:33 -07:00
2026-04-10 20:02:33 -07:00
2026-04-07 11:10:21 -07:00
2026-04-06 16:27:02 -07:00
2026-02-02 17:41:55 -08:00
2026-03-27 00:27:15 -07:00
2026-03-27 00:27:15 -07:00
2026-02-01 23:38:43 -08:00
2026-04-06 19:17:14 -07:00
2026-04-06 19:17:14 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-03-19 15:09:59 -07:00
2026-04-11 04:39:19 +00:00
2026-04-11 04:39:19 +00:00
2026-02-01 23:38:43 -08:00
2026-02-13 16:26:32 -08:00
2026-04-07 17:55:40 -07:00
2026-02-17 11:02:23 -08:00
2026-02-01 23:38:43 -08:00
2026-03-16 21:37:27 -07:00
2026-03-19 15:02:45 -07:00
2026-03-11 12:33:08 -07:00
2026-03-24 11:47:23 -07:00
2026-03-12 16:52:21 -07:00
2026-03-23 12:57:40 -07:00
2026-03-16 21:37:27 -07:00
2026-03-09 12:40:25 -07:00
2026-03-18 09:37:13 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-04-07 11:10:21 -07:00
2026-02-27 12:45:59 -08:00
2026-03-03 17:01:00 -08:00
2026-03-23 12:57:40 -07:00
2026-02-01 23:38:43 -08:00
2026-02-09 13:30:38 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-17 14:53:58 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-25 13:14:30 -08:00
2026-02-03 18:15:55 -08:00
2026-02-03 18:15:55 -08:00
2026-03-13 15:27:00 -07:00
2026-04-07 11:10:21 -07:00
2026-03-18 15:19:29 -07:00
2026-04-07 11:10:21 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-03-03 15:56:11 -08:00
2026-04-07 11:10:21 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-04-07 11:10:21 -07:00
2026-02-25 09:59:10 -08:00
2026-02-25 09:59:10 -08:00
2026-02-25 09:59:10 -08:00
2026-03-16 21:38:07 -07:00
2026-04-07 15:43:38 -07:00
2026-03-17 15:24:37 -07:00
2026-03-20 15:30:48 -07:00
2026-03-18 09:37:13 -07:00
2026-04-07 11:10:21 -07:00
2026-02-01 23:38:43 -08:00
2026-04-07 11:10:21 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-03-18 23:42:40 -06:00
2026-03-18 23:42:40 -06:00
2026-04-07 11:10:21 -07:00
2026-04-10 16:05:21 -07:00
2026-04-07 11:10:21 -07:00
2026-02-18 15:20:03 -08:00
2026-02-01 23:38:43 -08:00
2026-02-17 14:53:58 -08:00
2026-02-01 23:38:43 -08:00
2026-04-07 11:10:21 -07:00
2026-02-25 13:14:30 -08:00
2026-02-25 13:14:30 -08:00
2026-04-07 11:10:21 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-04-07 11:10:21 -07:00
2026-03-13 15:27:00 -07:00
2026-04-07 11:10:21 -07:00
2026-02-06 00:35:04 +00:00
2026-02-06 00:35:04 +00:00
2026-02-18 13:03:16 -08:00
2026-03-08 18:07:46 -07:00
2026-02-18 13:03:16 -08:00
2026-02-01 23:38:43 -08:00