From a968ad297cec7264f6355b54ab6596b34feaabef Mon Sep 17 00:00:00 2001 From: iceBear67 Date: Sun, 16 Aug 2026 03:22:31 +0000 Subject: [PATCH] Update upstream to 5163763 Forward-port the six local patches onto the two new monorepo syncs (SOURCE_REV e6a67a54 -> 84ae1223). Resolved 0001 against the runtime full_version() injection and 0005 against the Option-wrapped UserPromptSubmit hook payload. --- ...-Brand-fork-builds-in-version-output.patch | 26 ++++++------ ...ol-config-section-for-the-rc-glance-.patch | 8 ++-- ...remote-control-bridge-to-grok-glance.patch | 42 +++++++++---------- ...d-tools-via-per-turn-checklist-and-b.patch | 16 +++---- ...table-prompt_cache_key-on-main-turns.patch | 12 +++--- upstream.rev | 2 +- 6 files changed, 53 insertions(+), 53 deletions(-) diff --git a/patches/0001-Brand-fork-builds-in-version-output.patch b/patches/0001-Brand-fork-builds-in-version-output.patch index b92b8ba..f5b4b8b 100644 --- a/patches/0001-Brand-fork-builds-in-version-output.patch +++ b/patches/0001-Brand-fork-builds-in-version-output.patch @@ -18,24 +18,24 @@ test asserts the line still ends with the channel label (or ")"). delete the patch file and run 'make apply'. diff --git a/crates/codegen/xai-grok-pager-bin/src/main.rs b/crates/codegen/xai-grok-pager-bin/src/main.rs -index ac1adc4fc7800e507742d4ae4bb7067edf2959f5..19238e835bb37d8d9670c70b0402d43caf248827 100644 +index 29beeff904c352b1c4f029c972312a83521f44db..0a618cf1b6331e5d9699ea4c44a99ae081fcc1bf 100644 --- a/crates/codegen/xai-grok-pager-bin/src/main.rs +++ b/crates/codegen/xai-grok-pager-bin/src/main.rs -@@ -1788,7 +1788,8 @@ fn install_heap_profile_hooks() { +@@ -1787,7 +1787,8 @@ fn install_heap_profile_hooks() { } fn version_text(channel_label: &str) -> String { format!( - "grok {}\n", + "grok {} {}\n", + xai_grok_version::fork_tag(), - xai_grok_version::display_version_with_commit(env!("VERSION_WITH_COMMIT"), channel_label,) - ) - } + xai_grok_version::display_version_with_commit( + xai_grok_version::full_version(), + channel_label, diff --git a/crates/codegen/xai-grok-version/src/lib.rs b/crates/codegen/xai-grok-version/src/lib.rs -index 29fdfc1e64ea1df96f0ca3e1afe78c9ac37843bd..f56d96d34b828a0c10267fca407bc0b14e0c2a55 100644 +index b7d224fc92d5e25ba5dae888fb60335c3c0933ad..200d31e3d27e71bae5537ad93e210cbfd86adc3e 100644 --- a/crates/codegen/xai-grok-version/src/lib.rs +++ b/crates/codegen/xai-grok-version/src/lib.rs -@@ -9,6 +9,15 @@ pub const VERSION: &str = match option_env!("GROK_VERSION") { +@@ -11,6 +11,15 @@ pub const VERSION: &str = match option_env!("GROK_VERSION") { None => env!("CARGO_PKG_VERSION"), }; @@ -48,12 +48,12 @@ index 29fdfc1e64ea1df96f0ca3e1afe78c9ac37843bd..f56d96d34b828a0c10267fca407bc0b1 + format!("[{FORK_NAME}]") +} + - /// [`TEST_VERSION_ENV`] override first, then [`VERSION`]. Trimmed so - /// non-semver-aware callers can pass the result straight into parsing. - pub fn installed() -> String { -@@ -72,4 +81,12 @@ mod tests { - assert_eq!(display_version(""), VERSION); - assert!(display_version(" [stable]").ends_with("[stable]")); + /// Runtime-injected `" ()"` string. Only the release + /// binary stamps the commit hash in its own build.rs and injects it here at + /// startup, so the big lib crates don't recompile on every commit. +@@ -100,4 +109,12 @@ mod tests { + set_full_version("second (bbbbbbb)"); + assert_eq!(full_version(), "first (aaaaaaa)"); } + + /// The fork marker must stay non-empty and bracketed -- the pager splices it diff --git a/patches/0003-Add-remote_control-config-section-for-the-rc-glance-.patch b/patches/0003-Add-remote_control-config-section-for-the-rc-glance-.patch index bfcfd25..5c58e11 100644 --- a/patches/0003-Add-remote_control-config-section-for-the-rc-glance-.patch +++ b/patches/0003-Add-remote_control-config-section-for-the-rc-glance-.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add [remote_control] config section for the /rc glance bridge diff --git a/crates/codegen/xai-grok-shell/src/agent/config.rs b/crates/codegen/xai-grok-shell/src/agent/config.rs -index 3dd50b3217936911d6858e4c9c169d7609e1a0fd..f39d1bd460a4635dd4767afe92622ab9b04952a1 100644 +index 2a2ab0491b226cee84fd968869a2daaff707f9a7..be842a31d205db6bc88ac8f46c0af8e2cecbb4ef 100644 --- a/crates/codegen/xai-grok-shell/src/agent/config.rs +++ b/crates/codegen/xai-grok-shell/src/agent/config.rs -@@ -1014,6 +1014,79 @@ pub struct CliConfig { +@@ -1023,6 +1023,79 @@ pub struct CliConfig { #[serde(skip_serializing_if = "Option::is_none")] pub session_picker_grouped: Option, } @@ -88,7 +88,7 @@ index 3dd50b3217936911d6858e4c9c169d7609e1a0fd..f39d1bd460a4635dd4767afe92622ab9 #[derive(Clone, Debug, Default, Serialize, Deserialize)] #[serde(default)] pub struct DiagnosticsConfig { -@@ -1348,6 +1421,9 @@ pub struct Config { +@@ -1361,6 +1434,9 @@ pub struct Config { pub paths: PathsConfig, #[serde(default, skip_serializing)] pub cli: CliConfig, @@ -98,7 +98,7 @@ index 3dd50b3217936911d6858e4c9c169d7609e1a0fd..f39d1bd460a4635dd4767afe92622ab9 #[serde(default, skip_serializing)] pub models: ModelsConfig, #[serde(default, skip_serializing)] -@@ -1759,6 +1835,7 @@ impl Default for Config { +@@ -1767,6 +1843,7 @@ impl Default for Config { feedback: FeedbackConfig::default(), paths: PathsConfig::default(), cli: CliConfig::default(), diff --git a/patches/0004-Add-rc-remote-control-bridge-to-grok-glance.patch b/patches/0004-Add-rc-remote-control-bridge-to-grok-glance.patch index b4a99f7..0c65081 100644 --- a/patches/0004-Add-rc-remote-control-bridge-to-grok-glance.patch +++ b/patches/0004-Add-rc-remote-control-bridge-to-grok-glance.patch @@ -40,10 +40,10 @@ class as Esc -- rather than faking a keypress and lying in the session log. Remote prompts carry clientIdentifier for the same reason. diff --git a/Cargo.lock b/Cargo.lock -index 3f214ce0ec69942190a8d35ca99f0b7662bee8c7..65ffbd9a021c7e7de45248a3237f52ae02e763a4 100644 +index 8fc3009c68e60a71ed400d7b3a2fb318c7455956..bcd7f081a49128e010d3b3122038002b7e58b9ca 100644 --- a/Cargo.lock +++ b/Cargo.lock -@@ -13696,6 +13696,7 @@ dependencies = [ +@@ -13737,6 +13737,7 @@ dependencies = [ "dunce", "enum_delegate", "flate2", @@ -51,7 +51,7 @@ index 3f214ce0ec69942190a8d35ca99f0b7662bee8c7..65ffbd9a021c7e7de45248a3237f52ae "git2", "image", "indexmap", -@@ -13724,6 +13725,7 @@ dependencies = [ +@@ -13765,6 +13766,7 @@ dependencies = [ "tempfile", "textwrap", "tokio", @@ -60,7 +60,7 @@ index 3f214ce0ec69942190a8d35ca99f0b7662bee8c7..65ffbd9a021c7e7de45248a3237f52ae "toml", "toml_edit 0.22.27", diff --git a/crates/codegen/xai-grok-pager/Cargo.toml b/crates/codegen/xai-grok-pager/Cargo.toml -index db32aa6610bb1276b53842117cf99d7602a5f736..c0a2d49158def2249255c25a3abef59b6e857cad 100644 +index 86d9d26dd190714acd133643dc73ce6e332c1e63..cc56f87f878c18533dc595f40f3ece490d3131d9 100644 --- a/crates/codegen/xai-grok-pager/Cargo.toml +++ b/crates/codegen/xai-grok-pager/Cargo.toml @@ -92,6 +92,11 @@ xai-grok-update = { path = "../xai-grok-update" } @@ -76,7 +76,7 @@ index db32aa6610bb1276b53842117cf99d7602a5f736..c0a2d49158def2249255c25a3abef59b # Crash-recovery registry of open TUI sessions. xai-grok-active-sessions = { workspace = true } diff --git a/crates/codegen/xai-grok-pager/docs/user-guide/04-slash-commands.md b/crates/codegen/xai-grok-pager/docs/user-guide/04-slash-commands.md -index 1a06af17055384f657adf066af8e8b30b79d809c..1ad8905a4495a8b37a5339ede68cba8304f418bf 100644 +index 723efc5b91874535777cca954e62547106b0d11f..6149b9fb68a86cbcc78b27d5998f9c1e27f62937 100644 --- a/crates/codegen/xai-grok-pager/docs/user-guide/04-slash-commands.md +++ b/crates/codegen/xai-grok-pager/docs/user-guide/04-slash-commands.md @@ -103,6 +103,34 @@ Rename the current session. Alias: `/title`. @@ -115,10 +115,10 @@ index 1a06af17055384f657adf066af8e8b30b79d809c..1ad8905a4495a8b37a5339ede68cba83 ## Model and Mode diff --git a/crates/codegen/xai-grok-pager/src/app/acp_handler/mod.rs b/crates/codegen/xai-grok-pager/src/app/acp_handler/mod.rs -index 80aa6e5544434d0403cc87a5bda8628ab4e0d5c6..358a7ea9c234613bfcaf701e60315ba27d2bc7b5 100644 +index 87667c5843cca2c4d2f56d41bc67103bd8296e85..5dea13dda409c058a0d4a1841eb882fef6e96fd6 100644 --- a/crates/codegen/xai-grok-pager/src/app/acp_handler/mod.rs +++ b/crates/codegen/xai-grok-pager/src/app/acp_handler/mod.rs -@@ -152,6 +152,16 @@ use workflow_ingest::*; +@@ -153,6 +153,16 @@ use workflow_ingest::*; /// background agent must still land in its own scrollback so the user sees /// the full turn after switching back. pub(crate) fn handle(msg: AcpClientMessage, app: &mut AppView) -> bool { @@ -136,7 +136,7 @@ index 80aa6e5544434d0403cc87a5bda8628ab4e0d5c6..358a7ea9c234613bfcaf701e60315ba2 AcpClientMessage::SessionNotification(notif) => { let mut meta = NotificationMeta::from_json(notif.request.meta.as_ref()); diff --git a/crates/codegen/xai-grok-pager/src/app/actions.rs b/crates/codegen/xai-grok-pager/src/app/actions.rs -index 1d205af8f0ba4ed065087a84e5050d35b2edd804..1644f044962b9fb1d9c4573b2b02db4798ecafda 100644 +index ac4b7057e3a24800969cbae01271bfa76fae469c..ce40302b71943058a974c38274dea3903bc13aeb 100644 --- a/crates/codegen/xai-grok-pager/src/app/actions.rs +++ b/crates/codegen/xai-grok-pager/src/app/actions.rs @@ -30,6 +30,22 @@ pub enum SwitchModelError { @@ -162,7 +162,7 @@ index 1d205af8f0ba4ed065087a84e5050d35b2edd804..1644f044962b9fb1d9c4573b2b02db47 /// Synchronous, side-effect-free user intent. /// /// Produced by [`super::input`] from key/mouse events. -@@ -714,6 +730,11 @@ pub enum Action { +@@ -717,6 +733,11 @@ pub enum Action { /// tasks as a system block (`/tasks`). The surface minimal mode uses in /// place of the `TasksPane`. ShowTasks, @@ -175,10 +175,10 @@ index 1d205af8f0ba4ed065087a84e5050d35b2edd804..1644f044962b9fb1d9c4573b2b02db47 ShowPlan, /// Enter plan mode. If a description is provided, also start a turn diff --git a/crates/codegen/xai-grok-pager/src/app/app_view.rs b/crates/codegen/xai-grok-pager/src/app/app_view.rs -index 5a960e588c81ecc9d642217455fa28a87fc84b28..c7a0e0e729560569dac2e603a6178cec81dfd121 100644 +index abbbf08a7239da006a7bf14a749230ec5398b276..b336028865a9c0c58dd0de4ea1197050c267df49 100644 --- a/crates/codegen/xai-grok-pager/src/app/app_view.rs +++ b/crates/codegen/xai-grok-pager/src/app/app_view.rs -@@ -1217,6 +1217,18 @@ pub struct AppView { +@@ -1229,6 +1229,18 @@ pub struct AppView { /// combinations are unrepresentable; production mutates it only through the /// `AppView::voice_*` transition methods. pub voice_state: VoiceState, @@ -197,7 +197,7 @@ index 5a960e588c81ecc9d642217455fa28a87fc84b28..c7a0e0e729560569dac2e603a6178cec } /// Reshow window elapsed? None/0 = never. Unparseable ack fails open (show). fn privacy_banner_reshow_elapsed(acked_at: &str, reshow_days: Option) -> bool { -@@ -1648,6 +1660,9 @@ impl AppView { +@@ -1667,6 +1679,9 @@ impl AppView { voice_auth: None, voice_cmd_tx: None, voice_state: VoiceState::Idle, @@ -208,10 +208,10 @@ index 5a960e588c81ecc9d642217455fa28a87fc84b28..c7a0e0e729560569dac2e603a6178cec } /// Seed `deferred_model_switch` from CLI `-m`. The CLI effort token is diff --git a/crates/codegen/xai-grok-pager/src/app/app_view_tests.rs b/crates/codegen/xai-grok-pager/src/app/app_view_tests.rs -index 272f3b11dcf8b83935622dd01142bb4a15e2e7fc..2cd3d0eb554b1a4d9572efa3353c1db48aa178a0 100644 +index 8de13f2db0bf9dd4f0630bfc8b099ada608c4a38..b456dac46ea39af343f4f0fd84ce7012e67fc97d 100644 --- a/crates/codegen/xai-grok-pager/src/app/app_view_tests.rs +++ b/crates/codegen/xai-grok-pager/src/app/app_view_tests.rs -@@ -305,6 +305,9 @@ pub(crate) fn test_app() -> AppView { +@@ -308,6 +308,9 @@ pub(crate) fn test_app() -> AppView { voice_auth: None, voice_cmd_tx: None, voice_state: VoiceState::Idle, @@ -511,7 +511,7 @@ index 0000000000000000000000000000000000000000..43a3fb0c4694c7da7741b683f5286c71 + } +} diff --git a/crates/codegen/xai-grok-pager/src/app/dispatch/router.rs b/crates/codegen/xai-grok-pager/src/app/dispatch/router.rs -index 61b37dcd39deb4d6dde7873f6ad29ef68c537b41..f5895ee6181bc0e50766c538f7110e246fbfba8b 100644 +index 86df4292ad50f986a716298ef85c0a73bd9e12ab..1d2e07109f57220660c6737290dd949fa29e5f73 100644 --- a/crates/codegen/xai-grok-pager/src/app/dispatch/router.rs +++ b/crates/codegen/xai-grok-pager/src/app/dispatch/router.rs @@ -48,6 +48,7 @@ use super::prompt::{ @@ -544,10 +544,10 @@ index 61b37dcd39deb4d6dde7873f6ad29ef68c537b41..f5895ee6181bc0e50766c538f7110e24 Action::EnterPlanMode { description } => dispatch_enter_plan_mode(app, description), Action::SetPlanMode(kind) => set_plan_mode(app, kind), diff --git a/crates/codegen/xai-grok-pager/src/app/dispatch/tests/mod.rs b/crates/codegen/xai-grok-pager/src/app/dispatch/tests/mod.rs -index 4aa72560f1ff7c9158e7905f53a83ec51cbea714..270ec9d3d2a19550cabd1884bf4eeb2ce77326e0 100644 +index 63d41e80a915f5ce67ecbeca00669628e568ede8..c41f28667fca9caf278155a8f211139e66b6eee9 100644 --- a/crates/codegen/xai-grok-pager/src/app/dispatch/tests/mod.rs +++ b/crates/codegen/xai-grok-pager/src/app/dispatch/tests/mod.rs -@@ -293,6 +293,9 @@ fn test_app() -> AppView { +@@ -296,6 +296,9 @@ fn test_app() -> AppView { voice_auth: None, voice_cmd_tx: None, voice_state: VoiceState::Idle, @@ -558,10 +558,10 @@ index 4aa72560f1ff7c9158e7905f53a83ec51cbea714..270ec9d3d2a19550cabd1884bf4eeb2c } /// Build a default `AgentSession` for diff --git a/crates/codegen/xai-grok-pager/src/app/event_loop.rs b/crates/codegen/xai-grok-pager/src/app/event_loop.rs -index 134a05c92417bf9038e9c784c0ee34b9b9d5bec7..1d31be3fe37b6cbbdf62c498fc30cb973d2d6e0b 100644 +index d0f8962eb2d298072d4a232c7ec50b5ddec5ba37..30cca1ed9792f09785d3227d424a170e2cd8d111 100644 --- a/crates/codegen/xai-grok-pager/src/app/event_loop.rs +++ b/crates/codegen/xai-grok-pager/src/app/event_loop.rs -@@ -1707,6 +1707,12 @@ pub(crate) async fn run( +@@ -1737,6 +1737,12 @@ pub(crate) async fn run( let mut voice_rx = None::>; let voice_auth_factory = connection.auth_manager.clone(); @@ -574,7 +574,7 @@ index 134a05c92417bf9038e9c784c0ee34b9b9d5bec7..1d31be3fe37b6cbbdf62c498fc30cb97 // Animation tick: only scheduled when there are running entries. let mut tick_interval = tick_interval; let mut animation_tick_at: Option = None; -@@ -2128,6 +2134,19 @@ pub(crate) async fn run( +@@ -2158,6 +2164,19 @@ pub(crate) async fn run( presenter.request_presentation(&mut app, terminal, false); } @@ -594,7 +594,7 @@ index 134a05c92417bf9038e9c784c0ee34b9b9d5bec7..1d31be3fe37b6cbbdf62c498fc30cb97 // Stop voice if the user has left the recording session (see method). app.enforce_voice_session_bound(); -@@ -3023,6 +3042,37 @@ pub(crate) async fn run( +@@ -3053,6 +3072,37 @@ pub(crate) async fn run( presenter.request(false); } diff --git a/patches/0005-Promote-dedicated-tools-via-per-turn-checklist-and-b.patch b/patches/0005-Promote-dedicated-tools-via-per-turn-checklist-and-b.patch index aecd3f1..fcb5c54 100644 --- a/patches/0005-Promote-dedicated-tools-via-per-turn-checklist-and-b.patch +++ b/patches/0005-Promote-dedicated-tools-via-per-turn-checklist-and-b.patch @@ -53,10 +53,10 @@ index 27f75124fca625dcb9724185c26172926bb46346..d6224d9ea3b5a665c0d41fc7ca756193 /// signal. /// One-shot; skipped for the harness that owns this surface. diff --git a/crates/codegen/xai-grok-shell/src/session/acp_session_impl/turn.rs b/crates/codegen/xai-grok-shell/src/session/acp_session_impl/turn.rs -index e9d50a9331bf32946e5174e3c6399251b8e52ecb..a0d84cde22c11cef0172b0e151c50d7638581857 100644 +index 355d5146e2859778b9c3c99e71404ce9c0d3087f..f2e65c4f3758c7619b5e73b0d3eceda657552aca 100644 --- a/crates/codegen/xai-grok-shell/src/session/acp_session_impl/turn.rs +++ b/crates/codegen/xai-grok-shell/src/session/acp_session_impl/turn.rs -@@ -760,6 +760,12 @@ impl SessionActor { +@@ -803,6 +803,12 @@ impl SessionActor { attached_image_refs, )) .await; @@ -66,10 +66,10 @@ index e9d50a9331bf32946e5174e3c6399251b8e52ecb..a0d84cde22c11cef0172b0e151c50d76 + } else { + user_message + }; - let prompt_text_for_hook = user_message.clone(); + let prompt_text_for_hook = Some(user_message.clone()); { if trace_gcs_config.is_some() { -@@ -790,9 +796,7 @@ impl SessionActor { +@@ -832,9 +838,7 @@ impl SessionActor { } super::super::PromptOrigin::PlanResume => ConversationItem::user(user_message), super::super::PromptOrigin::User => { @@ -81,10 +81,10 @@ index e9d50a9331bf32946e5174e3c6399251b8e52ecb..a0d84cde22c11cef0172b0e151c50d76 .events .take_prior_interrupt_category() diff --git a/crates/codegen/xai-grok-shell/src/session/acp_session_tests/cancel_running_task_tests.rs b/crates/codegen/xai-grok-shell/src/session/acp_session_tests/cancel_running_task_tests.rs -index 5fed4c6a9ed403990385898903141fdac785f7cf..6a58ef9ab31dd7260e4f776fcbec9cbbbee10828 100644 +index 391b6dc17a46bb37d86bb479822001adbefdb1cd..485c5aa81b467271ac848ac5323ef04e9640c6b4 100644 --- a/crates/codegen/xai-grok-shell/src/session/acp_session_tests/cancel_running_task_tests.rs +++ b/crates/codegen/xai-grok-shell/src/session/acp_session_tests/cancel_running_task_tests.rs -@@ -1476,7 +1476,15 @@ async fn handle_prompt_frames_interrupt_on_user_message() { +@@ -1492,7 +1492,15 @@ async fn handle_prompt_frames_interrupt_on_user_message() { .expect("the user message must be in the conversation"); let text = user.text_content(); let expected_assembled = format!("\n{query}\n"); @@ -101,7 +101,7 @@ index 5fed4c6a9ed403990385898903141fdac785f7cf..6a58ef9ab31dd7260e4f776fcbec9cbb assert!(!actor.events.take_pending_interrupt_reminder()); prompt_task.abort(); }) -@@ -1573,12 +1581,18 @@ async fn handle_prompt_send_now_frames_interjection_envelope() { +@@ -1589,12 +1597,18 @@ async fn handle_prompt_send_now_frames_interjection_envelope() { }) .expect("the send-now user message must be in the conversation"); let expected_assembled = format!("\n{query}\n"); @@ -216,7 +216,7 @@ index b84ecab7966431a349ff7d264434cb1cf2901865..5665800490fa8fce4811275041959350 use xai_grok_tools::types::output::{MCPOutput, ToolOutput, ToolRunResult}; use xai_grok_tools::util::base64_images::{ExtractedImage, IMAGE_CONTENT_PLACEHOLDER}; diff --git a/crates/codegen/xai-grok-shell/src/session/compaction.rs b/crates/codegen/xai-grok-shell/src/session/compaction.rs -index 1b4f84ac1dcca97133abf6d2f9ebce5d289ee98b..2b0f02a8128f4cea7feb4c2facd51625821e86d1 100644 +index 0225e170b5b70e24e5ddbd598aa9422a010a1e02..e169f7001473a79b98d4cf373dd12727221fbcaa 100644 --- a/crates/codegen/xai-grok-shell/src/session/compaction.rs +++ b/crates/codegen/xai-grok-shell/src/session/compaction.rs @@ -31,7 +31,79 @@ use xai_chat_state::compaction_utils::{ diff --git a/patches/0006-Pin-a-session-stable-prompt_cache_key-on-main-turns.patch b/patches/0006-Pin-a-session-stable-prompt_cache_key-on-main-turns.patch index 14ce83d..0696e41 100644 --- a/patches/0006-Pin-a-session-stable-prompt_cache_key-on-main-turns.patch +++ b/patches/0006-Pin-a-session-stable-prompt_cache_key-on-main-turns.patch @@ -10,10 +10,10 @@ one key. Do not agent-scope: that would split the prefix those side calls are built to ride. diff --git a/crates/codegen/xai-chat-state/src/actor/request_builder.rs b/crates/codegen/xai-chat-state/src/actor/request_builder.rs -index 4d9ce755a316ab0cca430aa3126d3ceb18e541b5..7c787b6dce09682445438274ed5a35008f242a6d 100644 +index 64f497a0b0419b167faea18e35b32b941080620e..109a97521e590dc1f14d367c3d349600001558f8 100644 --- a/crates/codegen/xai-chat-state/src/actor/request_builder.rs +++ b/crates/codegen/xai-chat-state/src/actor/request_builder.rs -@@ -105,7 +105,10 @@ impl ChatStateActor { +@@ -106,7 +106,10 @@ impl ChatStateActor { x_grok_deployment_id: None, x_grok_user_id: None, trace, @@ -26,7 +26,7 @@ index 4d9ce755a316ab0cca430aa3126d3ceb18e541b5..7c787b6dce09682445438274ed5a3500 json_schema: None, } diff --git a/crates/codegen/xai-chat-state/src/actor/tests.rs b/crates/codegen/xai-chat-state/src/actor/tests.rs -index 604a121b4897d1e245a15f99318130af0ad02462..e9899af98ecf80eb541ce120f4aad489e0e25dae 100644 +index 07d581d48e78a7c69e78a7f0d8d2ce1844a3190b..dee7b542755b8d97dfcc4e621d01bb809488d017 100644 --- a/crates/codegen/xai-chat-state/src/actor/tests.rs +++ b/crates/codegen/xai-chat-state/src/actor/tests.rs @@ -1576,6 +1576,7 @@ async fn build_request_includes_all_messages() { @@ -38,10 +38,10 @@ index 604a121b4897d1e245a15f99318130af0ad02462..e9899af98ecf80eb541ce120f4aad489 #[tokio::test] diff --git a/crates/codegen/xai-grok-sampling-types/src/conversation.rs b/crates/codegen/xai-grok-sampling-types/src/conversation.rs -index 982839bbe822874651bc37e257e4e4a7442f6f87..91d61f3a46524cdf5c11cb753c739abe8481f503 100644 +index 7bd0cd870c5400ef4d3fb2ba6ce50cfc53ffd62c..db582daced370d89cc1158d5cbbf81b7a156ba4f 100644 --- a/crates/codegen/xai-grok-sampling-types/src/conversation.rs +++ b/crates/codegen/xai-grok-sampling-types/src/conversation.rs -@@ -623,10 +623,29 @@ pub struct ConversationRequest { +@@ -627,10 +627,29 @@ pub struct ConversationRequest { /// JSON Schema for structured output (strict mode). pub json_schema: Option, /// Sticky routing key for prompt-cache reuse; overrides `x_grok_conv_id` for routing. @@ -71,7 +71,7 @@ index 982839bbe822874651bc37e257e4e4a7442f6f87..91d61f3a46524cdf5c11cb753c739abe /// Strip every image; returns the stripped URLs. pub fn strip_images(&mut self) -> Vec> { strip_images_where(&mut self.items, |_| true) -@@ -2399,6 +2418,35 @@ mod tests { +@@ -2416,6 +2435,35 @@ mod tests { use crate::tool_overrides::*; use assert_matches::assert_matches; diff --git a/upstream.rev b/upstream.rev index 61f552f..da1724a 100644 --- a/upstream.rev +++ b/upstream.rev @@ -1,3 +1,3 @@ # Pinned upstream revision of https://github.com/xai-org/grok-build.git # Bump with: make update (never edit by hand unless you know why) -eb267feff13129e568df38fb6fdf0ceb65f735d6 +5163763e703c319e4554c2f455535c5adb6e51e8