@@ -40,6 +40,7 @@ use shinkai_message_primitives::{
4040 } ,
4141} ;
4242use shinkai_sqlite:: { errors:: SqliteManagerError , SqliteManager } ;
43+ use rusqlite:: Error as RusqliteError ;
4344use shinkai_tools_primitives:: tools:: {
4445 deno_tools:: DenoTool ,
4546 error:: ToolError ,
@@ -164,7 +165,7 @@ impl Node {
164165 let vector_start_time = Instant :: now ( ) ;
165166
166167 // Use different search method based on whether we have allowed_tools
167- let vector_search_result = if let Some ( tools) = allowed_tools {
168+ let vector_search_res = if let Some ( tools) = allowed_tools {
168169 // First generate the embedding from the query
169170 let embedding = db
170171 . generate_embeddings ( & sanitized_query)
@@ -186,10 +187,24 @@ impl Node {
186187
187188 // Start the timer for FTS search
188189 let fts_start_time = Instant :: now ( ) ;
189- let fts_search_result = db. search_tools_fts ( & sanitized_query) ;
190+ let fts_search_res = db. search_tools_fts ( & sanitized_query) ;
190191 let fts_elapsed_time = fts_start_time. elapsed ( ) ;
191192 println ! ( "Time taken for FTS search: {:?}" , fts_elapsed_time) ;
192193
194+ let vector_search_result = match vector_search_res {
195+ Ok ( v) => Ok ( v) ,
196+ Err ( SqliteManagerError :: ToolNotFound ( _) )
197+ | Err ( SqliteManagerError :: DatabaseError ( RusqliteError :: QueryReturnedNoRows ) ) => Ok ( Vec :: new ( ) ) ,
198+ Err ( e) => Err ( e) ,
199+ } ;
200+
201+ let fts_search_result = match fts_search_res {
202+ Ok ( v) => Ok ( v) ,
203+ Err ( SqliteManagerError :: ToolNotFound ( _) )
204+ | Err ( SqliteManagerError :: DatabaseError ( RusqliteError :: QueryReturnedNoRows ) ) => Ok ( Vec :: new ( ) ) ,
205+ Err ( e) => Err ( e) ,
206+ } ;
207+
193208 match ( vector_search_result, fts_search_result) {
194209 ( Ok ( vector_tools) , Ok ( fts_tools) ) => {
195210 let mut combined_tools = Vec :: new ( ) ;
0 commit comments