@timmeck/brain-core 2.36.84 → 2.36.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dream/consolidator.d.ts +7 -1
- package/dist/dream/consolidator.js +81 -0
- package/dist/dream/consolidator.js.map +1 -1
- package/dist/dream/dream-engine.js +24 -3
- package/dist/dream/dream-engine.js.map +1 -1
- package/dist/dream/index.d.ts +1 -1
- package/dist/dream/types.d.ts +6 -0
- package/dist/experiments/experiment-ledger.d.ts +85 -0
- package/dist/experiments/experiment-ledger.js +195 -0
- package/dist/experiments/experiment-ledger.js.map +1 -0
- package/dist/experiments/index.d.ts +2 -0
- package/dist/experiments/index.js +2 -0
- package/dist/experiments/index.js.map +1 -0
- package/dist/hypothesis/engine.d.ts +8 -2
- package/dist/hypothesis/engine.js +21 -1
- package/dist/hypothesis/engine.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/conversation-memory.d.ts +27 -0
- package/dist/memory/conversation-memory.js +235 -7
- package/dist/memory/conversation-memory.js.map +1 -1
- package/dist/memory/retrieval-maintenance.d.ts +57 -0
- package/dist/memory/retrieval-maintenance.js +201 -0
- package/dist/memory/retrieval-maintenance.js.map +1 -0
- package/dist/memory/types.d.ts +1 -1
- package/package.json +1 -1
|
@@ -80,6 +80,32 @@ export function runConversationMemoryMigration(db) {
|
|
|
80
80
|
);
|
|
81
81
|
CREATE INDEX IF NOT EXISTS idx_conv_sess_id ON conversation_sessions(session_id);
|
|
82
82
|
`);
|
|
83
|
+
// Add last_processed_at for transcript state tracking (replaces flat-file)
|
|
84
|
+
try {
|
|
85
|
+
db.exec(`ALTER TABLE conversation_sessions ADD COLUMN last_processed_at TEXT`);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Column already exists
|
|
89
|
+
}
|
|
90
|
+
// Retrieval metadata columns (Session 130: Typed Memory)
|
|
91
|
+
try {
|
|
92
|
+
db.exec(`ALTER TABLE conversation_memories ADD COLUMN use_count INTEGER NOT NULL DEFAULT 0`);
|
|
93
|
+
}
|
|
94
|
+
catch { /* exists */ }
|
|
95
|
+
try {
|
|
96
|
+
db.exec(`ALTER TABLE conversation_memories ADD COLUMN last_used_at TEXT`);
|
|
97
|
+
}
|
|
98
|
+
catch { /* exists */ }
|
|
99
|
+
try {
|
|
100
|
+
db.exec(`ALTER TABLE conversation_memories ADD COLUMN last_retrieval_score REAL`);
|
|
101
|
+
}
|
|
102
|
+
catch { /* exists */ }
|
|
103
|
+
try {
|
|
104
|
+
db.exec(`ALTER TABLE conversation_memories ADD COLUMN archive_candidate INTEGER NOT NULL DEFAULT 0`);
|
|
105
|
+
}
|
|
106
|
+
catch { /* exists */ }
|
|
107
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_conv_mem_archive ON conversation_memories(archive_candidate)`);
|
|
108
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_conv_mem_use ON conversation_memories(use_count DESC)`);
|
|
83
109
|
}
|
|
84
110
|
// ── Engine ────────────────────────────────────────────────
|
|
85
111
|
const RAG_COLLECTION = 'conversation_memory';
|
|
@@ -90,6 +116,7 @@ export class ConversationMemory {
|
|
|
90
116
|
rag = null;
|
|
91
117
|
journal = null;
|
|
92
118
|
kg = null;
|
|
119
|
+
maintenanceTimer = null;
|
|
93
120
|
// Prepared statements
|
|
94
121
|
stmtInsert;
|
|
95
122
|
stmtGetById;
|
|
@@ -109,11 +136,12 @@ export class ConversationMemory {
|
|
|
109
136
|
stmtSessionEnd;
|
|
110
137
|
stmtSessionGet;
|
|
111
138
|
stmtSessionCountMemories;
|
|
139
|
+
stmtIncrementUseCount;
|
|
112
140
|
constructor(db, config = {}) {
|
|
113
141
|
this.db = db;
|
|
114
142
|
this.config = {
|
|
115
|
-
maxMemories: config.maxMemories ??
|
|
116
|
-
decayDays: config.decayDays ??
|
|
143
|
+
maxMemories: config.maxMemories ?? 30_000,
|
|
144
|
+
decayDays: config.decayDays ?? 60,
|
|
117
145
|
defaultImportance: config.defaultImportance ?? 5,
|
|
118
146
|
};
|
|
119
147
|
runConversationMemoryMigration(db);
|
|
@@ -150,6 +178,10 @@ export class ConversationMemory {
|
|
|
150
178
|
this.stmtSessionEnd = db.prepare("UPDATE conversation_sessions SET ended_at = datetime('now'), summary = ? WHERE session_id = ?");
|
|
151
179
|
this.stmtSessionGet = db.prepare('SELECT * FROM conversation_sessions WHERE session_id = ?');
|
|
152
180
|
this.stmtSessionCountMemories = db.prepare('SELECT COUNT(*) as count FROM conversation_memories WHERE session_id = ?');
|
|
181
|
+
this.stmtIncrementUseCount = db.prepare(`
|
|
182
|
+
UPDATE conversation_memories SET use_count = use_count + 1, last_used_at = datetime('now')
|
|
183
|
+
WHERE id = ?
|
|
184
|
+
`);
|
|
153
185
|
}
|
|
154
186
|
// ── Setters ────────────────────────────────────────────
|
|
155
187
|
setRAG(rag) { this.rag = rag; }
|
|
@@ -301,30 +333,46 @@ export class ConversationMemory {
|
|
|
301
333
|
/** Build a context summary for the LLM (for session start). */
|
|
302
334
|
buildContext(limit = 30) {
|
|
303
335
|
const parts = [];
|
|
336
|
+
const usedIds = [];
|
|
304
337
|
parts.push('# Brain Memory Context\n');
|
|
305
338
|
// Decisions
|
|
306
339
|
const decisions = this.getByCategory('decision', 5);
|
|
307
340
|
if (decisions.length > 0) {
|
|
308
341
|
parts.push('## Key Decisions');
|
|
309
|
-
for (const m of decisions)
|
|
342
|
+
for (const m of decisions) {
|
|
310
343
|
parts.push(`- ${m.key ?? m.content.slice(0, 100)}`);
|
|
344
|
+
usedIds.push(m.id);
|
|
345
|
+
}
|
|
311
346
|
parts.push('');
|
|
312
347
|
}
|
|
313
348
|
// Preferences
|
|
314
349
|
const prefs = this.getByCategory('preference', 5);
|
|
315
350
|
if (prefs.length > 0) {
|
|
316
351
|
parts.push('## Preferences');
|
|
317
|
-
for (const m of prefs)
|
|
352
|
+
for (const m of prefs) {
|
|
318
353
|
parts.push(`- ${m.key ?? m.content.slice(0, 100)}`);
|
|
354
|
+
usedIds.push(m.id);
|
|
355
|
+
}
|
|
356
|
+
parts.push('');
|
|
357
|
+
}
|
|
358
|
+
// Constraints (Session 130: Typed Memory)
|
|
359
|
+
const constraints = this.getByCategory('constraint', 5);
|
|
360
|
+
if (constraints.length > 0) {
|
|
361
|
+
parts.push('## Constraints');
|
|
362
|
+
for (const m of constraints) {
|
|
363
|
+
parts.push(`- ${m.key ?? m.content.slice(0, 100)}`);
|
|
364
|
+
usedIds.push(m.id);
|
|
365
|
+
}
|
|
319
366
|
parts.push('');
|
|
320
367
|
}
|
|
321
368
|
// Recent context
|
|
322
|
-
const recent = this.getRecentContext(Math.max(5, limit - decisions.length - prefs.length));
|
|
369
|
+
const recent = this.getRecentContext(Math.max(5, limit - decisions.length - prefs.length - constraints.length));
|
|
323
370
|
if (recent.length > 0) {
|
|
324
371
|
parts.push('## Recent Context');
|
|
325
372
|
for (const m of recent) {
|
|
326
373
|
const tag = m.tags.length > 0 ? ` [${m.tags.join(', ')}]` : '';
|
|
327
374
|
parts.push(`- [${m.category}] ${m.content.slice(0, 150)}${tag}`);
|
|
375
|
+
usedIds.push(m.id);
|
|
328
376
|
}
|
|
329
377
|
parts.push('');
|
|
330
378
|
}
|
|
@@ -332,19 +380,146 @@ export class ConversationMemory {
|
|
|
332
380
|
const goals = this.getByCategory('goal', 3);
|
|
333
381
|
if (goals.length > 0) {
|
|
334
382
|
parts.push('## Active Goals');
|
|
335
|
-
for (const m of goals)
|
|
383
|
+
for (const m of goals) {
|
|
336
384
|
parts.push(`- ${m.content.slice(0, 100)}`);
|
|
385
|
+
usedIds.push(m.id);
|
|
386
|
+
}
|
|
337
387
|
parts.push('');
|
|
338
388
|
}
|
|
339
389
|
// Lessons
|
|
340
390
|
const lessons = this.getByCategory('lesson', 5);
|
|
341
391
|
if (lessons.length > 0) {
|
|
342
392
|
parts.push('## Lessons Learned');
|
|
343
|
-
for (const m of lessons)
|
|
393
|
+
for (const m of lessons) {
|
|
344
394
|
parts.push(`- ${m.content.slice(0, 100)}`);
|
|
395
|
+
usedIds.push(m.id);
|
|
396
|
+
}
|
|
397
|
+
parts.push('');
|
|
345
398
|
}
|
|
399
|
+
// Open Questions (Session 130: Typed Memory)
|
|
400
|
+
const openQuestions = this.getByCategory('open_question', 3);
|
|
401
|
+
if (openQuestions.length > 0) {
|
|
402
|
+
parts.push('## Open Questions');
|
|
403
|
+
for (const m of openQuestions) {
|
|
404
|
+
parts.push(`- ${m.content.slice(0, 100)}`);
|
|
405
|
+
usedIds.push(m.id);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
// Track use_count for all memories that landed in context
|
|
409
|
+
this.incrementUseCount(usedIds);
|
|
346
410
|
return parts.join('\n');
|
|
347
411
|
}
|
|
412
|
+
/** Increment use_count for memories used in context building. */
|
|
413
|
+
incrementUseCount(ids) {
|
|
414
|
+
if (ids.length === 0)
|
|
415
|
+
return;
|
|
416
|
+
try {
|
|
417
|
+
for (const id of ids) {
|
|
418
|
+
this.stmtIncrementUseCount.run(id);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
catch (err) {
|
|
422
|
+
this.log.debug(`[conversation-memory] use_count increment failed: ${err.message}`);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// ── Typed Retrieval ─────────────────────────────────────
|
|
426
|
+
/**
|
|
427
|
+
* Typed retrieval via pre-computed candidate sets.
|
|
428
|
+
* Uses RetrievalMaintenanceEngine's candidate sets for fast filtered search.
|
|
429
|
+
*
|
|
430
|
+
* Flow: load candidate set → if query: FTS5/RAG rank over candidates → use_count++ → return Top-N
|
|
431
|
+
*/
|
|
432
|
+
retrieveByIntent(intent, query, limit = 10) {
|
|
433
|
+
// Load candidate set
|
|
434
|
+
let candidateIds;
|
|
435
|
+
try {
|
|
436
|
+
const row = this.db.prepare('SELECT memory_ids FROM retrieval_candidate_sets WHERE set_type = ? AND set_key = ?').get('intent', intent);
|
|
437
|
+
candidateIds = row ? JSON.parse(row.memory_ids) : [];
|
|
438
|
+
}
|
|
439
|
+
catch {
|
|
440
|
+
candidateIds = [];
|
|
441
|
+
}
|
|
442
|
+
if (candidateIds.length === 0) {
|
|
443
|
+
// Fallback: no candidate set available, try category-based retrieval
|
|
444
|
+
const fallbackResults = this.fallbackIntentRetrieval(intent, query, limit);
|
|
445
|
+
this.incrementUseCount(fallbackResults.map(m => m.id));
|
|
446
|
+
return fallbackResults;
|
|
447
|
+
}
|
|
448
|
+
let results;
|
|
449
|
+
if (query) {
|
|
450
|
+
// Search within candidates using FTS5
|
|
451
|
+
const ftsQuery = query.replace(/[^\w\s]/g, ' ').trim().split(/\s+/).filter(w => w.length > 1).join(' OR ');
|
|
452
|
+
if (ftsQuery) {
|
|
453
|
+
try {
|
|
454
|
+
const placeholders = candidateIds.map(() => '?').join(',');
|
|
455
|
+
const rows = this.db.prepare(`
|
|
456
|
+
SELECT m.* FROM conversation_memories m
|
|
457
|
+
JOIN conversation_memories_fts f ON m.id = f.rowid
|
|
458
|
+
WHERE conversation_memories_fts MATCH ?
|
|
459
|
+
AND m.id IN (${placeholders})
|
|
460
|
+
AND m.active = 1
|
|
461
|
+
ORDER BY rank
|
|
462
|
+
LIMIT ?
|
|
463
|
+
`).all(ftsQuery, ...candidateIds, limit);
|
|
464
|
+
results = rows.map(r => this.toMemory(r));
|
|
465
|
+
}
|
|
466
|
+
catch {
|
|
467
|
+
// FTS failed, fall back to full candidate set
|
|
468
|
+
results = this.loadMemoriesByIds(candidateIds, limit);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
else {
|
|
472
|
+
results = this.loadMemoriesByIds(candidateIds, limit);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
results = this.loadMemoriesByIds(candidateIds, limit);
|
|
477
|
+
}
|
|
478
|
+
// Track use_count
|
|
479
|
+
this.incrementUseCount(results.map(m => m.id));
|
|
480
|
+
return results;
|
|
481
|
+
}
|
|
482
|
+
loadMemoriesByIds(ids, limit) {
|
|
483
|
+
if (ids.length === 0)
|
|
484
|
+
return [];
|
|
485
|
+
const subset = ids.slice(0, limit);
|
|
486
|
+
const placeholders = subset.map(() => '?').join(',');
|
|
487
|
+
try {
|
|
488
|
+
const rows = this.db.prepare(`SELECT * FROM conversation_memories WHERE id IN (${placeholders}) AND active = 1 ORDER BY importance DESC, use_count DESC`).all(...subset);
|
|
489
|
+
return rows.map(r => this.toMemory(r));
|
|
490
|
+
}
|
|
491
|
+
catch {
|
|
492
|
+
return [];
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
fallbackIntentRetrieval(intent, query, limit) {
|
|
496
|
+
// Map intent to categories
|
|
497
|
+
const intentMap = {
|
|
498
|
+
decision_lookup: ['decision'],
|
|
499
|
+
project_context: ['context', 'fact'],
|
|
500
|
+
user_preference_lookup: ['preference', 'constraint'],
|
|
501
|
+
open_problem_lookup: ['open_question', 'goal'],
|
|
502
|
+
};
|
|
503
|
+
const categories = intentMap[intent];
|
|
504
|
+
if (!categories)
|
|
505
|
+
return [];
|
|
506
|
+
if (query) {
|
|
507
|
+
// Use searchText with category filter
|
|
508
|
+
const allResults = this.searchText(query, { limit: limit * 2 });
|
|
509
|
+
return allResults
|
|
510
|
+
.filter(r => categories.includes(r.memory.category))
|
|
511
|
+
.slice(0, limit)
|
|
512
|
+
.map(r => r.memory);
|
|
513
|
+
}
|
|
514
|
+
// No query — return top memories from mapped categories
|
|
515
|
+
const memories = [];
|
|
516
|
+
for (const cat of categories) {
|
|
517
|
+
memories.push(...this.getByCategory(cat, limit));
|
|
518
|
+
}
|
|
519
|
+
return memories
|
|
520
|
+
.sort((a, b) => b.importance - a.importance)
|
|
521
|
+
.slice(0, limit);
|
|
522
|
+
}
|
|
348
523
|
// ── Sessions ──────────────────────────────────────────
|
|
349
524
|
/** Start a new conversation session. */
|
|
350
525
|
startSession(sessionId, goals = [], metadata = {}) {
|
|
@@ -365,6 +540,29 @@ export class ConversationMemory {
|
|
|
365
540
|
});
|
|
366
541
|
this.log.info(`[conversation-memory] Session ended: ${sessionId}`);
|
|
367
542
|
}
|
|
543
|
+
/** Ensure a session exists (upsert). Returns true if new session was created. */
|
|
544
|
+
ensureSession(sessionId) {
|
|
545
|
+
const existing = this.stmtSessionGet.get(sessionId);
|
|
546
|
+
if (existing)
|
|
547
|
+
return false;
|
|
548
|
+
try {
|
|
549
|
+
this.stmtSessionInsert.run(sessionId, '[]', '{}');
|
|
550
|
+
this.log.info(`[conversation-memory] Session started: ${sessionId}`);
|
|
551
|
+
return true;
|
|
552
|
+
}
|
|
553
|
+
catch {
|
|
554
|
+
return false; // UNIQUE constraint — session already exists
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
/** Get last processed transcript timestamp for a session. */
|
|
558
|
+
getLastProcessedAt(sessionId) {
|
|
559
|
+
const row = this.stmtSessionGet.get(sessionId);
|
|
560
|
+
return row?.last_processed_at ?? '';
|
|
561
|
+
}
|
|
562
|
+
/** Save last processed transcript timestamp for a session. */
|
|
563
|
+
saveLastProcessedAt(sessionId, timestamp) {
|
|
564
|
+
this.db.prepare("UPDATE conversation_sessions SET last_processed_at = ? WHERE session_id = ?").run(timestamp, sessionId);
|
|
565
|
+
}
|
|
368
566
|
/** Get session info. */
|
|
369
567
|
getSession(sessionId) {
|
|
370
568
|
const row = this.stmtSessionGet.get(sessionId);
|
|
@@ -436,6 +634,32 @@ export class ConversationMemory {
|
|
|
436
634
|
}
|
|
437
635
|
return { decayed, pruned };
|
|
438
636
|
}
|
|
637
|
+
// ── Periodic Maintenance ─────────────────────────────
|
|
638
|
+
/** Start periodic maintenance cycle. Default: every 6 hours. */
|
|
639
|
+
startMaintenanceCycle(intervalMs = 6 * 60 * 60 * 1000) {
|
|
640
|
+
if (this.maintenanceTimer)
|
|
641
|
+
return;
|
|
642
|
+
this.maintenanceTimer = setInterval(() => {
|
|
643
|
+
try {
|
|
644
|
+
const result = this.maintenance();
|
|
645
|
+
if (result.decayed > 0 || result.pruned > 0) {
|
|
646
|
+
this.log.info(`[memory] Periodic maintenance: ${result.decayed} decayed, ${result.pruned} pruned`);
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
catch (err) {
|
|
650
|
+
this.log.debug(`[memory] Maintenance cycle failed: ${err.message}`);
|
|
651
|
+
}
|
|
652
|
+
}, intervalMs);
|
|
653
|
+
this.log.info(`[memory] Maintenance cycle started (interval: ${Math.round(intervalMs / 3600000)}h)`);
|
|
654
|
+
}
|
|
655
|
+
/** Stop periodic maintenance cycle. */
|
|
656
|
+
stopMaintenanceCycle() {
|
|
657
|
+
if (this.maintenanceTimer) {
|
|
658
|
+
clearInterval(this.maintenanceTimer);
|
|
659
|
+
this.maintenanceTimer = null;
|
|
660
|
+
this.log.info('[memory] Maintenance cycle stopped');
|
|
661
|
+
}
|
|
662
|
+
}
|
|
439
663
|
// ── Status ────────────────────────────────────────────
|
|
440
664
|
getStatus() {
|
|
441
665
|
const total = this.stmtCountTotal.get().count;
|
|
@@ -464,6 +688,10 @@ export class ConversationMemory {
|
|
|
464
688
|
createdAt: row.created_at,
|
|
465
689
|
updatedAt: row.updated_at,
|
|
466
690
|
active: row.active === 1,
|
|
691
|
+
useCount: row.use_count ?? 0,
|
|
692
|
+
lastUsedAt: row.last_used_at ?? null,
|
|
693
|
+
lastRetrievalScore: row.last_retrieval_score ?? null,
|
|
694
|
+
archiveCandidate: (row.archive_candidate ?? 0) === 1,
|
|
467
695
|
};
|
|
468
696
|
}
|
|
469
697
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-memory.js","sourceRoot":"","sources":["../../src/memory/conversation-memory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversation-memory.js","sourceRoot":"","sources":["../../src/memory/conversation-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
export interface RetrievalMaintenanceConfig {
|
|
3
|
+
/** Days without access until archive_candidate. Default: 30 */
|
|
4
|
+
coldThresholdDays?: number;
|
|
5
|
+
/** Minimum importance for protection from archiving. Default: 4 */
|
|
6
|
+
minImportanceForProtection?: number;
|
|
7
|
+
/** Max memories per candidate set. Default: 50 */
|
|
8
|
+
candidateSetSize?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface MaintenanceReport {
|
|
11
|
+
archiveCandidatesMarked: number;
|
|
12
|
+
candidateSetsRefreshed: number;
|
|
13
|
+
durationMs: number;
|
|
14
|
+
}
|
|
15
|
+
export interface CandidateSetReport {
|
|
16
|
+
setsCreated: number;
|
|
17
|
+
totalMemories: number;
|
|
18
|
+
}
|
|
19
|
+
export interface RetrievalMaintenanceStatus {
|
|
20
|
+
lastRunAt: string | null;
|
|
21
|
+
totalRuns: number;
|
|
22
|
+
totalArchiveCandidates: number;
|
|
23
|
+
candidateSets: number;
|
|
24
|
+
}
|
|
25
|
+
export declare class RetrievalMaintenanceEngine {
|
|
26
|
+
private readonly db;
|
|
27
|
+
private readonly config;
|
|
28
|
+
private readonly log;
|
|
29
|
+
private timer;
|
|
30
|
+
private totalRuns;
|
|
31
|
+
private lastRunAt;
|
|
32
|
+
constructor(db: Database.Database, config?: RetrievalMaintenanceConfig);
|
|
33
|
+
/** Start periodic maintenance (default: every 2h). */
|
|
34
|
+
start(intervalMs?: number): void;
|
|
35
|
+
/** Stop periodic maintenance. */
|
|
36
|
+
stop(): void;
|
|
37
|
+
/** Main cycle — call periodically (every 2h). */
|
|
38
|
+
runMaintenance(): MaintenanceReport;
|
|
39
|
+
/**
|
|
40
|
+
* Cold Memory Detection.
|
|
41
|
+
* Mark as archive_candidate = 1 when:
|
|
42
|
+
* - created_at > coldThresholdDays AND
|
|
43
|
+
* - access_count = 0 AND use_count = 0 AND
|
|
44
|
+
* - importance < minImportanceForProtection
|
|
45
|
+
*
|
|
46
|
+
* Safety: No automatic deletion, only marking.
|
|
47
|
+
*/
|
|
48
|
+
markArchiveCandidates(): number;
|
|
49
|
+
/** Refresh pre-computed candidate sets for typed retrieval. */
|
|
50
|
+
refreshCandidateSets(): CandidateSetReport;
|
|
51
|
+
/** Get current status. */
|
|
52
|
+
getStatus(): RetrievalMaintenanceStatus;
|
|
53
|
+
/** Get a candidate set by type and key. Returns memory IDs. */
|
|
54
|
+
getCandidateSet(setType: string, setKey: string): number[];
|
|
55
|
+
private ensureTable;
|
|
56
|
+
private buildCandidateSet;
|
|
57
|
+
}
|