mirror of
https://github.com/openai/codex.git
synced 2026-10-28 08:04:55 +00:00
Expose structured standalone web search results (#32898)
## Why Standalone web search can return structured result DTOs separately from its model-facing text output. App-server clients need access to that data without coupling Codex to every result type or field. ## What changed - Preserve the optional `results` array from `/v1/alpha/search` as opaque JSON through web-search completion events, thread history, and app-server `webSearch` items. - Keep responses from older endpoints compatible when `results` is absent, and allow clients to ignore result types and fields they do not understand. - Regenerate the protocol schemas and TypeScript definitions for the optional field. ## Testing - Cover responses with missing, empty, and forward-compatible result payloads. - Verify standalone web-search results round-trip through app-server item notifications and thread-item conversion. GitOrigin-RevId: 739ef5694ece5733f7b8749ec41d6bfa3f33c8c5
This commit is contained in:
@@ -206,6 +206,7 @@ pub fn parse_turn_item(item: &ResponseItem) -> Option<TurnItem> {
|
||||
id: id.as_deref().unwrap_or_default().to_string(),
|
||||
query,
|
||||
action,
|
||||
results: None,
|
||||
}))
|
||||
}
|
||||
ResponseItem::ImageGenerationCall {
|
||||
|
||||
@@ -509,6 +509,7 @@ fn parses_web_search_call() {
|
||||
query: Some("weather".to_string()),
|
||||
queries: None,
|
||||
},
|
||||
results: None,
|
||||
}
|
||||
),
|
||||
other => panic!("expected TurnItem::WebSearch, got {other:?}"),
|
||||
@@ -537,6 +538,7 @@ fn parses_web_search_open_page_call() {
|
||||
action: WebSearchAction::OpenPage {
|
||||
url: Some("https://example.com".to_string()),
|
||||
},
|
||||
results: None,
|
||||
}
|
||||
),
|
||||
other => panic!("expected TurnItem::WebSearch, got {other:?}"),
|
||||
@@ -567,6 +569,7 @@ fn parses_web_search_find_in_page_call() {
|
||||
url: Some("https://example.com".to_string()),
|
||||
pattern: Some("needle".to_string()),
|
||||
},
|
||||
results: None,
|
||||
}
|
||||
),
|
||||
other => panic!("expected TurnItem::WebSearch, got {other:?}"),
|
||||
@@ -590,6 +593,7 @@ fn parses_partial_web_search_call_without_action_as_other() {
|
||||
id: "ws_partial".to_string(),
|
||||
query: String::new(),
|
||||
action: WebSearchAction::Other,
|
||||
results: None,
|
||||
}
|
||||
),
|
||||
other => panic!("expected TurnItem::WebSearch, got {other:?}"),
|
||||
|
||||
@@ -272,6 +272,7 @@ mod tests {
|
||||
id: call.call_id.clone(),
|
||||
query: String::new(),
|
||||
action: None,
|
||||
results: None,
|
||||
}),
|
||||
legacy_events: Vec::new(),
|
||||
})
|
||||
@@ -421,6 +422,7 @@ mod tests {
|
||||
id: "call-extension".to_string(),
|
||||
query: String::new(),
|
||||
action: None,
|
||||
results: None,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user