@hasna/mementos 0.14.46 → 0.14.47
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/cli/index.js +2057 -789
- package/dist/db/database.d.ts.map +1 -1
- package/dist/index.js +1798 -742
- package/dist/mcp/index.js +1800 -741
- package/dist/server/index.js +2035 -748
- package/dist/storage.d.ts +23 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +50 -8
- package/package.json +1 -1
package/dist/storage.d.ts
CHANGED
|
@@ -43,6 +43,12 @@ export declare class PgAdapter implements DbAdapter {
|
|
|
43
43
|
all(sql: string, ...params: any[]): any[];
|
|
44
44
|
exec(sql: string): void;
|
|
45
45
|
prepare(sql: string): PreparedStatement;
|
|
46
|
+
/**
|
|
47
|
+
* Bun-sqlite-style `query()` shim so the CLI/MCP/server call sites that do
|
|
48
|
+
* `db.query(sql).get(...)` / `.all(...)` / `.run(...)` work unchanged against
|
|
49
|
+
* Postgres in cloud mode. Behaves like {@link prepare}.
|
|
50
|
+
*/
|
|
51
|
+
query(sql: string): PreparedStatement;
|
|
46
52
|
close(): void;
|
|
47
53
|
transaction<T>(fn: () => T): T;
|
|
48
54
|
get raw(): Pool;
|
|
@@ -59,7 +65,23 @@ export declare class PgAdapterAsync {
|
|
|
59
65
|
transaction<T>(fn: (client: PoolClient) => Promise<T>): Promise<T>;
|
|
60
66
|
get raw(): Pool;
|
|
61
67
|
}
|
|
62
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Canonical storage-mode axis (aligned with the shared cloud-runtime contract).
|
|
70
|
+
*
|
|
71
|
+
* - `local` — SQLite on disk. Default. Unchanged behavior.
|
|
72
|
+
* - `cloud` — pure remote: reads AND writes go directly to cloud Postgres.
|
|
73
|
+
*
|
|
74
|
+
* The legacy values `remote` and `hybrid` are still accepted as INPUT (env or
|
|
75
|
+
* config file) for backwards compatibility, but they are DEPRECATED aliases
|
|
76
|
+
* that normalize to `cloud`. See {@link DeprecatedStorageMode}. The historical
|
|
77
|
+
* local<->remote sync engine (the "hybrid sync path") is retained only for
|
|
78
|
+
* back-compat and is explicitly NOT the fleet cutover path.
|
|
79
|
+
*/
|
|
80
|
+
export type StorageMode = "local" | "cloud";
|
|
81
|
+
/** Deprecated storage-mode aliases accepted as input; all map to `cloud`. */
|
|
82
|
+
export type DeprecatedStorageMode = "remote" | "hybrid";
|
|
83
|
+
/** Any value accepted from env/config for the storage mode. */
|
|
84
|
+
export type StorageModeInput = StorageMode | DeprecatedStorageMode;
|
|
63
85
|
export declare const MEMENTOS_STORAGE_TABLES: readonly ["projects", "agents", "machines", "sessions", "entities", "memories", "relations", "entity_memories", "memory_tags", "memory_versions", "memory_embeddings", "tool_events", "resource_locks", "memory_ratings"];
|
|
64
86
|
export declare const STORAGE_TABLES: readonly ["projects", "agents", "machines", "sessions", "entities", "memories", "relations", "entity_memories", "memory_tags", "memory_versions", "memory_embeddings", "tool_events", "resource_locks", "memory_ratings"];
|
|
65
87
|
export type MementosStorageTable = (typeof MEMENTOS_STORAGE_TABLES)[number];
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKtC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IAC3B,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IAC7B,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAC9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IAC1C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACxC,KAAK,IAAI,IAAI,CAAC;IACd,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;CAChC;AAOD,qBAAa,aAAc,YAAW,SAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;gBAElB,IAAI,EAAE,MAAM;IAMxB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS;IAQ7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG;IAIvC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAIzC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,KAAK,CAAC,GAAG,EAAE,MAAM;IAIjB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;IAkBvC,KAAK,IAAI,IAAI;IAIb,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAI9B,IAAI,GAAG,IAAI,QAAQ,CAElB;CACF;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/storage.js
CHANGED
|
@@ -128,6 +128,7 @@ function translateSql(sql) {
|
|
|
128
128
|
translated = translated.replace(/;?\s*$/, " ON CONFLICT DO NOTHING");
|
|
129
129
|
}
|
|
130
130
|
translated = translated.replace(/INSERT\s+OR\s+REPLACE\s+INTO/gi, "INSERT INTO");
|
|
131
|
+
translated = translated.replace(/COALESCE\s*\(\s*pinned\s*,\s*0\s*\)/gi, "COALESCE(pinned, FALSE)");
|
|
131
132
|
return translated;
|
|
132
133
|
}
|
|
133
134
|
function shouldUsePgSsl(connectionString) {
|
|
@@ -142,13 +143,40 @@ function shouldUsePgSsl(connectionString) {
|
|
|
142
143
|
return ["1", "true", "yes", "on", "require"].includes(ssl ?? "") || ["require", "verify-ca", "verify-full"].includes(sslMode ?? "");
|
|
143
144
|
}
|
|
144
145
|
function sslConfigFor(connectionString) {
|
|
145
|
-
|
|
146
|
+
if (!shouldUsePgSsl(connectionString))
|
|
147
|
+
return;
|
|
148
|
+
let sslMode;
|
|
149
|
+
try {
|
|
150
|
+
sslMode = new URL(connectionString).searchParams.get("sslmode")?.trim().toLowerCase() ?? undefined;
|
|
151
|
+
} catch {
|
|
152
|
+
sslMode = new URLSearchParams(connectionString.split("?", 2)[1] ?? "").get("sslmode")?.trim().toLowerCase() ?? undefined;
|
|
153
|
+
}
|
|
154
|
+
if (sslMode === "verify-ca" || sslMode === "verify-full") {
|
|
155
|
+
return { rejectUnauthorized: true };
|
|
156
|
+
}
|
|
157
|
+
return { rejectUnauthorized: false };
|
|
158
|
+
}
|
|
159
|
+
function stripSslParams(connectionString) {
|
|
160
|
+
try {
|
|
161
|
+
const url = new URL(connectionString);
|
|
162
|
+
url.searchParams.delete("ssl");
|
|
163
|
+
url.searchParams.delete("sslmode");
|
|
164
|
+
return url.toString();
|
|
165
|
+
} catch {
|
|
166
|
+
return connectionString;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function makePool(connectionString) {
|
|
170
|
+
return new pg.Pool({
|
|
171
|
+
connectionString: stripSslParams(connectionString),
|
|
172
|
+
ssl: sslConfigFor(connectionString)
|
|
173
|
+
});
|
|
146
174
|
}
|
|
147
175
|
|
|
148
176
|
class PgAdapter {
|
|
149
177
|
pool;
|
|
150
178
|
constructor(input) {
|
|
151
|
-
this.pool = typeof input === "string" ?
|
|
179
|
+
this.pool = typeof input === "string" ? makePool(input) : input;
|
|
152
180
|
}
|
|
153
181
|
runSync(fn) {
|
|
154
182
|
let result;
|
|
@@ -207,6 +235,9 @@ class PgAdapter {
|
|
|
207
235
|
finalize: () => {}
|
|
208
236
|
};
|
|
209
237
|
}
|
|
238
|
+
query(sql) {
|
|
239
|
+
return this.prepare(sql);
|
|
240
|
+
}
|
|
210
241
|
close() {
|
|
211
242
|
this.runSync(async () => {
|
|
212
243
|
await this.pool.end();
|
|
@@ -239,7 +270,7 @@ class PgAdapter {
|
|
|
239
270
|
class PgAdapterAsync {
|
|
240
271
|
pool;
|
|
241
272
|
constructor(input) {
|
|
242
|
-
this.pool = typeof input === "string" ?
|
|
273
|
+
this.pool = typeof input === "string" ? makePool(input) : input;
|
|
243
274
|
}
|
|
244
275
|
async run(sql, ...params) {
|
|
245
276
|
const result = await this.pool.query(translateSql(sql), normalizeParams(params));
|
|
@@ -284,13 +315,23 @@ function readEnv(name) {
|
|
|
284
315
|
const value = process.env[name]?.trim();
|
|
285
316
|
return value ? value : null;
|
|
286
317
|
}
|
|
318
|
+
function warnDeprecatedStorageMode(alias) {
|
|
319
|
+
if (warnedDeprecatedModes.has(alias))
|
|
320
|
+
return;
|
|
321
|
+
warnedDeprecatedModes.add(alias);
|
|
322
|
+
process.emitWarning(`${MEMENTOS_STORAGE_ENV.mode}="${alias}" is deprecated; use "cloud". ` + `"${alias}" now maps to pure-remote cloud storage. The local<->remote ` + `sync path is deprecated and is not the fleet cutover path.`, { type: "DeprecationWarning", code: "MEMENTOS_STORAGE_MODE_ALIAS" });
|
|
323
|
+
}
|
|
287
324
|
function normalizeStorageMode(value) {
|
|
288
325
|
if (!value)
|
|
289
326
|
return null;
|
|
290
327
|
const normalized = value.trim().toLowerCase();
|
|
291
|
-
if (normalized === "local" || normalized === "
|
|
328
|
+
if (normalized === "local" || normalized === "cloud") {
|
|
292
329
|
return normalized;
|
|
293
330
|
}
|
|
331
|
+
if (normalized === "remote" || normalized === "hybrid") {
|
|
332
|
+
warnDeprecatedStorageMode(normalized);
|
|
333
|
+
return "cloud";
|
|
334
|
+
}
|
|
294
335
|
return null;
|
|
295
336
|
}
|
|
296
337
|
function readConfigFile() {
|
|
@@ -357,7 +398,7 @@ function getStorageConfig() {
|
|
|
357
398
|
if (modeOverride) {
|
|
358
399
|
merged.mode = modeOverride;
|
|
359
400
|
} else if (envConnectionString && merged.mode === "local") {
|
|
360
|
-
merged.mode = "
|
|
401
|
+
merged.mode = "cloud";
|
|
361
402
|
}
|
|
362
403
|
return merged;
|
|
363
404
|
}
|
|
@@ -379,7 +420,7 @@ function getStorageStatus() {
|
|
|
379
420
|
const mode = getStorageConfig().mode;
|
|
380
421
|
const databaseUrl = getStorageDatabaseUrl();
|
|
381
422
|
const issues = [];
|
|
382
|
-
if (
|
|
423
|
+
if (mode === "cloud" && !databaseUrl) {
|
|
383
424
|
issues.push(`Missing ${MEMENTOS_STORAGE_ENV.databaseUrl}`);
|
|
384
425
|
}
|
|
385
426
|
return {
|
|
@@ -387,7 +428,7 @@ function getStorageStatus() {
|
|
|
387
428
|
service: "mementos",
|
|
388
429
|
mode,
|
|
389
430
|
local_default: mode === "local",
|
|
390
|
-
remote_enabled: mode === "
|
|
431
|
+
remote_enabled: mode === "cloud",
|
|
391
432
|
database: {
|
|
392
433
|
configured: Boolean(databaseUrl),
|
|
393
434
|
redacted_url: redactDatabaseUrl(databaseUrl)
|
|
@@ -569,7 +610,7 @@ function resetAllSyncMeta(db) {
|
|
|
569
610
|
ensureSyncMetaTable(db);
|
|
570
611
|
db.run("DELETE FROM _sync_meta");
|
|
571
612
|
}
|
|
572
|
-
var MEMENTOS_STORAGE_TABLES, STORAGE_TABLES, MEMENTOS_STORAGE_ENV, MEMENTOS_STORAGE_FALLBACK_ENV, DEFAULT_STORAGE_CONFIG, STORAGE_CONFIG_DIR, STORAGE_CONFIG_PATH, DATABASE_ENV_NAMES, MODE_ENV_NAMES, getMementosStorageStatus, SYNC_EXCLUDED_TABLE_PATTERNS, SYNC_META_TABLE_SQL = `
|
|
613
|
+
var MEMENTOS_STORAGE_TABLES, STORAGE_TABLES, MEMENTOS_STORAGE_ENV, MEMENTOS_STORAGE_FALLBACK_ENV, DEFAULT_STORAGE_CONFIG, STORAGE_CONFIG_DIR, STORAGE_CONFIG_PATH, DATABASE_ENV_NAMES, MODE_ENV_NAMES, warnedDeprecatedModes, getMementosStorageStatus, SYNC_EXCLUDED_TABLE_PATTERNS, SYNC_META_TABLE_SQL = `
|
|
573
614
|
CREATE TABLE IF NOT EXISTS _sync_meta (
|
|
574
615
|
table_name TEXT PRIMARY KEY,
|
|
575
616
|
last_synced_at TEXT,
|
|
@@ -627,6 +668,7 @@ var init_storage = __esm(() => {
|
|
|
627
668
|
{ name: MEMENTOS_STORAGE_ENV.mode, deprecated: false },
|
|
628
669
|
{ name: MEMENTOS_STORAGE_FALLBACK_ENV.mode, deprecated: false }
|
|
629
670
|
];
|
|
671
|
+
warnedDeprecatedModes = new Set;
|
|
630
672
|
getMementosStorageStatus = getStorageStatus;
|
|
631
673
|
SYNC_EXCLUDED_TABLE_PATTERNS = [
|
|
632
674
|
/^sqlite_/,
|