This commit is contained in:
2026-07-12 17:26:59 -04:00
parent 60663b8d4a
commit ba1bef8ff9
25 changed files with 158880 additions and 1529 deletions
+24 -24
View File
@@ -23,8 +23,8 @@ class AIMemoryDB {
*/
async initialize(dbPath = './storage/ai-memory.db', botName = 'default') {
if (this.db) {
this.botName = botName;
return; // Already initialized
// DB already initialized — don't overwrite botName (singleton shared across bots)
return;
}
const fullPath = path.resolve(dbPath);
@@ -122,7 +122,7 @@ class AIMemoryDB {
return new Promise((resolve, reject) => {
this.db.get(`
SELECT memory_value FROM player_memories
WHERE bot_name = 'global' AND player_name = ? AND memory_key = ?
WHERE bot_name = 'global' AND player_name = ? COLLATE NOCASE AND memory_key = ?
`, [playerName, key], (err, row) => {
if (err) reject(err);
else resolve(row ? row.memory_value : null);
@@ -137,7 +137,7 @@ class AIMemoryDB {
return new Promise((resolve, reject) => {
this.db.all(`
SELECT memory_key, memory_value FROM player_memories
WHERE bot_name = 'global' AND player_name = ?
WHERE bot_name = 'global' AND player_name = ? COLLATE NOCASE
`, [playerName], (err, rows) => {
if (err) reject(err);
else {
@@ -158,7 +158,7 @@ class AIMemoryDB {
return new Promise((resolve, reject) => {
this.db.run(`
DELETE FROM player_memories
WHERE bot_name = 'global' AND player_name = ? AND memory_key = ?
WHERE bot_name = 'global' AND player_name = ? COLLATE NOCASE AND memory_key = ?
`, [playerName, key], (err) => {
if (err) reject(err);
else resolve();
@@ -188,12 +188,12 @@ class AIMemoryDB {
/**
* Set a directive for this bot
*/
async setDirective(key, value) {
async setDirective(botName, key, value) {
return new Promise((resolve, reject) => {
this.db.run(`
INSERT OR REPLACE INTO bot_directives (bot_name, directive_key, directive_value, updated_at)
VALUES (?, ?, ?, CURRENT_TIMESTAMP)
`, [this.botName, key, value], (err) => {
`, [botName, key, value], (err) => {
if (err) reject(err);
else resolve();
});
@@ -203,12 +203,12 @@ class AIMemoryDB {
/**
* Get a specific directive
*/
async getDirective(key) {
async getDirective(botName, key) {
return new Promise((resolve, reject) => {
this.db.get(`
SELECT directive_value FROM bot_directives
WHERE bot_name = ? AND directive_key = ?
`, [this.botName, key], (err, row) => {
`, [botName, key], (err, row) => {
if (err) reject(err);
else resolve(row ? row.directive_value : null);
});
@@ -218,12 +218,12 @@ class AIMemoryDB {
/**
* Get all directives for this bot
*/
async getAllDirectives() {
async getAllDirectives(botName) {
return new Promise((resolve, reject) => {
this.db.all(`
SELECT directive_key, directive_value FROM bot_directives
WHERE bot_name = ?
`, [this.botName], (err, rows) => {
`, [botName], (err, rows) => {
if (err) reject(err);
else {
const directives = {};
@@ -243,12 +243,12 @@ class AIMemoryDB {
/**
* Set a general memory (not player-specific)
*/
async setGeneralMemory(key, value) {
async setGeneralMemory(botName, key, value) {
return new Promise((resolve, reject) => {
this.db.run(`
INSERT OR REPLACE INTO general_memories (bot_name, memory_key, memory_value, updated_at)
VALUES (?, ?, ?, CURRENT_TIMESTAMP)
`, [this.botName, key, value], (err) => {
`, [botName, key, value], (err) => {
if (err) reject(err);
else resolve();
});
@@ -258,12 +258,12 @@ class AIMemoryDB {
/**
* Get a general memory
*/
async getGeneralMemory(key) {
async getGeneralMemory(botName, key) {
return new Promise((resolve, reject) => {
this.db.get(`
SELECT memory_value FROM general_memories
WHERE bot_name = ? AND memory_key = ?
`, [this.botName, key], (err, row) => {
`, [botName, key], (err, row) => {
if (err) reject(err);
else resolve(row ? row.memory_value : null);
});
@@ -273,12 +273,12 @@ class AIMemoryDB {
/**
* Get all general memories
*/
async getAllGeneralMemories() {
async getAllGeneralMemories(botName) {
return new Promise((resolve, reject) => {
this.db.all(`
SELECT memory_key, memory_value FROM general_memories
WHERE bot_name = ?
`, [this.botName], (err, rows) => {
`, [botName], (err, rows) => {
if (err) reject(err);
else {
const memories = {};
@@ -294,13 +294,13 @@ class AIMemoryDB {
/**
* Get all general memories with timestamps
*/
async getAllGeneralMemoriesWithTimestamps() {
async getAllGeneralMemoriesWithTimestamps(botName) {
return new Promise((resolve, reject) => {
this.db.all(`
SELECT memory_key, memory_value, updated_at FROM general_memories
WHERE bot_name = ?
ORDER BY updated_at DESC
`, [this.botName], (err, rows) => {
`, [botName], (err, rows) => {
if (err) reject(err);
else resolve(rows);
});
@@ -313,13 +313,13 @@ class AIMemoryDB {
/**
* Get all directives as formatted string with timestamps
*/
async getDirectivesSummary() {
async getDirectivesSummary(botName) {
return new Promise((resolve, reject) => {
this.db.all(`
SELECT directive_key, directive_value, updated_at FROM bot_directives
WHERE bot_name = ?
ORDER BY updated_at DESC
`, [this.botName], (err, rows) => {
`, [botName], (err, rows) => {
if (err) reject(err);
else {
if (rows.length === 0) {
@@ -361,9 +361,9 @@ class AIMemoryDB {
/**
* Get full memory context for prompt injection
*/
async getMemoryContext() {
const directives = await this.getDirectivesSummary();
const generalMemories = await this.getAllGeneralMemoriesWithTimestamps();
async getMemoryContext(botName) {
const directives = await this.getDirectivesSummary(botName);
const generalMemories = await this.getAllGeneralMemoriesWithTimestamps(botName);
let context = '';