@@ -68,12 +68,12 @@ impl Tool for Memory {
6868 }
6969
7070 // Ignore all errors to prevent AI completion failure
71- let _ = self . 0 . get ( ) . and_then ( |conn| {
72- conn. execute (
71+ if let Ok ( conn ) = self . 0 . get ( ) {
72+ let _ = conn. execute (
7373 "INSERT OR REPLACE INTO memory (user_id, key, content) VALUES (?, ?, ?)" ,
7474 params ! [ self . 1 , args. memory_name, args. memory_content] ,
75- )
76- } ) ;
75+ ) ;
76+ }
7777 Ok ( ( ) )
7878 }
7979}
@@ -119,12 +119,12 @@ impl Tool for MemoryRemove {
119119 logger. push ( format ! ( "🗑️ reluctantly deleting: {}" , args. memory_name) ) ;
120120 }
121121
122- let conn = self . 0 . get ( ) ? ;
123- conn. execute (
124- "DELETE FROM memory WHERE user_id = ? AND key = ?" ,
125- params ! [ self . 1 , args. memory_name] ,
126- )
127- . map_err ( |err| color_eyre :: eyre :: eyre! ( "Failed to execute SQL query: {}" , err ) ) ? ;
122+ if let Ok ( conn) = self . 0 . get ( ) {
123+ let _ = conn. execute (
124+ "DELETE FROM memory WHERE user_id = ? AND key = ?" ,
125+ params ! [ self . 1 , args. memory_name] ,
126+ ) ;
127+ }
128128 Ok ( ( ) )
129129 }
130130}
@@ -169,27 +169,30 @@ impl Tool for SocialCredit {
169169 logger. push ( format ! ( "{}: {}" , action, args. social_credit. abs( ) ) ) ;
170170 }
171171
172- let mut user = {
173- let db = self . 0 . get ( ) ?;
174- let mut stm = db
175- . prepare ( "SELECT * FROM user WHERE id = ?" )
176- . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to prepare SQL query: {}" , err) ) ?;
177- stm. query_one ( [ self . 1 . to_string ( ) ] , |row| {
178- from_row :: < User > ( row) . map_err ( |_| rusqlite:: Error :: QueryReturnedNoRows )
179- } )
180- . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to query SQL query: {:?}" , err) )
181- . unwrap ( )
182- } ;
183-
184- if args. remove == Some ( true ) && args. social_credit > 0 {
185- args. social_credit = -args. social_credit ;
186- }
172+ // Ignore all errors to prevent AI completion failure
173+ let result = if let Ok ( db) = self . 0 . get ( ) {
174+ if let Ok ( mut stm) = db. prepare ( "SELECT * FROM user WHERE id = ?" ) {
175+ if let Ok ( mut user) = stm. query_one ( [ self . 1 . to_string ( ) ] , |row| {
176+ from_row :: < User > ( row) . map_err ( |_| rusqlite:: Error :: QueryReturnedNoRows )
177+ } ) {
178+ if args. remove == Some ( true ) && args. social_credit > 0 {
179+ args. social_credit = -args. social_credit ;
180+ }
187181
188- user. social_credit += args. social_credit ;
189- user. update_sync ( & * self . 0 . get ( ) ?)
190- . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to update SQL query: {:?}" , err) )
191- . unwrap ( ) ;
192- Ok ( user. social_credit )
182+ user. social_credit += args. social_credit ;
183+ let _ = user. update_sync ( & * db) ;
184+ user. social_credit
185+ } else {
186+ 0
187+ }
188+ } else {
189+ 0
190+ }
191+ } else {
192+ 0
193+ } ;
194+
195+ Ok ( result)
193196 }
194197}
195198
@@ -266,34 +269,43 @@ impl Tool for CrossUserMemory {
266269 logger. push ( format ! ( "🕵️ spying on {}: {}" , args. user_name, args. memory_name) ) ;
267270 }
268271
269- let conn = self . 0 . get ( ) ?;
270-
271- // Try to find user by name using cache first, then database
272- let user_id: u64 = {
273- // First try to find in database
274- let mut stmt = conn. prepare ( "SELECT id FROM user WHERE name = ?" )
275- . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to prepare query: {}" , err) ) ?;
272+ // Ignore all errors to prevent AI completion failure
273+ if let Ok ( conn) = self . 0 . get ( ) {
274+ // Try to find user by name using cache first, then database
275+ let user_id: u64 = {
276+ // First try to find in database
277+ if let Ok ( mut stmt) = conn. prepare ( "SELECT id FROM user WHERE name = ?" ) {
278+ if let Ok ( id) = stmt. query_row ( [ & args. user_name ] , |row| row. get :: < _ , u64 > ( 0 ) ) {
279+ id
280+ } else if let Some ( & user_id) = self . 2 . get ( & args. user_name ) {
281+ // Found in user mentions map
282+ user_id
283+ } else {
284+ // Fallback: create a hash-based ID if user doesn't exist anywhere yet
285+ use std:: collections:: hash_map:: DefaultHasher ;
286+ use std:: hash:: { Hash , Hasher } ;
287+ let mut hasher = DefaultHasher :: new ( ) ;
288+ args. user_name . hash ( & mut hasher) ;
289+ hasher. finish ( )
290+ }
291+ } else if let Some ( & user_id) = self . 2 . get ( & args. user_name ) {
292+ // Found in user mentions map
293+ user_id
294+ } else {
295+ // Fallback: create a hash-based ID if user doesn't exist anywhere yet
296+ use std:: collections:: hash_map:: DefaultHasher ;
297+ use std:: hash:: { Hash , Hasher } ;
298+ let mut hasher = DefaultHasher :: new ( ) ;
299+ args. user_name . hash ( & mut hasher) ;
300+ hasher. finish ( )
301+ }
302+ } ;
276303
277- if let Some ( id) = stmt. query_row ( [ & args. user_name ] , |row| row. get :: < _ , u64 > ( 0 ) ) . ok ( ) {
278- id
279- } else if let Some ( & user_id) = self . 2 . get ( & args. user_name ) {
280- // Found in user mentions map
281- user_id
282- } else {
283- // Fallback: create a hash-based ID if user doesn't exist anywhere yet
284- use std:: collections:: hash_map:: DefaultHasher ;
285- use std:: hash:: { Hash , Hasher } ;
286- let mut hasher = DefaultHasher :: new ( ) ;
287- args. user_name . hash ( & mut hasher) ;
288- hasher. finish ( )
289- }
290- } ;
291-
292- conn. execute (
293- "INSERT OR REPLACE INTO memory (user_id, key, content) VALUES (?, ?, ?)" ,
294- params ! [ user_id, args. memory_name, args. memory_content] ,
295- )
296- . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to execute SQL query: {}" , err) ) ?;
304+ let _ = conn. execute (
305+ "INSERT OR REPLACE INTO memory (user_id, key, content) VALUES (?, ?, ?)" ,
306+ params ! [ user_id, args. memory_name, args. memory_content] ,
307+ ) ;
308+ }
297309 Ok ( ( ) )
298310 }
299311}
@@ -332,34 +344,43 @@ impl Tool for CrossUserMemoryRemove {
332344 logger. push ( format ! ( "🗑️ reluctantly deleting dirt on {}: {}" , args. user_name, args. memory_name) ) ;
333345 }
334346
335- let conn = self . 0 . get ( ) ?;
336-
337- // Try to find user by name using cache first, then database
338- let user_id: u64 = {
339- // First try to find in database
340- let mut stmt = conn. prepare ( "SELECT id FROM user WHERE name = ?" )
341- . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to prepare query: {}" , err) ) ?;
347+ // Ignore all errors to prevent AI completion failure
348+ if let Ok ( conn) = self . 0 . get ( ) {
349+ // Try to find user by name using cache first, then database
350+ let user_id: u64 = {
351+ // First try to find in database
352+ if let Ok ( mut stmt) = conn. prepare ( "SELECT id FROM user WHERE name = ?" ) {
353+ if let Ok ( id) = stmt. query_row ( [ & args. user_name ] , |row| row. get :: < _ , u64 > ( 0 ) ) {
354+ id
355+ } else if let Some ( & user_id) = self . 2 . get ( & args. user_name ) {
356+ // Found in user mentions map
357+ user_id
358+ } else {
359+ // Fallback: create a hash-based ID if user doesn't exist anywhere yet
360+ use std:: collections:: hash_map:: DefaultHasher ;
361+ use std:: hash:: { Hash , Hasher } ;
362+ let mut hasher = DefaultHasher :: new ( ) ;
363+ args. user_name . hash ( & mut hasher) ;
364+ hasher. finish ( )
365+ }
366+ } else if let Some ( & user_id) = self . 2 . get ( & args. user_name ) {
367+ // Found in user mentions map
368+ user_id
369+ } else {
370+ // Fallback: create a hash-based ID if user doesn't exist anywhere yet
371+ use std:: collections:: hash_map:: DefaultHasher ;
372+ use std:: hash:: { Hash , Hasher } ;
373+ let mut hasher = DefaultHasher :: new ( ) ;
374+ args. user_name . hash ( & mut hasher) ;
375+ hasher. finish ( )
376+ }
377+ } ;
342378
343- if let Some ( id) = stmt. query_row ( [ & args. user_name ] , |row| row. get :: < _ , u64 > ( 0 ) ) . ok ( ) {
344- id
345- } else if let Some ( & user_id) = self . 2 . get ( & args. user_name ) {
346- // Found in user mentions map
347- user_id
348- } else {
349- // Fallback: create a hash-based ID if user doesn't exist anywhere yet
350- use std:: collections:: hash_map:: DefaultHasher ;
351- use std:: hash:: { Hash , Hasher } ;
352- let mut hasher = DefaultHasher :: new ( ) ;
353- args. user_name . hash ( & mut hasher) ;
354- hasher. finish ( )
355- }
356- } ;
357-
358- conn. execute (
359- "DELETE FROM memory WHERE user_id = ? AND key = ?" ,
360- params ! [ user_id, args. memory_name] ,
361- )
362- . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to execute SQL query: {}" , err) ) ?;
379+ let _ = conn. execute (
380+ "DELETE FROM memory WHERE user_id = ? AND key = ?" ,
381+ params ! [ user_id, args. memory_name] ,
382+ ) ;
383+ }
363384 Ok ( ( ) )
364385 }
365386}
@@ -394,23 +415,26 @@ impl Tool for BraveSearch {
394415 logger. push ( format ! ( "🔍 searching for ammo: \" {}\" " , args. query) ) ;
395416 }
396417
397- let results = self
398- . 0
399- . search ( & args. query )
400- . await
401- . map_err ( |e| color_eyre:: eyre:: eyre!( format!( "Brave API error: {e}" ) ) ) ?;
402- let results_json: Vec < _ > = results
403- . into_iter ( )
404- . map ( |r| {
405- json ! ( {
406- "title" : r. title,
407- "url" : r. url,
408- "description" : r. description
409- } )
410- } )
411- . collect ( ) ;
412- println ! ( "Results: {:#?}" , results_json) ;
413- Ok ( json ! ( results_json) )
418+ // Ignore all errors to prevent AI completion failure
419+ let results_json = match self . 0 . search ( & args. query ) . await {
420+ Ok ( results) => {
421+ let results_json: Vec < _ > = results
422+ . into_iter ( )
423+ . map ( |r| {
424+ json ! ( {
425+ "title" : r. title,
426+ "url" : r. url,
427+ "description" : r. description
428+ } )
429+ } )
430+ . collect ( ) ;
431+ println ! ( "Results: {:#?}" , results_json) ;
432+ json ! ( results_json)
433+ }
434+ Err ( _) => json ! ( [ ] ) // Return empty array on error
435+ } ;
436+
437+ Ok ( results_json)
414438 }
415439}
416440
0 commit comments