@@ -35,11 +35,7 @@ fn age_memories_to_recent(conn: &Connection) -> usize {
3535 )
3636 . and_then ( |mut stmt| {
3737 let mapped = stmt. query_map ( params ! [ FRESH_DAYS ] , |row| {
38- Ok ( (
39- row. get :: < _ , i64 > ( 0 ) ?,
40- row. get :: < _ , String > ( 1 ) ?,
41- row. get :: < _ , Option < String > > ( 2 ) ?,
42- ) )
38+ Ok ( ( row. get :: < _ , i64 > ( 0 ) ?, row. get :: < _ , String > ( 1 ) ?, row. get :: < _ , Option < String > > ( 2 ) ?) )
4339 } ) ?;
4440 Ok ( mapped. flatten ( ) . collect ( ) )
4541 } )
@@ -51,9 +47,10 @@ fn age_memories_to_recent(conn: &Connection) -> usize {
5147 }
5248 }
5349 let compressed = compress_to_key_points ( & text) ;
54- let _=conn. execute (
55- "UPDATE memories SET compressed_text = ?1, age_tier = 'recent', updated_at = datetime('now') WHERE id = ?2" , params ! [ compressed, id]
56- , ) ;
50+ let _ = conn. execute (
51+ "UPDATE memories SET compressed_text = ?1, age_tier = 'recent', updated_at = datetime('now') WHERE id = ?2" ,
52+ params ! [ compressed, id] ,
53+ ) ;
5754 count += 1 ;
5855 }
5956 count
@@ -69,11 +66,7 @@ fn age_memories_to_old(conn: &Connection) -> usize {
6966 )
7067 . and_then ( |mut stmt| {
7168 let mapped = stmt. query_map ( params ! [ RECENT_DAYS ] , |row| {
72- Ok ( (
73- row. get :: < _ , i64 > ( 0 ) ?,
74- row. get :: < _ , String > ( 1 ) ?,
75- row. get :: < _ , Option < String > > ( 2 ) ?,
76- ) )
69+ Ok ( ( row. get :: < _ , i64 > ( 0 ) ?, row. get :: < _ , String > ( 1 ) ?, row. get :: < _ , Option < String > > ( 2 ) ?) )
7770 } ) ?;
7871 Ok ( mapped. flatten ( ) . collect ( ) )
7972 } )
@@ -85,20 +78,23 @@ fn age_memories_to_old(conn: &Connection) -> usize {
8578 }
8679 }
8780 let compressed = compress_to_one_liner ( & text) ;
88- let _=conn.
89- execute ( "UPDATE memories SET compressed_text = ?1, age_tier = 'old', updated_at = datetime('now') WHERE id = ?2" , params ! [
90- compressed, id] , ) ;
81+ let _ = conn. execute (
82+ "UPDATE memories SET compressed_text = ?1, age_tier = 'old', updated_at = datetime('now') WHERE id = ?2" ,
83+ params ! [ compressed, id] ,
84+ ) ;
9185 count += 1 ;
9286 }
9387 count
9488}
9589fn archive_ancient_memories ( conn : & Connection ) -> usize {
9690 conn. execute (
97- "UPDATE memories SET status = 'archived', age_tier = 'ancient', updated_at = datetime('now') \
91+ "UPDATE memories SET status = 'archived', age_tier = 'ancient', updated_at = datetime('now') \
9892 WHERE status = 'active' AND pinned = 0 \
9993 AND age_tier = 'old' \
100- AND julianday('now') - julianday(COALESCE(updated_at, created_at)) > ?1"
101- , params ! [ OLD_DAYS ] , ) . unwrap_or ( 0 )
94+ AND julianday('now') - julianday(COALESCE(updated_at, created_at)) > ?1",
95+ params ! [ OLD_DAYS ] ,
96+ )
97+ . unwrap_or ( 0 )
10298}
10399fn age_decisions_to_recent ( conn : & Connection ) -> usize {
104100 let mut count = 0 ;
@@ -111,11 +107,7 @@ fn age_decisions_to_recent(conn: &Connection) -> usize {
111107 )
112108 . and_then ( |mut stmt| {
113109 let mapped = stmt. query_map ( params ! [ FRESH_DAYS ] , |row| {
114- Ok ( (
115- row. get :: < _ , i64 > ( 0 ) ?,
116- row. get :: < _ , String > ( 1 ) ?,
117- row. get :: < _ , Option < String > > ( 2 ) ?,
118- ) )
110+ Ok ( ( row. get :: < _ , i64 > ( 0 ) ?, row. get :: < _ , String > ( 1 ) ?, row. get :: < _ , Option < String > > ( 2 ) ?) )
119111 } ) ?;
120112 Ok ( mapped. flatten ( ) . collect ( ) )
121113 } )
@@ -126,9 +118,10 @@ fn age_decisions_to_recent(conn: &Connection) -> usize {
126118 None => decision,
127119 } ;
128120 let compressed = compress_to_key_points ( & full) ;
129- let _=conn.
130- execute ( "UPDATE decisions SET compressed_text = ?1, age_tier = 'recent', updated_at = datetime('now') WHERE id = ?2" , params ! [
131- compressed, id] , ) ;
121+ let _ = conn. execute (
122+ "UPDATE decisions SET compressed_text = ?1, age_tier = 'recent', updated_at = datetime('now') WHERE id = ?2" ,
123+ params ! [ compressed, id] ,
124+ ) ;
132125 count += 1 ;
133126 }
134127 count
@@ -144,11 +137,7 @@ fn age_decisions_to_old(conn: &Connection) -> usize {
144137 )
145138 . and_then ( |mut stmt| {
146139 let mapped = stmt. query_map ( params ! [ RECENT_DAYS ] , |row| {
147- Ok ( (
148- row. get :: < _ , i64 > ( 0 ) ?,
149- row. get :: < _ , String > ( 1 ) ?,
150- row. get :: < _ , Option < String > > ( 2 ) ?,
151- ) )
140+ Ok ( ( row. get :: < _ , i64 > ( 0 ) ?, row. get :: < _ , String > ( 1 ) ?, row. get :: < _ , Option < String > > ( 2 ) ?) )
152141 } ) ?;
153142 Ok ( mapped. flatten ( ) . collect ( ) )
154143 } )
@@ -159,27 +148,26 @@ fn age_decisions_to_old(conn: &Connection) -> usize {
159148 None => decision,
160149 } ;
161150 let compressed = compress_to_one_liner ( & full) ;
162- let _=conn
163- . execute ( "UPDATE decisions SET compressed_text = ?1, age_tier = 'old', updated_at = datetime('now') WHERE id = ?2" , params ! [
164- compressed, id] , ) ;
151+ let _ = conn. execute (
152+ "UPDATE decisions SET compressed_text = ?1, age_tier = 'old', updated_at = datetime('now') WHERE id = ?2" ,
153+ params ! [ compressed, id] ,
154+ ) ;
165155 count += 1 ;
166156 }
167157 count
168158}
169159fn archive_ancient_decisions ( conn : & Connection ) -> usize {
170160 conn. execute (
171- "UPDATE decisions SET status = 'archived', age_tier = 'ancient', updated_at = datetime('now') \
161+ "UPDATE decisions SET status = 'archived', age_tier = 'ancient', updated_at = datetime('now') \
172162 WHERE status = 'active' AND pinned = 0 \
173163 AND age_tier = 'old' \
174- AND julianday('now') - julianday(COALESCE(updated_at, created_at)) > ?1"
175- , params ! [ OLD_DAYS ] , ) . unwrap_or ( 0 )
164+ AND julianday('now') - julianday(COALESCE(updated_at, created_at)) > ?1",
165+ params ! [ OLD_DAYS ] ,
166+ )
167+ . unwrap_or ( 0 )
176168}
177169fn compress_to_key_points ( text : & str ) -> String {
178- let sentences: Vec < & str > = text
179- . split ( [ '.' , '\n' ] )
180- . map ( |s| s. trim ( ) )
181- . filter ( |s| s. len ( ) > 5 )
182- . collect ( ) ;
170+ let sentences: Vec < & str > = text. split ( [ '.' , '\n' ] ) . map ( |s| s. trim ( ) ) . filter ( |s| s. len ( ) > 5 ) . collect ( ) ;
183171 if sentences. len ( ) <= 2 {
184172 return text. chars ( ) . take ( 300 ) . collect ( ) ;
185173 }
@@ -218,52 +206,55 @@ fn compress_to_key_points(text: &str) -> String {
218206 }
219207}
220208fn compress_to_one_liner ( text : & str ) -> String {
221- let first_sentence = text
222- . split ( [ '.' , '\n' ] )
223- . map ( |s| s. trim ( ) )
224- . find ( |s| s. len ( ) > 5 )
225- . unwrap_or ( text) ;
209+ let first_sentence = text. split ( [ '.' , '\n' ] ) . map ( |s| s. trim ( ) ) . find ( |s| s. len ( ) > 5 ) . unwrap_or ( text) ;
226210 first_sentence. chars ( ) . take ( 120 ) . collect ( )
227211}
228212fn gc_low_score ( conn : & Connection ) -> usize {
229213 let mut count = 0usize ;
230- count+= conn. execute
231- (
232- "UPDATE memories SET status = 'archived', age_tier = 'ancient', updated_at = datetime('now') \
214+ count += conn
215+ . execute (
216+ "UPDATE memories SET status = 'archived', age_tier = 'ancient', updated_at = datetime('now') \
233217 WHERE status = 'active' AND pinned = 0 \
234218 AND score < ?1 \
235- AND julianday('now') - julianday(COALESCE(last_accessed, created_at)) > ?2"
236- , params ! [ GC_SCORE_THRESHOLD , GC_MIN_DAYS ] , ) . unwrap_or ( 0 ) ;
237- count+=conn. execute (
238- "UPDATE decisions SET status = 'archived', age_tier = 'ancient', updated_at = datetime('now') \
219+ AND julianday('now') - julianday(COALESCE(last_accessed, created_at)) > ?2",
220+ params ! [ GC_SCORE_THRESHOLD , GC_MIN_DAYS ] ,
221+ )
222+ . unwrap_or ( 0 ) ;
223+ count += conn
224+ . execute (
225+ "UPDATE decisions SET status = 'archived', age_tier = 'ancient', updated_at = datetime('now') \
239226 WHERE status = 'active' AND pinned = 0 \
240227 AND score < ?1 \
241- AND julianday('now') - julianday(COALESCE(last_accessed, created_at)) > ?2"
242- , params ! [ GC_SCORE_THRESHOLD , GC_MIN_DAYS ] , ) . unwrap_or ( 0 ) ;
228+ AND julianday('now') - julianday(COALESCE(last_accessed, created_at)) > ?2",
229+ params ! [ GC_SCORE_THRESHOLD , GC_MIN_DAYS ] ,
230+ )
231+ . unwrap_or ( 0 ) ;
243232 if count > 0 {
244233 eprintln ! ( "[aging] GC archived {count} low-score entries (score < {GC_SCORE_THRESHOLD})" ) ;
245234 }
246235 count
247236}
248237fn cleanup_orphaned_embeddings ( conn : & Connection ) -> usize {
249238 let mut count = 0usize ;
250- count+=conn. execute (
251- "DELETE FROM embeddings WHERE target_type = 'memory' \
252- AND NOT EXISTS (SELECT 1 FROM memories m WHERE m.id = embeddings.target_id AND m.status = 'active')"
253- , [ ] , ) . unwrap_or ( 0 ) ;
254- count+=conn. execute (
255- "DELETE FROM embeddings WHERE target_type = 'decision' \
256- AND NOT EXISTS (SELECT 1 FROM decisions d WHERE d.id = embeddings.target_id AND d.status = 'active')"
257- , [ ] , ) . unwrap_or ( 0 ) ;
239+ count += conn
240+ . execute (
241+ "DELETE FROM embeddings WHERE target_type = 'memory' \
242+ AND NOT EXISTS (SELECT 1 FROM memories m WHERE m.id = embeddings.target_id AND m.status = 'active')",
243+ [ ] ,
244+ )
245+ . unwrap_or ( 0 ) ;
246+ count += conn
247+ . execute (
248+ "DELETE FROM embeddings WHERE target_type = 'decision' \
249+ AND NOT EXISTS (SELECT 1 FROM decisions d WHERE d.id = embeddings.target_id AND d.status = 'active')",
250+ [ ] ,
251+ )
252+ . unwrap_or ( 0 ) ;
258253 count
259254}
260255pub fn get_display_text ( text : & str , compressed_text : & Option < String > , age_tier : & str ) -> String {
261256 match age_tier {
262257 "fresh" => text. to_string ( ) ,
263- _ => compressed_text
264- . as_ref ( )
265- . filter ( |c| !c. is_empty ( ) )
266- . cloned ( )
267- . unwrap_or_else ( || text. to_string ( ) ) ,
258+ _ => compressed_text. as_ref ( ) . filter ( |c| !c. is_empty ( ) ) . cloned ( ) . unwrap_or_else ( || text. to_string ( ) ) ,
268259 }
269260}
0 commit comments