Synced from monorepo
Synced from monorepo Changes: - Workspace server: report `/ready` as failed with dwell on hub connect failure - Refresh OIDC token for the Grok agent in the shell - ACP terminal output recorder - Cross-platform provider auth commands in the shell - Default `/resume` to Grok sessions with a hint for hidden external sessions - Resume sessions by title with `--resume` - Limit app-builder archive size - Data-driven tag labels for slash commands - Doctor fixes for tmux - Custom provider gateways and subprocess environment policy in the shell - `/tutorial` — opt-in onboarding tour of Grok Build - Soft and required CLI version checks in the shell - Privacy banner env overrides survive live settings updates - Add remote flag to override the image-edit model - Return profile fields from auth info even when the access token is expired - Add edit control on queued prompt rows - Keep fail-closed policy when clearing orphans with no team - Setting to disable the Ctrl+Space/F8 voice shortcut - Pass `--raw` to pw-record so Linux dictation works on older PipeWire - Validate git URLs when adding marketplace entries - Stop shipping stale tool-doc parameter and tool names - Re-point dashboard attach after `/fork` only when the parent was attached - Surface Grok Computer media-generation results as file-path chunks - Clear web background-task tray on kill and keep the task description - Show privacy upsell banner in agent view until acted on - Add tools-server client callback surface - Protect persistent global hook sources Source-Revision: 95d84f443eddcbed6cbfd6eed22e2eafe6b3939d
This commit is contained in:
parent
a5727c5960
commit
69f0ba880a
286 changed files with 22939 additions and 9624 deletions
|
|
@ -21,6 +21,19 @@ fn full_entry() -> ToolConfigEntry {
|
|||
}
|
||||
}
|
||||
|
||||
fn finalize_request_minimal() -> xai_grok_tools_api::FinalizeToolServerConfigRequest {
|
||||
xai_grok_tools_api::FinalizeToolServerConfigRequest {
|
||||
tools: vec![],
|
||||
truncation: None,
|
||||
system_reminders_enabled: false,
|
||||
initial_tool_state_json: None,
|
||||
behavior_preset: None,
|
||||
client_callback_addr: None,
|
||||
session_id: None,
|
||||
client_callback_secret: None,
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tool_config_entry_serializes_to_pinned_json_shape() {
|
||||
let value = serde_json::to_value(full_entry()).expect("serialize");
|
||||
|
|
@ -100,3 +113,38 @@ fn explicit_null_map_is_rejected() {
|
|||
"null params_name_overrides must be rejected (omit the key or send {{}})"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn finalize_request_callback_fields_are_optional_and_snake_case() {
|
||||
let mut req = finalize_request_minimal();
|
||||
req.client_callback_addr = Some("http://127.0.0.1:50051".to_owned());
|
||||
req.session_id = Some("session-123".to_owned());
|
||||
req.client_callback_secret = Some("secret-123".to_owned());
|
||||
|
||||
let value = serde_json::to_value(&req).expect("serialize");
|
||||
assert_eq!(
|
||||
value.get("client_callback_addr"),
|
||||
Some(&serde_json::json!("http://127.0.0.1:50051"))
|
||||
);
|
||||
assert_eq!(
|
||||
value.get("session_id"),
|
||||
Some(&serde_json::json!("session-123"))
|
||||
);
|
||||
assert_eq!(
|
||||
value.get("client_callback_secret"),
|
||||
Some(&serde_json::json!("secret-123"))
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn finalize_request_callback_fields_default_when_absent() {
|
||||
let back: xai_grok_tools_api::FinalizeToolServerConfigRequest =
|
||||
serde_json::from_value(serde_json::json!({
|
||||
"tools": [],
|
||||
"system_reminders_enabled": false,
|
||||
}))
|
||||
.expect("deserialize sparse finalize request");
|
||||
assert_eq!(back.client_callback_addr, None);
|
||||
assert_eq!(back.session_id, None);
|
||||
assert_eq!(back.client_callback_secret, None);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue