@@ -141,10 +141,8 @@ impl SessionFsProvider for InMemorySqliteProvider {
141141 let mut names = std:: collections:: BTreeSet :: new ( ) ;
142142 for p in files. keys ( ) . chain ( dirs. iter ( ) ) {
143143 if let Some ( rest) = p. strip_prefix ( & prefix) {
144- if !rest. is_empty ( ) {
145- if let Some ( name) = rest. split ( '/' ) . next ( ) {
146- names. insert ( name. to_string ( ) ) ;
147- }
144+ if let Some ( name) = rest. split ( '/' ) . next ( ) . filter ( |n| !n. is_empty ( ) ) {
145+ names. insert ( name. to_string ( ) ) ;
148146 }
149147 }
150148 }
@@ -158,21 +156,17 @@ impl SessionFsProvider for InMemorySqliteProvider {
158156 let mut entries: HashMap < String , DirEntryKind > = HashMap :: new ( ) ;
159157 for d in dirs. iter ( ) {
160158 if let Some ( rest) = d. strip_prefix ( & prefix) {
161- if !rest. is_empty ( ) {
162- if let Some ( name) = rest. split ( '/' ) . next ( ) {
163- entries. insert ( name. to_string ( ) , DirEntryKind :: Directory ) ;
164- }
159+ if let Some ( name) = rest. split ( '/' ) . next ( ) . filter ( |n| !n. is_empty ( ) ) {
160+ entries. insert ( name. to_string ( ) , DirEntryKind :: Directory ) ;
165161 }
166162 }
167163 }
168164 for f in files. keys ( ) {
169165 if let Some ( rest) = f. strip_prefix ( & prefix) {
170- if !rest. is_empty ( ) {
171- if let Some ( name) = rest. split ( '/' ) . next ( ) {
172- entries
173- . entry ( name. to_string ( ) )
174- . or_insert ( DirEntryKind :: File ) ;
175- }
166+ if let Some ( name) = rest. split ( '/' ) . next ( ) . filter ( |n| !n. is_empty ( ) ) {
167+ entries
168+ . entry ( name. to_string ( ) )
169+ . or_insert ( DirEntryKind :: File ) ;
176170 }
177171 }
178172 }
@@ -392,43 +386,44 @@ async fn should_route_sql_queries_through_the_sessionfs_sqlite_handler() {
392386 "expected 'Widget' in response"
393387 ) ;
394388
395- let calls = sqlite_calls. lock ( ) . unwrap ( ) ;
396- let session_calls: Vec < & SqliteCall > = calls
397- . iter ( )
398- . filter ( |c| c. session_id == session_id)
399- . collect ( ) ;
400- assert ! ( !session_calls. is_empty( ) , "expected sqlite calls" ) ;
401- assert ! (
402- session_calls
403- . iter( )
404- . any( |c| c. query. to_uppercase( ) . contains( "CREATE TABLE" ) ) ,
405- "expected CREATE TABLE"
406- ) ;
407- assert ! (
408- session_calls
409- . iter( )
410- . any( |c| c. query. to_uppercase( ) . contains( "INSERT" ) ) ,
411- "expected INSERT"
412- ) ;
413- assert ! (
414- session_calls
389+ {
390+ let calls = sqlite_calls. lock ( ) . unwrap ( ) ;
391+ let session_calls: Vec < & SqliteCall > = calls
415392 . iter ( )
416- . any( |c| c. query. to_uppercase( ) . contains( "SELECT" ) ) ,
417- "expected SELECT"
418- ) ;
419- assert ! (
420- session_calls. iter( ) . any( |c| c. query_type == "exec" ) ,
421- "expected exec queryType"
422- ) ;
423- assert ! (
424- session_calls. iter( ) . any( |c| c. query_type == "query" ) ,
425- "expected query queryType"
426- ) ;
427- assert ! (
428- session_calls. iter( ) . any( |c| c. query_type == "run" ) ,
429- "expected run queryType"
430- ) ;
431- drop ( calls) ;
393+ . filter ( |c| c. session_id == session_id)
394+ . collect ( ) ;
395+ assert ! ( !session_calls. is_empty( ) , "expected sqlite calls" ) ;
396+ assert ! (
397+ session_calls
398+ . iter( )
399+ . any( |c| c. query. to_uppercase( ) . contains( "CREATE TABLE" ) ) ,
400+ "expected CREATE TABLE"
401+ ) ;
402+ assert ! (
403+ session_calls
404+ . iter( )
405+ . any( |c| c. query. to_uppercase( ) . contains( "INSERT" ) ) ,
406+ "expected INSERT"
407+ ) ;
408+ assert ! (
409+ session_calls
410+ . iter( )
411+ . any( |c| c. query. to_uppercase( ) . contains( "SELECT" ) ) ,
412+ "expected SELECT"
413+ ) ;
414+ assert ! (
415+ session_calls. iter( ) . any( |c| c. query_type == "exec" ) ,
416+ "expected exec queryType"
417+ ) ;
418+ assert ! (
419+ session_calls. iter( ) . any( |c| c. query_type == "query" ) ,
420+ "expected query queryType"
421+ ) ;
422+ assert ! (
423+ session_calls. iter( ) . any( |c| c. query_type == "run" ) ,
424+ "expected run queryType"
425+ ) ;
426+ }
432427
433428 session. disconnect ( ) . await . expect ( "disconnect session" ) ;
434429 client. stop ( ) . await . expect ( "stop client" ) ;
@@ -469,15 +464,16 @@ async fn should_allow_subagents_to_use_sql_tool_via_inherited_sessionfs() {
469464
470465 session. disconnect ( ) . await . expect ( "disconnect session" ) ;
471466
472- let calls = sqlite_calls. lock ( ) . unwrap ( ) ;
473- let session_calls: Vec < & SqliteCall > =
474- calls. iter ( ) . filter ( |c| c. session_id == session_id) . collect ( ) ;
475- let insert_calls: Vec < & & SqliteCall > = session_calls
476- . iter ( )
477- . filter ( |c| c. query . to_uppercase ( ) . contains ( "INSERT" ) )
478- . collect ( ) ;
479- assert ! ( !insert_calls. is_empty( ) , "expected INSERT calls from subagent" ) ;
480- drop ( calls) ;
467+ {
468+ let calls = sqlite_calls. lock ( ) . unwrap ( ) ;
469+ let session_calls: Vec < & SqliteCall > =
470+ calls. iter ( ) . filter ( |c| c. session_id == session_id) . collect ( ) ;
471+ let insert_calls: Vec < & & SqliteCall > = session_calls
472+ . iter ( )
473+ . filter ( |c| c. query . to_uppercase ( ) . contains ( "INSERT" ) )
474+ . collect ( ) ;
475+ assert ! ( !insert_calls. is_empty( ) , "expected INSERT calls from subagent" ) ;
476+ }
481477
482478 // Read events.jsonl from in-memory FS
483479 let events_path = format ! ( "{}/events.jsonl" , session_state_path_sqlite( ) ) ;
0 commit comments