93 lines
4.7 KiB
JavaScript
93 lines
4.7 KiB
JavaScript
/**
|
|
* ReasoningBank - Closed-loop memory system for AI agents
|
|
* Based on arXiv:2509.25140 (Google DeepMind)
|
|
*
|
|
* @since v1.7.0 - Integrated AgentDB for optimal performance
|
|
*/
|
|
// Apply AgentDB runtime patch before any AgentDB imports
|
|
import '../utils/agentdb-runtime-patch.js';
|
|
// New hybrid backend - commented out due to missing dependencies (SharedMemoryPool)
|
|
// export { HybridReasoningBank } from './HybridBackend.js';
|
|
// export { AdvancedMemorySystem } from './AdvancedMemory.js';
|
|
// export type { PatternData, RetrievalOptions, CausalInsight } from './HybridBackend.js';
|
|
// export type { FailureAnalysis, SkillComposition } from './AdvancedMemory.js';
|
|
// AgentDB controllers - re-exported lazily to avoid crashes when agentdb paths don't exist
|
|
// Users can import directly from 'agentdb' if they need these controllers
|
|
// export { ReflexionMemory } from 'agentdb/controllers/ReflexionMemory';
|
|
// export { SkillLibrary } from 'agentdb/controllers/SkillLibrary';
|
|
// export { CausalMemoryGraph } from 'agentdb/controllers/CausalMemoryGraph';
|
|
// export { CausalRecall } from 'agentdb/controllers/CausalRecall';
|
|
// export { NightlyLearner } from 'agentdb/controllers/NightlyLearner';
|
|
// export { EmbeddingService } from 'agentdb/controllers/EmbeddingService';
|
|
// Original ReasoningBank implementations (backwards compatibility)
|
|
export { retrieveMemories, formatMemoriesForPrompt } from './core/retrieve.js';
|
|
export { judgeTrajectory } from './core/judge.js';
|
|
export { distillMemories } from './core/distill.js';
|
|
export { consolidate, shouldConsolidate } from './core/consolidate.js';
|
|
export { mattsParallel, mattsSequential } from './core/matts.js';
|
|
export { computeEmbedding, clearEmbeddingCache } from './utils/embeddings.js';
|
|
export { mmrSelection, cosineSimilarity } from './utils/mmr.js';
|
|
export { scrubPII, containsPII, scrubMemory } from './utils/pii-scrubber.js';
|
|
export { loadConfig } from './utils/config.js';
|
|
// Re-export database utilities
|
|
import * as db from './db/queries.js';
|
|
export { db };
|
|
// Original functions (backwards compatibility)
|
|
import { loadConfig } from './utils/config.js';
|
|
import { retrieveMemories } from './core/retrieve.js';
|
|
import { judgeTrajectory } from './core/judge.js';
|
|
import { distillMemories } from './core/distill.js';
|
|
import { shouldConsolidate as shouldCons, consolidate as cons } from './core/consolidate.js';
|
|
export async function initialize() {
|
|
const config = loadConfig();
|
|
console.log('[ReasoningBank] Initializing...');
|
|
console.log('[ReasoningBank] Enabled: true (initializing...)');
|
|
console.log(`[ReasoningBank] Database: ${process.env.CLAUDE_FLOW_DB_PATH || '.swarm/memory.db'}`);
|
|
console.log(`[ReasoningBank] Embeddings: ${config.embeddings.provider}`);
|
|
console.log(`[ReasoningBank] Retrieval k: ${config.retrieve.k}`);
|
|
try {
|
|
await db.runMigrations();
|
|
console.log(`[ReasoningBank] Database migrated successfully`);
|
|
}
|
|
catch (error) {
|
|
console.error('[ReasoningBank] Migration error:', error);
|
|
throw new Error('ReasoningBank initialization failed: could not run migrations');
|
|
}
|
|
try {
|
|
const dbConn = db.getDb();
|
|
const tables = dbConn.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE 'pattern%'").all();
|
|
console.log(`[ReasoningBank] Database OK: ${tables.length} tables found`);
|
|
}
|
|
catch (error) {
|
|
console.error('[ReasoningBank] Database error:', error);
|
|
throw new Error('ReasoningBank initialization failed: database not accessible');
|
|
}
|
|
console.log('[ReasoningBank] Initialization complete');
|
|
}
|
|
export async function runTask(options) {
|
|
console.log(`[ReasoningBank] Running task: ${options.taskId}`);
|
|
const memories = await retrieveMemories(options.query, {
|
|
domain: options.domain,
|
|
agent: options.agentId
|
|
});
|
|
console.log(`[ReasoningBank] Retrieved ${memories.length} memories`);
|
|
const trajectory = await options.executeFn(memories);
|
|
const verdict = await judgeTrajectory(trajectory, options.query);
|
|
console.log(`[ReasoningBank] Verdict: ${verdict.label} (${verdict.confidence})`);
|
|
const newMemories = await distillMemories(trajectory, verdict, options.query, {
|
|
taskId: options.taskId,
|
|
agentId: options.agentId,
|
|
domain: options.domain
|
|
});
|
|
console.log(`[ReasoningBank] Distilled ${newMemories.length} new memories`);
|
|
let consolidated = false;
|
|
if (shouldCons()) {
|
|
console.log('[ReasoningBank] Running consolidation...');
|
|
await cons();
|
|
consolidated = true;
|
|
}
|
|
return { verdict, usedMemories: memories, newMemories, consolidated };
|
|
}
|
|
export const VERSION = '1.7.1';
|
|
export const PAPER_URL = 'https://arxiv.org/html/2509.25140v1';
|
|
//# sourceMappingURL=index.js.map
|