Files
ra-h-os/scripts/test-memory-update.js
T
“BeeRad” 733d1c3407 Initial commit: RA-H Open Source Edition
Local-first knowledge management system with BYO API keys.

Features:
- 3-panel UI (Nodes | Focus | Helpers)
- SQLite + sqlite-vec for vector search
- Agent system (Easy/Hard mode orchestrators)
- Content extraction (YouTube, PDF, web)
- Integrate workflow for connection discovery
- Dimension system with auto-assignment

Tech stack:
- Next.js 15 + TypeScript + Tailwind CSS
- Anthropic (Claude) + OpenAI (GPT) via Vercel AI SDK

Setup:
  npm install && npm rebuild better-sqlite3
  scripts/dev/bootstrap-local.sh
  npm run dev

MIT License
2025-12-15 16:14:28 +11:00

96 lines
3.1 KiB
JavaScript
Executable File

#!/usr/bin/env node
/**
* Test script for memory UPDATE operation
*
* This script:
* 1. Shows current memory facts
* 2. Triggers the memory pipeline manually
* 3. Shows updated facts after processing
*/
const Database = require('better-sqlite3');
const path = require('path');
const os = require('os');
const dbPath = path.join(os.homedir(), 'Library/Application Support/RA-H/db/rah.sqlite');
const db = new Database(dbPath);
console.log('=== MEMORY UPDATE OPERATION TEST ===\n');
// 1. Show current facts
console.log('📊 CURRENT MEMORY FACTS:\n');
const currentFacts = db.prepare(`
SELECT
id,
entity_id,
content,
json_extract(metadata, '$.reinforcement_count') as count,
json_extract(metadata, '$.reinforcement_score') as score,
json_extract(metadata, '$.entities') as entities
FROM memory
WHERE type='big_memory' AND entity_id LIKE 'fact:%' AND is_current=1
ORDER BY json_extract(metadata, '$.reinforcement_score') DESC
`).all();
currentFacts.forEach((fact, i) => {
console.log(`${i + 1}. [Score: ${fact.score}, Count: ${fact.count}]`);
console.log(` "${fact.content}"`);
if (fact.entities) {
try {
const entities = JSON.parse(fact.entities);
if (entities && entities.length > 0) {
console.log(` Entities: ${entities.join(', ')}`);
}
} catch {}
}
console.log();
});
// 2. Check pipeline state
console.log('\n📈 PIPELINE STATE:\n');
const pipelineState = db.prepare(`
SELECT last_processed_log_id, last_run_at
FROM memory_pipeline_state
WHERE id=1
`).get();
const maxLogId = db.prepare('SELECT MAX(id) as max FROM logs').get();
console.log(`Last processed log: ${pipelineState?.last_processed_log_id || 0}`);
console.log(`Max log ID: ${maxLogId?.max || 0}`);
console.log(`Logs pending: ${(maxLogId?.max || 0) - (pipelineState?.last_processed_log_id || 0)}`);
console.log(`Last run: ${pipelineState?.last_run_at || 'never'}\n`);
// 3. Show recent logs that mention key entities
console.log('\n📝 RECENT LOGS (mentioning ra-h, Paige, knowledge management):\n');
const recentLogs = db.prepare(`
SELECT id, ts, table_name, summary, chat_user_full
FROM logs_v
WHERE
(chat_user_full LIKE '%ra-h%' OR
chat_user_full LIKE '%Paige%' OR
chat_user_full LIKE '%knowledge management%' OR
chat_user_full LIKE '%dogfood%' OR
chat_user_full LIKE '%beta%' OR
summary LIKE '%ra-h%' OR
summary LIKE '%Paige%')
ORDER BY id DESC
LIMIT 15
`).all();
recentLogs.forEach(log => {
const preview = log.chat_user_full
? log.chat_user_full.substring(0, 100)
: log.summary.substring(0, 100);
console.log(`Log ${log.id} [${log.ts}]: ${preview}${preview.length >= 100 ? '...' : ''}`);
});
console.log('\n✅ To trigger pipeline manually:');
console.log(' 1. Start dev server: npm run dev');
console.log(' 2. Create 10+ new logs (chat, create nodes, etc.)');
console.log(' 3. Pipeline will auto-run and show UPDATE operations in console (if MEMORY_DEBUG=1)');
console.log('\n Or run this script again after interacting with the app to see updated facts.\n');
db.close();