super-memory-pro 0.2.1 → 0.3.1
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/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/db/connection.d.ts +31 -3
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +224 -7
- package/dist/db/connection.js.map +1 -1
- package/dist/index.js +13 -12
- package/dist/index.js.map +1 -1
- package/dist/memory/processor.d.ts.map +1 -1
- package/dist/memory/processor.js +3 -0
- package/dist/memory/processor.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +24 -0
- package/dist/tools/index.js.map +1 -1
- package/package.json +3 -3
package/dist/config.js
CHANGED
|
@@ -8,7 +8,7 @@ export function loadConfig() {
|
|
|
8
8
|
host: process.env.UM_DB_HOST || 'localhost',
|
|
9
9
|
port: parseInt(process.env.UM_DB_PORT || '5432', 10),
|
|
10
10
|
database: process.env.UM_DB_NAME || 'ultra_memory',
|
|
11
|
-
user: process.env.UM_DB_USER || process.env.USER || userInfo().username,
|
|
11
|
+
user: process.env.UM_DB_USER || process.env.USER || userInfo().username || 'postgres',
|
|
12
12
|
password: process.env.UM_DB_PASSWORD || '',
|
|
13
13
|
maxConnections: parseInt(process.env.UM_DB_POOL_MAX || '10', 10),
|
|
14
14
|
},
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,EAAE,EAAE;YACF,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW;YAC3C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,EAAE,CAAC;YACpD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc;YAClD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,EAAE,EAAE;YACF,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW;YAC3C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,EAAE,CAAC;YACpD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc;YAClD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,QAAQ,IAAI,UAAU;YACrF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;YAC1C,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,EAAE,EAAE,CAAC;SACjE;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,kBAAkB;YACzE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,WAAW;SAChD;QACD,MAAM,EAAE;YACN,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC;YACjE,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC;YACjE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,OAAO;SACrD;KACF,CAAC;AACJ,CAAC"}
|
package/dist/db/connection.d.ts
CHANGED
|
@@ -1,12 +1,39 @@
|
|
|
1
1
|
import pg from 'pg';
|
|
2
2
|
import type { PluginConfig } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Store the resolved config for later lazy initialisation.
|
|
5
|
+
* Must be called once before any async DB operation.
|
|
6
|
+
*/
|
|
7
|
+
export declare function initConfig(config: PluginConfig): void;
|
|
3
8
|
/**
|
|
4
9
|
* Create and return the PostgreSQL connection pool.
|
|
5
|
-
*
|
|
10
|
+
* Synchronous — does not test the connection. Safe to call multiple times.
|
|
6
11
|
*/
|
|
7
12
|
export declare function getPool(config?: PluginConfig): pg.Pool;
|
|
8
13
|
/**
|
|
9
|
-
*
|
|
14
|
+
* Test whether the DB pool is currently in a healthy state.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isReady(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Return the last initialisation error message, or null.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getLastError(): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* Ensure the database is ready: pool connected, database exists, migrations run.
|
|
23
|
+
*
|
|
24
|
+
* Idempotent and thread-safe (callers that arrive while a connection is in
|
|
25
|
+
* progress will wait). Returns `true` when the database is usable.
|
|
26
|
+
*
|
|
27
|
+
* This is called automatically by `startBackgroundRetry()` and re-invoked
|
|
28
|
+
* whenever a connection error occurs.
|
|
29
|
+
*/
|
|
30
|
+
export declare function ensureDbReady(): Promise<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* Cancel any pending retry timer (e.g. on dispose).
|
|
33
|
+
*/
|
|
34
|
+
export declare function cancelRetry(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Quick health check. Returns `true` if the database is reachable right now.
|
|
10
37
|
*/
|
|
11
38
|
export declare function healthCheck(): Promise<boolean>;
|
|
12
39
|
/**
|
|
@@ -14,7 +41,8 @@ export declare function healthCheck(): Promise<boolean>;
|
|
|
14
41
|
*/
|
|
15
42
|
export declare function closePool(): Promise<void>;
|
|
16
43
|
/**
|
|
17
|
-
* Connect to
|
|
44
|
+
* Connect to the `postgres` admin database (used by the installer and
|
|
45
|
+
* auto-creation logic).
|
|
18
46
|
*/
|
|
19
47
|
export declare function createAdminPool(config: PluginConfig): pg.Pool;
|
|
20
48
|
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAYhD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAErD;AAID;;;GAGG;AACH,wBAAgB,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,EAAE,CAAC,IAAI,CA4BtD;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAID;;;;;;;;GAQG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAgCtD;AAyFD;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAKlC;AAID;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAQpD;AAID;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ/C;AAmDD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,EAAE,CAAC,IAAI,CAU7D"}
|
package/dist/db/connection.js
CHANGED
|
@@ -1,13 +1,37 @@
|
|
|
1
|
+
// ─── PostgreSQL Connection Pool ──────────────────────────────────────────────
|
|
2
|
+
// Lazily initialised with automatic retry, database creation, and migration.
|
|
3
|
+
// The plugin never blocks on DB — every operation degrades gracefully.
|
|
4
|
+
// ───────────────────────────────────────────────────────────────────────────────
|
|
5
|
+
import { execSync } from 'node:child_process';
|
|
1
6
|
import pg from 'pg';
|
|
7
|
+
import { runMigrations } from './migrations.js';
|
|
2
8
|
let pool = null;
|
|
9
|
+
let _config = null;
|
|
10
|
+
let _ready = false;
|
|
11
|
+
let _connecting = false;
|
|
12
|
+
let _lastError = null;
|
|
13
|
+
let _retryTimer = null;
|
|
14
|
+
// ─── Configuration ───────────────────────────────────────────────────────────
|
|
15
|
+
/**
|
|
16
|
+
* Store the resolved config for later lazy initialisation.
|
|
17
|
+
* Must be called once before any async DB operation.
|
|
18
|
+
*/
|
|
19
|
+
export function initConfig(config) {
|
|
20
|
+
_config = config;
|
|
21
|
+
}
|
|
22
|
+
// ─── Pool Lifecycle ──────────────────────────────────────────────────────────
|
|
3
23
|
/**
|
|
4
24
|
* Create and return the PostgreSQL connection pool.
|
|
5
|
-
*
|
|
25
|
+
* Synchronous — does not test the connection. Safe to call multiple times.
|
|
6
26
|
*/
|
|
7
27
|
export function getPool(config) {
|
|
8
28
|
if (pool)
|
|
9
29
|
return pool;
|
|
10
|
-
const cfg = config;
|
|
30
|
+
const cfg = config ?? _config;
|
|
31
|
+
if (!cfg)
|
|
32
|
+
throw new Error('[UltraMemory] getPool() called before initConfig()');
|
|
33
|
+
if (_config === null)
|
|
34
|
+
_config = cfg;
|
|
11
35
|
pool = new pg.Pool({
|
|
12
36
|
host: cfg.db.host,
|
|
13
37
|
port: cfg.db.port,
|
|
@@ -18,16 +42,164 @@ export function getPool(config) {
|
|
|
18
42
|
idleTimeoutMillis: 30_000,
|
|
19
43
|
connectionTimeoutMillis: 5_000,
|
|
20
44
|
});
|
|
45
|
+
// On pool-level error, reset ready state so the next operation retries.
|
|
21
46
|
pool.on('error', (err) => {
|
|
22
47
|
console.error('[UltraMemory] PostgreSQL pool error:', err.message);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
48
|
+
if (_ready) {
|
|
49
|
+
_ready = false;
|
|
50
|
+
scheduleRetry();
|
|
51
|
+
}
|
|
26
52
|
});
|
|
27
53
|
return pool;
|
|
28
54
|
}
|
|
29
55
|
/**
|
|
30
|
-
*
|
|
56
|
+
* Test whether the DB pool is currently in a healthy state.
|
|
57
|
+
*/
|
|
58
|
+
export function isReady() {
|
|
59
|
+
return _ready && pool !== null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Return the last initialisation error message, or null.
|
|
63
|
+
*/
|
|
64
|
+
export function getLastError() {
|
|
65
|
+
return _lastError;
|
|
66
|
+
}
|
|
67
|
+
// ─── Lazy Initialisation ─────────────────────────────────────────────────────
|
|
68
|
+
/**
|
|
69
|
+
* Ensure the database is ready: pool connected, database exists, migrations run.
|
|
70
|
+
*
|
|
71
|
+
* Idempotent and thread-safe (callers that arrive while a connection is in
|
|
72
|
+
* progress will wait). Returns `true` when the database is usable.
|
|
73
|
+
*
|
|
74
|
+
* This is called automatically by `startBackgroundRetry()` and re-invoked
|
|
75
|
+
* whenever a connection error occurs.
|
|
76
|
+
*/
|
|
77
|
+
export async function ensureDbReady() {
|
|
78
|
+
if (_ready)
|
|
79
|
+
return true;
|
|
80
|
+
if (!_config)
|
|
81
|
+
return false;
|
|
82
|
+
if (_connecting) {
|
|
83
|
+
// Another caller is already connecting — wait for them.
|
|
84
|
+
while (_connecting)
|
|
85
|
+
await new Promise((r) => setTimeout(r, 200));
|
|
86
|
+
return _ready;
|
|
87
|
+
}
|
|
88
|
+
_connecting = true;
|
|
89
|
+
try {
|
|
90
|
+
const p = getPool(_config);
|
|
91
|
+
await p.query('SELECT 1');
|
|
92
|
+
await runMigrations(p);
|
|
93
|
+
_ready = true;
|
|
94
|
+
_lastError = null;
|
|
95
|
+
console.log('[UltraMemory] Database ready');
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
const pgErr = err;
|
|
100
|
+
// Code 3D000 = database does not exist — try to create it.
|
|
101
|
+
if (pgErr?.code === '3D000') {
|
|
102
|
+
return handleMissingDatabase(err);
|
|
103
|
+
}
|
|
104
|
+
_lastError = err instanceof Error ? err.message : String(err);
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
_connecting = false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Called when the target database does not exist yet.
|
|
113
|
+
* Creates it using multiple strategies (mirrors the installer logic):
|
|
114
|
+
* 1. node-postgres admin pool (same user)
|
|
115
|
+
* 2. CLI `createdb` (if available)
|
|
116
|
+
* 3. `sudo -u postgres createdb` (last resort)
|
|
117
|
+
*/
|
|
118
|
+
async function handleMissingDatabase(_originalErr) {
|
|
119
|
+
console.log('[UltraMemory] Database does not exist — attempting to create it');
|
|
120
|
+
const dbName = _config.db.database;
|
|
121
|
+
// ── Strategy 1: node-postgres admin pool ──────────────────────────────
|
|
122
|
+
try {
|
|
123
|
+
const adminPool = createAdminPool(_config);
|
|
124
|
+
const quotedName = dbName.replace(/"/g, '""');
|
|
125
|
+
await adminPool.query(`CREATE DATABASE "${quotedName}"`);
|
|
126
|
+
await adminPool.end();
|
|
127
|
+
closePool();
|
|
128
|
+
return await reconnectAndMigrate();
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
132
|
+
console.warn('[UltraMemory] node-postgres create failed:', msg);
|
|
133
|
+
// Fall through to CLI strategies
|
|
134
|
+
}
|
|
135
|
+
// ── Strategy 2: CLI createdb ──────────────────────────────────────────
|
|
136
|
+
const cliResult = runCommand(`createdb "${dbName}" 2>/dev/null`);
|
|
137
|
+
if (cliResult.exitCode === 0) {
|
|
138
|
+
console.log('[UltraMemory] Database created via createdb');
|
|
139
|
+
closePool();
|
|
140
|
+
return await reconnectAndMigrate();
|
|
141
|
+
}
|
|
142
|
+
// ── Strategy 3: sudo -u postgres createdb ─────────────────────────────
|
|
143
|
+
const sudoResult = runCommand(`sudo -u postgres createdb "${dbName}" 2>/dev/null`);
|
|
144
|
+
if (sudoResult.exitCode === 0) {
|
|
145
|
+
console.log('[UltraMemory] Database created via sudo');
|
|
146
|
+
closePool();
|
|
147
|
+
return await reconnectAndMigrate();
|
|
148
|
+
}
|
|
149
|
+
// ── All strategies failed ─────────────────────────────────────────────
|
|
150
|
+
const currentUser = getSystemUser();
|
|
151
|
+
_lastError =
|
|
152
|
+
`Failed to create database '${dbName}'.\n` +
|
|
153
|
+
` Tried: node-postgres SQL, createdb, sudo -u postgres createdb\n` +
|
|
154
|
+
` Fix: Run 'ALTER USER ${currentUser} CREATEDB;' as PostgreSQL superuser,\n` +
|
|
155
|
+
` or run the installer: npm run install:plugin`;
|
|
156
|
+
console.error('[UltraMemory]', _lastError);
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Reconnect to the newly created database and run migrations.
|
|
161
|
+
* Shared helper for handleMissingDatabase strategies.
|
|
162
|
+
*/
|
|
163
|
+
async function reconnectAndMigrate() {
|
|
164
|
+
try {
|
|
165
|
+
const p = getPool(_config);
|
|
166
|
+
await p.query('SELECT 1');
|
|
167
|
+
await runMigrations(p);
|
|
168
|
+
_ready = true;
|
|
169
|
+
_lastError = null;
|
|
170
|
+
console.log('[UltraMemory] Database created and ready');
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
_lastError = err instanceof Error ? err.message : String(err);
|
|
175
|
+
console.error('[UltraMemory] Database created but connection failed:', _lastError);
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// ─── Retry Logic ─────────────────────────────────────────────────────────────
|
|
180
|
+
/**
|
|
181
|
+
* Schedule a background retry attempt after a short delay.
|
|
182
|
+
*/
|
|
183
|
+
function scheduleRetry() {
|
|
184
|
+
if (_retryTimer)
|
|
185
|
+
return; // already scheduled
|
|
186
|
+
_retryTimer = setTimeout(async () => {
|
|
187
|
+
_retryTimer = null;
|
|
188
|
+
await ensureDbReady();
|
|
189
|
+
}, 5_000);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Cancel any pending retry timer (e.g. on dispose).
|
|
193
|
+
*/
|
|
194
|
+
export function cancelRetry() {
|
|
195
|
+
if (_retryTimer) {
|
|
196
|
+
clearTimeout(_retryTimer);
|
|
197
|
+
_retryTimer = null;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// ─── Health ───────────────────────────────────────────────────────────────────
|
|
201
|
+
/**
|
|
202
|
+
* Quick health check. Returns `true` if the database is reachable right now.
|
|
31
203
|
*/
|
|
32
204
|
export async function healthCheck() {
|
|
33
205
|
if (!pool)
|
|
@@ -40,17 +212,62 @@ export async function healthCheck() {
|
|
|
40
212
|
return false;
|
|
41
213
|
}
|
|
42
214
|
}
|
|
215
|
+
// ─── Cleanup ──────────────────────────────────────────────────────────────────
|
|
43
216
|
/**
|
|
44
217
|
* Gracefully close the connection pool.
|
|
45
218
|
*/
|
|
46
219
|
export async function closePool() {
|
|
220
|
+
cancelRetry();
|
|
47
221
|
if (pool) {
|
|
48
222
|
await pool.end();
|
|
49
223
|
pool = null;
|
|
50
224
|
}
|
|
225
|
+
_ready = false;
|
|
226
|
+
_connecting = false;
|
|
227
|
+
}
|
|
228
|
+
// ─── Shell Command Runner ────────────────────────────────────────────────────
|
|
229
|
+
/**
|
|
230
|
+
* Run a shell command and return stdout/stderr/exitCode.
|
|
231
|
+
* Used for CLI fallbacks when node-postgres lacks permissions.
|
|
232
|
+
*/
|
|
233
|
+
function runCommand(command, timeout = 30_000) {
|
|
234
|
+
try {
|
|
235
|
+
const stdout = execSync(command, {
|
|
236
|
+
encoding: 'utf-8',
|
|
237
|
+
timeout,
|
|
238
|
+
windowsHide: true,
|
|
239
|
+
stdio: 'pipe',
|
|
240
|
+
});
|
|
241
|
+
return { stdout: stdout.trim(), stderr: '', exitCode: 0 };
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
const e = err;
|
|
245
|
+
return {
|
|
246
|
+
stdout: (e.stdout?.toString() ?? '').trim(),
|
|
247
|
+
stderr: (e.stderr?.toString() ?? '').trim(),
|
|
248
|
+
exitCode: e.status ?? 1,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Get the current system username.
|
|
254
|
+
* Falls back from $USER env var to `whoami` to 'postgres' default.
|
|
255
|
+
*/
|
|
256
|
+
function getSystemUser() {
|
|
257
|
+
if (process.env.USER)
|
|
258
|
+
return process.env.USER;
|
|
259
|
+
if (process.env.USERNAME)
|
|
260
|
+
return process.env.USERNAME;
|
|
261
|
+
const result = runCommand('whoami 2>/dev/null');
|
|
262
|
+
if (result.exitCode === 0 && result.stdout) {
|
|
263
|
+
return result.stdout;
|
|
264
|
+
}
|
|
265
|
+
return 'postgres';
|
|
51
266
|
}
|
|
267
|
+
// ─── Admin Connection (for DB creation) ──────────────────────────────────────
|
|
52
268
|
/**
|
|
53
|
-
* Connect to
|
|
269
|
+
* Connect to the `postgres` admin database (used by the installer and
|
|
270
|
+
* auto-creation logic).
|
|
54
271
|
*/
|
|
55
272
|
export function createAdminPool(config) {
|
|
56
273
|
return new pg.Pool({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
import { tool } from '@opencode-ai/plugin';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import { loadConfig } from './config.js';
|
|
8
|
-
import {
|
|
9
|
-
import { runMigrations } from './db/migrations.js';
|
|
8
|
+
import { initConfig, closePool, ensureDbReady } from './db/connection.js';
|
|
10
9
|
import { createServer } from './server/index.js';
|
|
11
10
|
import { createMessageHandler } from './hooks/message-handler.js';
|
|
12
11
|
import { createEventHandler } from './hooks/event-handler.js';
|
|
@@ -26,17 +25,19 @@ const pluginModule = {
|
|
|
26
25
|
id: 'super-memory',
|
|
27
26
|
server: async (_input, _options) => {
|
|
28
27
|
const config = loadConfig();
|
|
29
|
-
// ── Initialise database
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
// ── Initialise database (lazy — retries in background) ───────────────
|
|
29
|
+
initConfig(config);
|
|
30
|
+
// Kick off the first connection attempt immediately (fire-and-forget).
|
|
31
|
+
// If it fails, the connection module will retry automatically every 5 s
|
|
32
|
+
// until the database becomes available.
|
|
33
|
+
ensureDbReady().then((ok) => {
|
|
34
|
+
if (ok) {
|
|
35
|
+
console.log('[UltraMemory] Database connected on first attempt');
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
37
|
+
else {
|
|
38
|
+
console.log('[UltraMemory] Database not available yet — will retry in background');
|
|
39
|
+
}
|
|
40
|
+
});
|
|
40
41
|
// ── Start Express server ──────────────────────────────────────────────
|
|
41
42
|
try {
|
|
42
43
|
serverHandle = await createServer(config);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kEAAkE;AAClE,+CAA+C;AAC/C,+EAA+E;AAE/E,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kEAAkE;AAClE,+CAA+C;AAC/C,+EAA+E;AAE/E,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAW,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,8EAA8E;AAC9E,4EAA4E;AAC5E,IAAI,YAAY,GAAuD,IAAI,CAAC;AAE5E,8EAA8E;AAC9E,0EAA0E;AAC1E,uEAAuE;AACvE,8CAA8C;AAC9C,8EAA8E;AAE9E,MAAM,YAAY,GAAiB;IACjC,EAAE,EAAE,cAAc;IAElB,MAAM,EAAE,KAAK,EACX,MAAmB,EACnB,QAAwB,EACxB,EAAE;QACF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,wEAAwE;QACxE,UAAU,CAAC,MAAM,CAAC,CAAC;QAEnB,uEAAuE;QACvE,wEAAwE;QACxE,wCAAwC;QACxC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YAC1B,IAAI,EAAE,EAAE,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,yEAAyE;QACzE,IAAI,CAAC;YACH,YAAY,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,8CAA8C,EAC9C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,OAAO;YACL,2BAA2B;YAC3B,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,IAAI,YAAY,EAAE,CAAC;oBACjB,IAAI,CAAC;wBACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;oBAC7B,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;oBAC5D,CAAC;oBACD,YAAY,GAAG,IAAI,CAAC;gBACtB,CAAC;gBACD,MAAM,SAAS,EAAE,CAAC;YACpB,CAAC;YAED,2DAA2D;YAC3D,cAAc,EAAE,oBAAoB,EAAE;YAEtC,+DAA+D;YAC/D,KAAK,EAAE,kBAAkB,EAAE;YAE3B,iEAAiE;YACjE,oBAAoB,EAAE,sBAAsB,EAAE;YAE9C,uEAAuE;YACvE,oCAAoC,EAAE,qBAAqB,CAAC,MAAM,CAAC;YAEnE,0EAA0E;YAC1E,iCAAiC,EAAE,sBAAsB,EAAE;YAE3D,gEAAgE;YAChE,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI,CAAC;oBACb,WAAW,EACT,+EAA+E;oBACjF,IAAI,EAAE;wBACJ,GAAG,EAAE,CAAC;6BACH,MAAM,EAAE;6BACR,QAAQ,CACP,wDAAwD,CACzD;wBACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;wBAC3D,IAAI,EAAE,CAAC;6BACJ,IAAI,CAAC;4BACJ,cAAc;4BACd,YAAY;4BACZ,iBAAiB;4BACjB,SAAS;4BACT,UAAU;4BACV,UAAU;yBACX,CAAC;6BACD,QAAQ,EAAE;6BACV,OAAO,CAAC,UAAU,CAAC;6BACnB,QAAQ,CAAC,0BAA0B,CAAC;wBACvC,UAAU,EAAE,CAAC;6BACV,MAAM,EAAE;6BACR,GAAG,CAAC,CAAC,CAAC;6BACN,GAAG,CAAC,CAAC,CAAC;6BACN,QAAQ,EAAE;6BACV,OAAO,CAAC,CAAC,CAAC;6BACV,QAAQ,CAAC,sDAAsD,CAAC;qBACpE;oBACD,OAAO,EAAE,cAAc;iBACxB,CAAC;gBAEF,UAAU,EAAE,IAAI,CAAC;oBACf,WAAW,EACT,gEAAgE;oBAClE,IAAI,EAAE;wBACJ,KAAK,EAAE,CAAC;6BACL,MAAM,EAAE;6BACR,QAAQ,CAAC,uCAAuC,CAAC;wBACpD,IAAI,EAAE,CAAC;6BACJ,IAAI,CAAC;4BACJ,cAAc;4BACd,YAAY;4BACZ,iBAAiB;4BACjB,SAAS;4BACT,SAAS;4BACT,UAAU;4BACV,UAAU;yBACX,CAAC;6BACD,QAAQ,EAAE;6BACV,QAAQ,CAAC,gCAAgC,CAAC;wBAC7C,KAAK,EAAE,CAAC;6BACL,MAAM,EAAE;6BACR,GAAG,EAAE;6BACL,GAAG,CAAC,CAAC,CAAC;6BACN,GAAG,CAAC,GAAG,CAAC;6BACR,QAAQ,EAAE;6BACV,OAAO,CAAC,EAAE,CAAC;6BACX,QAAQ,CAAC,qCAAqC,CAAC;qBACnD;oBACD,OAAO,EAAE,gBAAgB;iBAC1B,CAAC;gBAEF,UAAU,EAAE,IAAI,CAAC;oBACf,WAAW,EACT,sDAAsD;oBACxD,IAAI,EAAE;wBACJ,EAAE,EAAE,CAAC;6BACF,MAAM,EAAE;6BACR,IAAI,EAAE;6BACN,QAAQ,CAAC,8BAA8B,CAAC;qBAC5C;oBACD,OAAO,EAAE,gBAAgB;iBAC1B,CAAC;gBAEF,SAAS,EAAE,IAAI,CAAC;oBACd,WAAW,EACT,sEAAsE;oBACxE,IAAI,EAAE,EAAE;oBACR,OAAO,EAAE,eAAe;iBACzB,CAAC;aACH;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../src/memory/processor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../src/memory/processor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAC;AAS9D,OAAO,EAAmD,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAQlG,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAAC,YAAY,EAAE,CAAC,CA+GzB;AAID,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
|
package/dist/memory/processor.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// ─── Memory Processor ──────────────────────────────────────────────────────
|
|
2
2
|
// Orchestrator that combines extraction, storage, and search.
|
|
3
3
|
// This is the primary entry point for the memory system.
|
|
4
|
+
import { ensureDbReady } from '../db/connection.js';
|
|
4
5
|
import { extractTechStack, extractDecisions, extractUserPreferences, extractPatterns, classifyContent, } from './extractor.js';
|
|
5
6
|
import { storeMemories } from './store.js';
|
|
6
7
|
import { searchRelevantMemories, formatMemoriesForPrompt } from './search.js';
|
|
@@ -31,6 +32,8 @@ export async function processMessage(content, metadata) {
|
|
|
31
32
|
}
|
|
32
33
|
const { sessionId, projectId, source } = metadata;
|
|
33
34
|
try {
|
|
35
|
+
// Lazy-init the database (fire-and-forget — errors are caught below).
|
|
36
|
+
await ensureDbReady();
|
|
34
37
|
// Step 1: Run all extractors
|
|
35
38
|
const [techStack, decisions, preferences, patterns] = await Promise.all([
|
|
36
39
|
safeExtract(() => extractTechStack(content)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/memory/processor.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8DAA8D;AAC9D,yDAAyD;
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/memory/processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AA8BnE;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1E,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA8BrB;AAID;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACtD,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAuCrB;AAID;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACpB,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CA2BrB;AAID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC5B,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CA4BrB"}
|
package/dist/tools/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Actual implementations of mem_save, mem_search, mem_forget, mem_stats.
|
|
3
3
|
// These are called by the tool definitions in definitions.ts.
|
|
4
4
|
import { createMemory, searchMemories, deleteMemory, getMemoryStats } from '../db/queries.js';
|
|
5
|
+
import { ensureDbReady } from '../db/connection.js';
|
|
5
6
|
// ─── Helpers ───────────────────────────────────────────────────────────────
|
|
6
7
|
/**
|
|
7
8
|
* Derive a stable project ID from a worktree directory path.
|
|
@@ -15,6 +16,17 @@ function deriveProjectId(worktree) {
|
|
|
15
16
|
return 'default';
|
|
16
17
|
return last.toLowerCase().replace(/[^a-z0-9_-]/g, '_');
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Ensure the database is ready before proceeding.
|
|
21
|
+
* Returns an error ToolResult if the database is unavailable.
|
|
22
|
+
*/
|
|
23
|
+
async function requireDbReady() {
|
|
24
|
+
const ok = await ensureDbReady();
|
|
25
|
+
if (ok)
|
|
26
|
+
return null;
|
|
27
|
+
const err = `Database is not available. Make sure PostgreSQL is running.`;
|
|
28
|
+
return { title: 'Database Unavailable', output: `⚠️ ${err}` };
|
|
29
|
+
}
|
|
18
30
|
// ─── mem_save ──────────────────────────────────────────────────────────────
|
|
19
31
|
/**
|
|
20
32
|
* Save a memory explicitly via tool call.
|
|
@@ -22,6 +34,9 @@ function deriveProjectId(worktree) {
|
|
|
22
34
|
*/
|
|
23
35
|
export async function executeMemSave(args, context) {
|
|
24
36
|
try {
|
|
37
|
+
const dbError = await requireDbReady();
|
|
38
|
+
if (dbError)
|
|
39
|
+
return dbError;
|
|
25
40
|
const memoryType = (args.type || 'explicit');
|
|
26
41
|
const importance = args.importance ?? 3;
|
|
27
42
|
const memory = await createMemory({
|
|
@@ -54,6 +69,9 @@ export async function executeMemSave(args, context) {
|
|
|
54
69
|
*/
|
|
55
70
|
export async function executeMemSearch(args, context) {
|
|
56
71
|
try {
|
|
72
|
+
const dbError = await requireDbReady();
|
|
73
|
+
if (dbError)
|
|
74
|
+
return dbError;
|
|
57
75
|
const limit = args.limit ?? 10;
|
|
58
76
|
const results = await searchMemories({
|
|
59
77
|
query: args.query,
|
|
@@ -93,6 +111,9 @@ export async function executeMemSearch(args, context) {
|
|
|
93
111
|
*/
|
|
94
112
|
export async function executeMemForget(args, _context) {
|
|
95
113
|
try {
|
|
114
|
+
const dbError = await requireDbReady();
|
|
115
|
+
if (dbError)
|
|
116
|
+
return dbError;
|
|
96
117
|
const deleted = await deleteMemory(args.id);
|
|
97
118
|
if (!deleted) {
|
|
98
119
|
return {
|
|
@@ -122,6 +143,9 @@ export async function executeMemForget(args, _context) {
|
|
|
122
143
|
*/
|
|
123
144
|
export async function executeMemStats(_args, _context) {
|
|
124
145
|
try {
|
|
146
|
+
const dbError = await requireDbReady();
|
|
147
|
+
if (dbError)
|
|
148
|
+
return dbError;
|
|
125
149
|
const stats = await getMemoryStats();
|
|
126
150
|
if (stats.length === 0) {
|
|
127
151
|
return {
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yEAAyE;AACzE,8DAA8D;AAI9D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "super-memory-pro",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.1",
|
|
5
5
|
"description": "Ultra-persistent memory plugin for OpenCode — learn, remember, and recall across sessions",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"opencode",
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
"dist"
|
|
35
35
|
],
|
|
36
36
|
"scripts": {
|
|
37
|
-
"build": "tsc && cp -r src/db/migrations dist/db/migrations",
|
|
37
|
+
"build": "node node_modules/typescript/bin/tsc && cp -r src/db/migrations dist/db/migrations",
|
|
38
38
|
"dev": "tsx watch src/index.ts",
|
|
39
39
|
"install:plugin": "tsx src/installer/index.ts",
|
|
40
|
-
"test": "vitest run",
|
|
40
|
+
"test": "node node_modules/vitest/vitest.mjs run",
|
|
41
41
|
"test:watch": "vitest",
|
|
42
42
|
"typecheck": "tsc --noEmit",
|
|
43
43
|
"clean": "rm -rf dist"
|