From 00f47000fb31a54023f8045110399ac05e9c6eaa Mon Sep 17 00:00:00 2001 From: Nikhil Sinha Date: Sun, 11 Oct 2026 07:55:19 +0530 Subject: [PATCH 1/2] update tools that use single dataset --- src/tool_catalog.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/tool_catalog.rs b/src/tool_catalog.rs index 3e2d898fd..196893fb5 100644 --- a/src/tool_catalog.rs +++ b/src/tool_catalog.rs @@ -448,16 +448,16 @@ pub fn oss_read_tool_specs() -> Vec { ToolSpec::new( "get_traces", "Get traces", - "List bounded traces or spans from caller-visible trace datasets.", + "List bounded traces or spans from one caller-visible trace dataset.", object_schema( json!({ - "datasets": { "type": "array", "minItems": 1, "maxItems": 10, "items": { "type": "string" } }, + "dataset": string_property("One trace dataset."), "serviceName": { "type": "string" }, "startTime": string_property("RFC3339 range start."), "endTime": string_property("RFC3339 range end."), "limit": { "type": "integer", "minimum": 1, "maximum": 500, "default": 100 } }), - &["startTime", "endTime"], + &["dataset", "startTime", "endTime"], ), ), ToolSpec::new( @@ -467,11 +467,11 @@ pub fn oss_read_tool_specs() -> Vec { object_schema( json!({ "traceId": string_property("Trace ID."), - "datasets": { "type": "array", "minItems": 1, "maxItems": 10, "items": { "type": "string" } }, + "dataset": string_property("One trace dataset."), "startTime": string_property("RFC3339 range start."), "endTime": string_property("RFC3339 range end.") }), - &["traceId", "startTime", "endTime"], + &["traceId", "dataset", "startTime", "endTime"], ), ), ToolSpec::new( From 5e97b33de55242cda360dcd40d93e390b766b122 Mon Sep 17 00:00:00 2001 From: Nikhil Sinha Date: Sun, 11 Oct 2026 19:34:06 +0530 Subject: [PATCH 2/2] coderabbit comment fix --- src/tool_executor.rs | 45 ++++++-------------------------------------- 1 file changed, 6 insertions(+), 39 deletions(-) diff --git a/src/tool_executor.rs b/src/tool_executor.rs index 458f249bc..a68bf88a5 100644 --- a/src/tool_executor.rs +++ b/src/tool_executor.rs @@ -6,14 +6,11 @@ use serde_json::{Value, json}; use ulid::Ulid; use crate::{ - handlers::{ - TelemetryType, - http::{ - alerts, cluster, health_check, logstream, - modal::query::querier_logstream, - query, rbac, role, targets, - users::{dashboards, filters}, - }, + handlers::http::{ + alerts, cluster, health_check, logstream, + modal::query::querier_logstream, + query, rbac, role, targets, + users::{dashboards, filters}, }, parseable::PARSEABLE, prism::logstream::get_prism_logstream_info, @@ -558,42 +555,12 @@ async fn execute_alert_target_tool( } } -fn trace_datasets(arguments: &Value, context: OssToolContext<'_>) -> Vec { - arguments - .get("datasets") - .and_then(Value::as_array) - .map(|datasets| { - datasets - .iter() - .filter_map(Value::as_str) - .take(10) - .map(str::to_owned) - .collect::>() - }) - .filter(|datasets| !datasets.is_empty()) - .unwrap_or_else(|| { - visible_datasets(context.tenant_id, context.session_key) - .into_iter() - .filter(|dataset| { - PARSEABLE - .get_stream(dataset, context.tenant_id) - .is_ok_and(|stream| { - stream.metadata.read().is_ok_and(|metadata| { - metadata.telemetry_type == TelemetryType::Traces - }) - }) - }) - .take(10) - .collect() - }) -} - async fn execute_trace_tool( name: &str, arguments: &Value, context: OssToolContext<'_>, ) -> Result { - let datasets = trace_datasets(arguments, context); + let datasets = [required_string(arguments, "dataset")?.to_owned()]; let start_time = required_string(arguments, "startTime")?.to_owned(); let end_time = required_string(arguments, "endTime")?.to_owned(); let limit = bounded_integer(arguments, "limit", 100, 1, 500) as usize;