Add client-only web search result metadata

This commit is contained in:
Alexi Christakis
2026-07-07 19:20:41 -07:00
parent aaa30f79c2
commit 3c6ad5ea3d
39 changed files with 831 additions and 3 deletions
@@ -54,6 +54,7 @@ use crate::exec_events::TurnFailedEvent;
use crate::exec_events::TurnStartedEvent;
use crate::exec_events::Usage;
use crate::exec_events::WebSearchItem;
use crate::exec_events::WebSearchResult;
pub struct EventProcessorWithJsonOutput {
last_message_path: Option<PathBuf>,
@@ -297,6 +298,7 @@ impl EventProcessorWithJsonOutput {
id: raw_id,
query,
action,
results,
} => Some(ExecThreadItem {
id: make_id(),
details: ThreadItemDetails::WebSearch(WebSearchItem {
@@ -309,6 +311,16 @@ impl EventProcessorWithJsonOutput {
.unwrap_or(WebSearchAction::Other),
None => WebSearchAction::Other,
},
results: results.map(|results| {
results
.into_iter()
.map(|result| WebSearchResult {
url: result.url,
title: result.title,
snippet: result.snippet,
})
.collect()
}),
}),
}),
_ => None,
+14
View File
@@ -296,6 +296,20 @@ pub struct WebSearchItem {
pub id: String,
pub query: String,
pub action: WebSearchAction,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub results: Option<Vec<WebSearchResult>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, TS)]
pub struct WebSearchResult {
pub url: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub snippet: Option<String>,
}
/// An error notification.
+1
View File
@@ -138,6 +138,7 @@ pub use exec_events::TurnFailedEvent;
pub use exec_events::TurnStartedEvent;
pub use exec_events::Usage;
pub use exec_events::WebSearchItem;
pub use exec_events::WebSearchResult;
use serde_json::Value;
use std::collections::HashMap;
use std::future::Future;