@slorenzot/memento-core 0.5.0 → 0.6.0
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/MemoryEngine.d.ts +5 -0
- package/dist/MemoryEngine.d.ts.map +1 -1
- package/dist/MemoryEngine.js +34 -6
- package/dist/MemoryEngine.js.map +1 -1
- package/package.json +1 -1
- package/src/MemoryEngine.ts +44 -6
package/dist/MemoryEngine.d.ts
CHANGED
|
@@ -2,11 +2,16 @@ import type { Observation, Session, Prompt } from './types.js';
|
|
|
2
2
|
export declare class MemoryEngine {
|
|
3
3
|
private db;
|
|
4
4
|
private dbPath;
|
|
5
|
+
private initError;
|
|
5
6
|
constructor(dbPath?: string);
|
|
7
|
+
private createMockDatabase;
|
|
8
|
+
isHealthy(): boolean;
|
|
9
|
+
getInitError(): Error | null;
|
|
6
10
|
getDatabasePath(): string;
|
|
7
11
|
private initializeDatabase;
|
|
8
12
|
private serialize;
|
|
9
13
|
private deserialize;
|
|
14
|
+
private checkHealth;
|
|
10
15
|
createObservation(data: {
|
|
11
16
|
sessionId: number;
|
|
12
17
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryEngine.d.ts","sourceRoot":"","sources":["../src/MemoryEngine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAM/D,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,MAAM,CAAS;
|
|
1
|
+
{"version":3,"file":"MemoryEngine.d.ts","sourceRoot":"","sources":["../src/MemoryEngine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAM/D,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAsB;gBAE3B,MAAM,GAAE,MAA4B;IA0BhD,OAAO,CAAC,kBAAkB;IAY1B,SAAS,IAAI,OAAO;IAIpB,YAAY,IAAI,KAAK,GAAG,IAAI;IAI5B,eAAe,IAAI,MAAM;IAIzB,OAAO,CAAC,kBAAkB;IAoE1B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,WAAW;IAMb,iBAAiB,CAAC,IAAI,EAAE;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,WAAW,CAAC;IA+BlB,iBAAiB,CACrB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GACA,OAAO,CAAC,WAAW,CAAC;IAsCjB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIvD,MAAM,CAAC,MAAM,EAAE;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAgDrD,aAAa,CAAC,IAAI,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBd,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAI/C,UAAU,CAAC,IAAI,EAAE;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,MAAM,CAAC;YAoBL,kBAAkB;YAMlB,cAAc;YAMd,aAAa;IAM3B,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,SAAS;IAqBjB,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/MemoryEngine.js
CHANGED
|
@@ -41,19 +41,41 @@ const path_1 = require("path");
|
|
|
41
41
|
class MemoryEngine {
|
|
42
42
|
db;
|
|
43
43
|
dbPath;
|
|
44
|
+
initError = null;
|
|
44
45
|
constructor(dbPath = './data/memento.db') {
|
|
45
46
|
this.dbPath = dbPath;
|
|
46
|
-
const dbDir = (0, path_1.dirname)(dbPath);
|
|
47
47
|
try {
|
|
48
|
+
const dbDir = (0, path_1.dirname)(dbPath);
|
|
49
|
+
// Create directory structure if it doesn't exist
|
|
48
50
|
(0, fs_1.mkdirSync)(dbDir, { recursive: true });
|
|
51
|
+
// Create database connection
|
|
52
|
+
this.db = new bun_sqlite_1.Database(dbPath, { create: true });
|
|
53
|
+
this.initializeDatabase();
|
|
54
|
+
console.error(`✓ Database initialized successfully at: ${dbPath}`);
|
|
49
55
|
}
|
|
50
56
|
catch (error) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
57
|
+
this.initError = error;
|
|
58
|
+
console.error(`✗ Failed to initialize database at ${dbPath}:`, error.message);
|
|
59
|
+
console.error(' The server will start but database operations will fail until this is resolved.');
|
|
60
|
+
// Create a mock database object to prevent null reference errors
|
|
61
|
+
this.db = this.createMockDatabase();
|
|
54
62
|
}
|
|
55
|
-
|
|
56
|
-
|
|
63
|
+
}
|
|
64
|
+
createMockDatabase() {
|
|
65
|
+
const throwError = () => {
|
|
66
|
+
throw new Error(`Database not initialized: ${this.initError?.message || 'Unknown error'}`);
|
|
67
|
+
};
|
|
68
|
+
return {
|
|
69
|
+
prepare: throwError,
|
|
70
|
+
exec: throwError,
|
|
71
|
+
close: () => { },
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
isHealthy() {
|
|
75
|
+
return this.initError === null;
|
|
76
|
+
}
|
|
77
|
+
getInitError() {
|
|
78
|
+
return this.initError;
|
|
57
79
|
}
|
|
58
80
|
getDatabasePath() {
|
|
59
81
|
return this.dbPath;
|
|
@@ -137,7 +159,13 @@ class MemoryEngine {
|
|
|
137
159
|
return {};
|
|
138
160
|
}
|
|
139
161
|
}
|
|
162
|
+
checkHealth() {
|
|
163
|
+
if (!this.isHealthy()) {
|
|
164
|
+
throw this.initError || new Error('Database not initialized');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
140
167
|
async createObservation(data) {
|
|
168
|
+
this.checkHealth();
|
|
141
169
|
const uuid = crypto.randomUUID();
|
|
142
170
|
const createdAt = new Date();
|
|
143
171
|
const metadata = this.serialize(data.metadata);
|
package/dist/MemoryEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryEngine.js","sourceRoot":"","sources":["../src/MemoryEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAGjC,2CAAsC;AACtC,2BAA+B;AAC/B,+BAAqC;AAErC,MAAa,YAAY;IACf,EAAE,CAAM;IACR,MAAM,CAAS;
|
|
1
|
+
{"version":3,"file":"MemoryEngine.js","sourceRoot":"","sources":["../src/MemoryEngine.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slorenzot/memento-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Core memory engine for Memento with bun:sqlite, FTS5 search, and flexible config",
|
|
5
5
|
"keywords": ["memento", "memory", "sqlite", "fts5", "bun", "config", "mementorc"],
|
|
6
6
|
"license": "CC-BY-NC-ND-4.0",
|
package/src/MemoryEngine.ts
CHANGED
|
@@ -8,21 +8,52 @@ import { join, dirname } from 'path';
|
|
|
8
8
|
export class MemoryEngine {
|
|
9
9
|
private db: any;
|
|
10
10
|
private dbPath: string;
|
|
11
|
+
private initError: Error | null = null;
|
|
11
12
|
|
|
12
13
|
constructor(dbPath: string = './data/memento.db') {
|
|
13
14
|
this.dbPath = dbPath;
|
|
14
|
-
const dbDir = dirname(dbPath);
|
|
15
15
|
|
|
16
16
|
try {
|
|
17
|
+
const dbDir = dirname(dbPath);
|
|
18
|
+
|
|
19
|
+
// Create directory structure if it doesn't exist
|
|
17
20
|
mkdirSync(dbDir, { recursive: true });
|
|
21
|
+
|
|
22
|
+
// Create database connection
|
|
23
|
+
this.db = new Database(dbPath, { create: true });
|
|
24
|
+
this.initializeDatabase();
|
|
25
|
+
|
|
26
|
+
console.error(`✓ Database initialized successfully at: ${dbPath}`);
|
|
18
27
|
} catch (error: any) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
28
|
+
this.initError = error;
|
|
29
|
+
console.error(`✗ Failed to initialize database at ${dbPath}:`, error.message);
|
|
30
|
+
console.error(
|
|
31
|
+
' The server will start but database operations will fail until this is resolved.'
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// Create a mock database object to prevent null reference errors
|
|
35
|
+
this.db = this.createMockDatabase();
|
|
22
36
|
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private createMockDatabase(): any {
|
|
40
|
+
const throwError = () => {
|
|
41
|
+
throw new Error(`Database not initialized: ${this.initError?.message || 'Unknown error'}`);
|
|
42
|
+
};
|
|
23
43
|
|
|
24
|
-
|
|
25
|
-
|
|
44
|
+
return {
|
|
45
|
+
prepare: throwError,
|
|
46
|
+
exec: throwError,
|
|
47
|
+
close: () => {},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
isHealthy(): boolean {
|
|
52
|
+
return this.initError === null;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
getInitError(): Error | null {
|
|
56
|
+
return this.initError;
|
|
26
57
|
}
|
|
27
58
|
|
|
28
59
|
getDatabasePath(): string {
|
|
@@ -110,6 +141,12 @@ export class MemoryEngine {
|
|
|
110
141
|
}
|
|
111
142
|
}
|
|
112
143
|
|
|
144
|
+
private checkHealth(): void {
|
|
145
|
+
if (!this.isHealthy()) {
|
|
146
|
+
throw this.initError || new Error('Database not initialized');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
113
150
|
async createObservation(data: {
|
|
114
151
|
sessionId: number;
|
|
115
152
|
title: string;
|
|
@@ -119,6 +156,7 @@ export class MemoryEngine {
|
|
|
119
156
|
projectId: string;
|
|
120
157
|
metadata: Record<string, unknown>;
|
|
121
158
|
}): Promise<Observation> {
|
|
159
|
+
this.checkHealth();
|
|
122
160
|
const uuid = crypto.randomUUID();
|
|
123
161
|
const createdAt = new Date();
|
|
124
162
|
const metadata = this.serialize(data.metadata);
|