@@ -811,8 +811,18 @@ fn timestamp_argument_error(name: &str) -> TraceDecayError {
811811 ) )
812812}
813813
814- fn provider_arg ( args : & Value ) -> & str {
815- string_arg ( args, "provider" ) . unwrap_or ( "cursor" )
814+ fn provider_or_all_arg ( args : & Value ) -> & str {
815+ optional_search_provider_arg ( args) . unwrap_or ( "all" )
816+ }
817+
818+ fn required_specific_provider_arg ( args : & Value ) -> Result < & str > {
819+ match string_arg ( args, "provider" ) {
820+ Some ( "all" ) => Err ( argument_error (
821+ "provider must name a specific provider for this tool" ,
822+ ) ) ,
823+ Some ( provider) => Ok ( provider) ,
824+ None => Err ( argument_error ( "provider is required for this tool" ) ) ,
825+ }
816826}
817827
818828fn optional_search_provider_arg ( args : & Value ) -> Option < & str > {
@@ -1270,15 +1280,10 @@ fn parse_lcm_scope(args: &Value) -> Result<LcmScope> {
12701280 }
12711281}
12721282
1273- fn lcm_grep_provider_arg ( args : & Value , scope : LcmScope ) -> & str {
1283+ fn lcm_grep_provider_arg ( args : & Value ) -> & str {
12741284 if let Some ( provider) = optional_search_provider_arg ( args) {
12751285 return provider;
12761286 }
1277- if matches ! ( scope, LcmScope :: Current | LcmScope :: Session )
1278- && string_arg ( args, "provider" ) . is_none ( )
1279- {
1280- return provider_arg ( args) ;
1281- }
12821287 "all"
12831288}
12841289
@@ -1507,7 +1512,7 @@ pub(super) async fn handle_lcm_status(
15071512 context : LcmHandlerContext < ' _ > ,
15081513 args : Value ,
15091514) -> Result < ToolResult > {
1510- let provider = provider_arg ( & args) ;
1515+ let provider = provider_or_all_arg ( & args) ;
15111516 let session_id = string_arg ( & args, "session_id" ) ;
15121517 let deep = bool_arg ( & args, "deep" ) ?. unwrap_or ( false ) ;
15131518 let gc_config = lcm_gc_config ( & args) ?;
@@ -1534,7 +1539,7 @@ pub(super) async fn handle_lcm_doctor(
15341539 context : LcmHandlerContext < ' _ > ,
15351540 args : Value ,
15361541) -> Result < ToolResult > {
1537- let provider = provider_arg ( & args) ;
1542+ let provider = required_specific_provider_arg ( & args) ? ;
15381543 let session_id = string_arg ( & args, "session_id" ) ;
15391544 let mode = lcm_doctor_mode ( & args) ?;
15401545 let apply = args. get ( "apply" ) . and_then ( Value :: as_bool) . unwrap_or ( false ) ;
@@ -1629,7 +1634,7 @@ pub(super) async fn handle_lcm_load_session(
16291634 context : LcmHandlerContext < ' _ > ,
16301635 args : Value ,
16311636) -> Result < ToolResult > {
1632- let provider = provider_arg ( & args) ;
1637+ let provider = provider_or_all_arg ( & args) ;
16331638 let session_id = required_string_arg ( & args, "session_id" ) ?;
16341639 let ( content_slice, content_limit_clamped_from) = lcm_load_content_slice ( & args) ?;
16351640 let storage = lcm_open_storage_ro ! ( context, & args) ;
@@ -1682,7 +1687,7 @@ pub(super) async fn handle_lcm_grep(
16821687 // Validate scope before opening storage so argument errors are reported
16831688 // even when the sessions DB does not exist yet.
16841689 let scope = parse_lcm_scope ( & args) ?;
1685- let provider = lcm_grep_provider_arg ( & args, scope ) ;
1690+ let provider = lcm_grep_provider_arg ( & args) ;
16861691 let storage = lcm_open_storage_ro ! ( context, & args) ;
16871692 let hits = storage
16881693 . db
@@ -1721,7 +1726,7 @@ pub(super) async fn handle_lcm_describe(
17211726 context : LcmHandlerContext < ' _ > ,
17221727 args : Value ,
17231728) -> Result < ToolResult > {
1724- let provider = provider_arg ( & args) ;
1729+ let provider = required_specific_provider_arg ( & args) ? ;
17251730 let session_id = required_string_arg ( & args, "session_id" ) ?;
17261731 // Validate target before opening storage so argument errors are reported
17271732 // even when the sessions DB does not exist yet.
@@ -1751,7 +1756,7 @@ pub(super) async fn handle_lcm_expand(
17511756 context : LcmHandlerContext < ' _ > ,
17521757 args : Value ,
17531758) -> Result < ToolResult > {
1754- let provider = provider_arg ( & args) ;
1759+ let provider = required_specific_provider_arg ( & args) ? ;
17551760 let session_id = required_string_arg ( & args, "session_id" ) ?;
17561761 let target = parse_lcm_expand_target ( & args) ?;
17571762 let storage = lcm_open_storage_ro ! ( context, & args) ;
@@ -1782,7 +1787,7 @@ pub(super) async fn handle_lcm_expand_query(
17821787 context : LcmHandlerContext < ' _ > ,
17831788 args : Value ,
17841789) -> Result < ToolResult > {
1785- let provider = provider_arg ( & args) ;
1790+ let provider = required_specific_provider_arg ( & args) ? ;
17861791 let session_id = required_string_arg ( & args, "session_id" ) ?;
17871792 let prompt = required_string_arg ( & args, "prompt" ) ?;
17881793 let max_results =
@@ -1835,7 +1840,7 @@ pub(super) async fn handle_lcm_session_boundary(
18351840 context : LcmHandlerContext < ' _ > ,
18361841 args : Value ,
18371842) -> Result < ToolResult > {
1838- let provider = provider_arg ( & args) ;
1843+ let provider = required_specific_provider_arg ( & args) ? ;
18391844 let session_id = required_string_arg ( & args, "session_id" ) ?;
18401845 let storage = lcm_open_storage ! ( context, & args) ;
18411846 let response = storage
@@ -1866,7 +1871,7 @@ pub(super) async fn handle_lcm_preflight(
18661871 context : LcmHandlerContext < ' _ > ,
18671872 args : Value ,
18681873) -> Result < ToolResult > {
1869- let provider = provider_arg ( & args) ;
1874+ let provider = required_specific_provider_arg ( & args) ? ;
18701875 let session_id = required_string_arg ( & args, "session_id" ) ?;
18711876 let storage = lcm_open_storage ! ( context, & args) ;
18721877 let response = storage
@@ -1907,7 +1912,7 @@ pub(super) async fn handle_lcm_compress(
19071912 context : LcmHandlerContext < ' _ > ,
19081913 args : Value ,
19091914) -> Result < ToolResult > {
1910- let provider = provider_arg ( & args) ;
1915+ let provider = required_specific_provider_arg ( & args) ? ;
19111916 let session_id = required_string_arg ( & args, "session_id" ) ?;
19121917 let response_handle_root = lcm_response_handle_root ( context. project_root , & args) ;
19131918 let storage = lcm_open_storage ! ( context, & args) ;
0 commit comments