tasq/node_modules/agentic-flow/dist/reasoningbank/index.js

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