@framers/agentos 0.3.0 → 0.3.2
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/memory/retrieval/store/Brain.d.ts +6 -11
- package/dist/memory/retrieval/store/Brain.d.ts.map +1 -1
- package/dist/memory/retrieval/store/Brain.js +122 -68
- package/dist/memory/retrieval/store/Brain.js.map +1 -1
- package/dist/memory/retrieval/store/migrations/MigrationRunner.d.ts +50 -0
- package/dist/memory/retrieval/store/migrations/MigrationRunner.d.ts.map +1 -0
- package/dist/memory/retrieval/store/migrations/MigrationRunner.js +100 -0
- package/dist/memory/retrieval/store/migrations/MigrationRunner.js.map +1 -0
- package/dist/memory/retrieval/store/migrations/index.d.ts +20 -0
- package/dist/memory/retrieval/store/migrations/index.d.ts.map +1 -0
- package/dist/memory/retrieval/store/migrations/index.js +19 -0
- package/dist/memory/retrieval/store/migrations/index.js.map +1 -0
- package/dist/memory/retrieval/store/migrations/types.d.ts +28 -0
- package/dist/memory/retrieval/store/migrations/types.d.ts.map +1 -0
- package/dist/memory/retrieval/store/migrations/types.js +7 -0
- package/dist/memory/retrieval/store/migrations/types.js.map +1 -0
- package/dist/memory/retrieval/store/migrations/v1-to-v2.d.ts +9 -0
- package/dist/memory/retrieval/store/migrations/v1-to-v2.d.ts.map +1 -1
- package/dist/memory/retrieval/store/migrations/v1-to-v2.js +72 -4
- package/dist/memory/retrieval/store/migrations/v1-to-v2.js.map +1 -1
- package/dist/memory/retrieval/store/portable-tables.d.ts +27 -0
- package/dist/memory/retrieval/store/portable-tables.d.ts.map +1 -0
- package/dist/memory/retrieval/store/portable-tables.js +56 -0
- package/dist/memory/retrieval/store/portable-tables.js.map +1 -0
- package/dist/memory/retrieval/typed-network/FourWayRrf.d.ts +51 -0
- package/dist/memory/retrieval/typed-network/FourWayRrf.d.ts.map +1 -0
- package/dist/memory/retrieval/typed-network/FourWayRrf.js +47 -0
- package/dist/memory/retrieval/typed-network/FourWayRrf.js.map +1 -0
- package/dist/memory/retrieval/typed-network/TemporalIntervalOverlap.d.ts +34 -0
- package/dist/memory/retrieval/typed-network/TemporalIntervalOverlap.d.ts.map +1 -0
- package/dist/memory/retrieval/typed-network/TemporalIntervalOverlap.js +86 -0
- package/dist/memory/retrieval/typed-network/TemporalIntervalOverlap.js.map +1 -0
- package/dist/memory/retrieval/typed-network/TypedNetworkObserver.d.ts +67 -0
- package/dist/memory/retrieval/typed-network/TypedNetworkObserver.d.ts.map +1 -0
- package/dist/memory/retrieval/typed-network/TypedNetworkObserver.js +78 -0
- package/dist/memory/retrieval/typed-network/TypedNetworkObserver.js.map +1 -0
- package/dist/memory/retrieval/typed-network/TypedNetworkStore.d.ts +83 -0
- package/dist/memory/retrieval/typed-network/TypedNetworkStore.d.ts.map +1 -0
- package/dist/memory/retrieval/typed-network/TypedNetworkStore.js +109 -0
- package/dist/memory/retrieval/typed-network/TypedNetworkStore.js.map +1 -0
- package/dist/memory/retrieval/typed-network/TypedSpreadingActivation.d.ts +80 -0
- package/dist/memory/retrieval/typed-network/TypedSpreadingActivation.d.ts.map +1 -0
- package/dist/memory/retrieval/typed-network/TypedSpreadingActivation.js +97 -0
- package/dist/memory/retrieval/typed-network/TypedSpreadingActivation.js.map +1 -0
- package/dist/memory/retrieval/typed-network/index.d.ts +18 -0
- package/dist/memory/retrieval/typed-network/index.d.ts.map +1 -0
- package/dist/memory/retrieval/typed-network/index.js +18 -0
- package/dist/memory/retrieval/typed-network/index.js.map +1 -0
- package/dist/memory/retrieval/typed-network/prompts/extraction-prompt.d.ts +30 -0
- package/dist/memory/retrieval/typed-network/prompts/extraction-prompt.d.ts.map +1 -0
- package/dist/memory/retrieval/typed-network/prompts/extraction-prompt.js +47 -0
- package/dist/memory/retrieval/typed-network/prompts/extraction-prompt.js.map +1 -0
- package/dist/memory/retrieval/typed-network/prompts/extraction-schema.d.ts +71 -0
- package/dist/memory/retrieval/typed-network/prompts/extraction-schema.d.ts.map +1 -0
- package/dist/memory/retrieval/typed-network/prompts/extraction-schema.js +39 -0
- package/dist/memory/retrieval/typed-network/prompts/extraction-schema.js.map +1 -0
- package/dist/memory/retrieval/typed-network/types.d.ts +123 -0
- package/dist/memory/retrieval/typed-network/types.d.ts.map +1 -0
- package/dist/memory/retrieval/typed-network/types.js +48 -0
- package/dist/memory/retrieval/typed-network/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -55,6 +55,7 @@ import type { StorageAdapter, StorageRunResult, StorageParameters, StorageFeatur
|
|
|
55
55
|
* (`run`, `get`, `all`, `exec`, `transaction`) for all database operations.
|
|
56
56
|
*/
|
|
57
57
|
export declare class Brain {
|
|
58
|
+
#private;
|
|
58
59
|
/**
|
|
59
60
|
* The cross-platform storage adapter backing this brain.
|
|
60
61
|
* Not exposed publicly — consumers use the async proxy methods instead.
|
|
@@ -65,17 +66,6 @@ export declare class Brain {
|
|
|
65
66
|
* Created by `createStorageFeatures(adapter)` during `open()`.
|
|
66
67
|
*/
|
|
67
68
|
private readonly _features;
|
|
68
|
-
/**
|
|
69
|
-
* Brain identifier used to scope every brain-owned table row.
|
|
70
|
-
*
|
|
71
|
-
* In SQLite per-file mode, defaults to the file basename (or `'default'`
|
|
72
|
-
* for `:memory:`); subsystems pass it through to the `brain_id` column
|
|
73
|
-
* on every INSERT/UPDATE and into every WHERE clause on SELECT.
|
|
74
|
-
*
|
|
75
|
-
* In Postgres mode (multi-tenant), this is required and must be unique
|
|
76
|
-
* per brain across the database.
|
|
77
|
-
*/
|
|
78
|
-
private readonly _brainId;
|
|
79
69
|
/**
|
|
80
70
|
* Private constructor — use `Brain.open(dbPath)` instead.
|
|
81
71
|
*
|
|
@@ -263,6 +253,11 @@ export declare class Brain {
|
|
|
263
253
|
* file. This means importing an `alice` snapshot into a Brain opened
|
|
264
254
|
* with `brainId: 'alice-fork'` produces a fork with no shared identity.
|
|
265
255
|
*
|
|
256
|
+
* **CAVEAT:** importing from a pre-0.3.0 SQLite file MUTATES the source
|
|
257
|
+
* file. Opening the source via `Brain.openSqlite` runs the v1 to v2
|
|
258
|
+
* migration in place. To preserve the source unchanged, copy the file to
|
|
259
|
+
* a temp path before calling this method.
|
|
260
|
+
*
|
|
266
261
|
* @param sourcePath - Source SQLite file path (typically produced by
|
|
267
262
|
* `Brain.exportToSqlite`).
|
|
268
263
|
* @param opts.strategy - `'merge'` (default) upserts on PK collision;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Brain.d.ts","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/Brain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"Brain.d.ts","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/Brain.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,11 +28,24 @@
|
|
|
28
28
|
*
|
|
29
29
|
* @module memory/store/Brain
|
|
30
30
|
*/
|
|
31
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
32
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
33
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
34
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
35
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
36
|
+
};
|
|
37
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
38
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
39
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
40
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
41
|
+
};
|
|
42
|
+
var _Brain_brainId;
|
|
31
43
|
import { promises as fs } from 'node:fs';
|
|
32
44
|
import path from 'node:path';
|
|
33
45
|
import { resolveStorageAdapter, createStorageFeatures, createPostgresAdapter } from '@framers/sql-storage-adapter';
|
|
34
46
|
import { DDL_ARCHIVED_TRACES, DDL_ARCHIVED_TRACES_IDX_AGENT_TIME, DDL_ARCHIVED_TRACES_IDX_REASON, DDL_ARCHIVE_ACCESS_LOG, DDL_ARCHIVE_ACCESS_LOG_IDX, } from '../../archive/SqlStorageMemoryArchive.js';
|
|
35
|
-
import {
|
|
47
|
+
import { MigrationRunner, MIGRATIONS, LATEST_SCHEMA_VERSION } from './migrations/index.js';
|
|
48
|
+
import { PORTABLE_TABLES, PORTABLE_TABLE_PRIMARY_KEYS } from './portable-tables.js';
|
|
36
49
|
/**
|
|
37
50
|
* Derive a stable brain identifier from the database file path.
|
|
38
51
|
*
|
|
@@ -50,11 +63,22 @@ function deriveBrainIdFromPath(dbPath) {
|
|
|
50
63
|
const lastDot = basename.lastIndexOf('.');
|
|
51
64
|
return lastDot > 0 ? basename.slice(0, lastDot) : basename;
|
|
52
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Redact the password segment from a Postgres connection string for safe
|
|
68
|
+
* inclusion in error messages.
|
|
69
|
+
*
|
|
70
|
+
* `postgresql://user:secret@host/db` becomes `postgresql://user:***@host/db`.
|
|
71
|
+
* Connection strings without embedded passwords pass through unchanged.
|
|
72
|
+
*/
|
|
73
|
+
function redactPostgresPassword(connStr) {
|
|
74
|
+
return connStr.replace(/(:\/\/[^:]+:)[^@]+(@)/, '$1***$2');
|
|
75
|
+
}
|
|
53
76
|
// ---------------------------------------------------------------------------
|
|
54
77
|
// Constants
|
|
55
78
|
// ---------------------------------------------------------------------------
|
|
56
|
-
|
|
57
|
-
|
|
79
|
+
// SCHEMA_VERSION moved to migrations/index.ts as LATEST_SCHEMA_VERSION
|
|
80
|
+
// (derived from the highest registered migration, so adding v2-to-v3.ts
|
|
81
|
+
// auto-bumps the seed value).
|
|
58
82
|
// ---------------------------------------------------------------------------
|
|
59
83
|
// DDL — full schema
|
|
60
84
|
// ---------------------------------------------------------------------------
|
|
@@ -382,9 +406,20 @@ export class Brain {
|
|
|
382
406
|
* @param brainId - Brain identifier used to scope multi-tenant queries.
|
|
383
407
|
*/
|
|
384
408
|
constructor(adapter, features, brainId) {
|
|
409
|
+
/**
|
|
410
|
+
* Brain identifier used to scope every brain-owned table row.
|
|
411
|
+
*
|
|
412
|
+
* In SQLite per-file mode, defaults to the file basename (or `'default'`
|
|
413
|
+
* for `:memory:`); subsystems pass it through to the `brain_id` column
|
|
414
|
+
* on every INSERT/UPDATE and into every WHERE clause on SELECT.
|
|
415
|
+
*
|
|
416
|
+
* In Postgres mode (multi-tenant), this is required and must be unique
|
|
417
|
+
* per brain across the database.
|
|
418
|
+
*/
|
|
419
|
+
_Brain_brainId.set(this, void 0);
|
|
385
420
|
this._adapter = adapter;
|
|
386
421
|
this._features = features;
|
|
387
|
-
this
|
|
422
|
+
__classPrivateFieldSet(this, _Brain_brainId, brainId, "f");
|
|
388
423
|
}
|
|
389
424
|
/**
|
|
390
425
|
* Brain identifier scoping every query through this Brain instance.
|
|
@@ -392,10 +427,22 @@ export class Brain {
|
|
|
392
427
|
* to inject `brain_id` into their own SQL.
|
|
393
428
|
*/
|
|
394
429
|
get brainId() {
|
|
395
|
-
return this
|
|
430
|
+
return __classPrivateFieldGet(this, _Brain_brainId, "f");
|
|
396
431
|
}
|
|
397
432
|
// ---------------------------------------------------------------------------
|
|
398
433
|
// Async factories (three named entry points)
|
|
434
|
+
//
|
|
435
|
+
// Naming convention:
|
|
436
|
+
// - openSqlite / openPostgres: factory by-DIALECT. The caller specifies
|
|
437
|
+
// "I want a SQLite-backed brain at this file" or "I want a Postgres-
|
|
438
|
+
// backed brain at this URL." The adapter is constructed internally.
|
|
439
|
+
// - openWithAdapter: factory by-PRE-BUILT-ADAPTER. The caller has already
|
|
440
|
+
// built the StorageAdapter (e.g., to share a connection pool with
|
|
441
|
+
// another subsystem) and hands it to Brain to consume.
|
|
442
|
+
//
|
|
443
|
+
// The naming asymmetry is intentional: the first two are dialect-specific
|
|
444
|
+
// entry points; the third is the escape hatch for advanced cases where the
|
|
445
|
+
// adapter is owned outside the Brain.
|
|
399
446
|
// ---------------------------------------------------------------------------
|
|
400
447
|
/**
|
|
401
448
|
* Open a Brain backed by SQLite. Tries adapters in order:
|
|
@@ -431,11 +478,19 @@ export class Brain {
|
|
|
431
478
|
}
|
|
432
479
|
// Use createPostgresAdapter directly so we can pass pool size; the
|
|
433
480
|
// resolveStorageAdapter facade only forwards `connectionString`.
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
481
|
+
let adapter;
|
|
482
|
+
try {
|
|
483
|
+
adapter = await createPostgresAdapter({
|
|
484
|
+
connectionString,
|
|
485
|
+
max: opts.poolSize ?? 10,
|
|
486
|
+
});
|
|
487
|
+
await adapter.open();
|
|
488
|
+
}
|
|
489
|
+
catch (err) {
|
|
490
|
+
const safe = redactPostgresPassword(connectionString);
|
|
491
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
492
|
+
throw new Error(`Brain.openPostgres: connection failed for ${safe}: ${msg}`);
|
|
493
|
+
}
|
|
439
494
|
return Brain._initialize(adapter, opts.brainId);
|
|
440
495
|
}
|
|
441
496
|
/**
|
|
@@ -475,7 +530,7 @@ export class Brain {
|
|
|
475
530
|
const fkPragma = features.dialect.pragma('foreign_keys', 'ON');
|
|
476
531
|
if (fkPragma)
|
|
477
532
|
await adapter.exec(fkPragma);
|
|
478
|
-
await
|
|
533
|
+
await MigrationRunner.runPending(adapter, features, brainId, MIGRATIONS);
|
|
479
534
|
await brain._initSchema();
|
|
480
535
|
await brain._seedMeta();
|
|
481
536
|
return brain;
|
|
@@ -609,8 +664,8 @@ export class Brain {
|
|
|
609
664
|
// INSERT OR IGNORE is idempotent — no transaction needed.
|
|
610
665
|
// Avoids sql.js "cannot rollback" errors when DDL from _initSchema()
|
|
611
666
|
// leaves the connection in an implicit-commit state.
|
|
612
|
-
await this._adapter.run(dialect.insertOrIgnore('brain_meta', ['brain_id', 'key', 'value'], ['?', '?', '?']), [this
|
|
613
|
-
await this._adapter.run(dialect.insertOrIgnore('brain_meta', ['brain_id', 'key', 'value'], ['?', '?', '?']), [this
|
|
667
|
+
await this._adapter.run(dialect.insertOrIgnore('brain_meta', ['brain_id', 'key', 'value'], ['?', '?', '?']), [__classPrivateFieldGet(this, _Brain_brainId, "f"), 'schema_version', String(LATEST_SCHEMA_VERSION)]);
|
|
668
|
+
await this._adapter.run(dialect.insertOrIgnore('brain_meta', ['brain_id', 'key', 'value'], ['?', '?', '?']), [__classPrivateFieldGet(this, _Brain_brainId, "f"), 'created_at', Date.now().toString()]);
|
|
614
669
|
}
|
|
615
670
|
// ---------------------------------------------------------------------------
|
|
616
671
|
// Public API
|
|
@@ -622,7 +677,7 @@ export class Brain {
|
|
|
622
677
|
* @returns The stored string value, or `undefined` if the key does not exist.
|
|
623
678
|
*/
|
|
624
679
|
async getMeta(key) {
|
|
625
|
-
const row = await this._adapter.get('SELECT value FROM brain_meta WHERE brain_id = ? AND key = ?', [this
|
|
680
|
+
const row = await this._adapter.get('SELECT value FROM brain_meta WHERE brain_id = ? AND key = ?', [__classPrivateFieldGet(this, _Brain_brainId, "f"), key]);
|
|
626
681
|
return row?.value;
|
|
627
682
|
}
|
|
628
683
|
/**
|
|
@@ -635,7 +690,7 @@ export class Brain {
|
|
|
635
690
|
* @param value - The string value to store.
|
|
636
691
|
*/
|
|
637
692
|
async setMeta(key, value) {
|
|
638
|
-
await this._adapter.run(this._features.dialect.insertOrReplace('brain_meta', ['brain_id', 'key', 'value'], ['?', '?', '?'], 'brain_id, key'), [this
|
|
693
|
+
await this._adapter.run(this._features.dialect.insertOrReplace('brain_meta', ['brain_id', 'key', 'value'], ['?', '?', '?'], 'brain_id, key'), [__classPrivateFieldGet(this, _Brain_brainId, "f"), key, value]);
|
|
639
694
|
}
|
|
640
695
|
/**
|
|
641
696
|
* Check whether a given embedding dimension is compatible with this brain.
|
|
@@ -695,15 +750,15 @@ export class Brain {
|
|
|
695
750
|
// Open a fresh SQLite Brain at the target path. We import under the
|
|
696
751
|
// source brainId so the export file is identifiable as belonging to
|
|
697
752
|
// this brain even if the receiving Brain has a different id.
|
|
698
|
-
const target = await Brain.openSqlite(targetPath, { brainId: this
|
|
753
|
+
const target = await Brain.openSqlite(targetPath, { brainId: __classPrivateFieldGet(this, _Brain_brainId, "f") });
|
|
699
754
|
try {
|
|
700
755
|
for (const table of PORTABLE_TABLES) {
|
|
701
|
-
const rows = await this.all(`SELECT * FROM ${table} WHERE brain_id = ?`, [this
|
|
756
|
+
const rows = await this.all(`SELECT * FROM ${table} WHERE brain_id = ?`, [__classPrivateFieldGet(this, _Brain_brainId, "f")]);
|
|
702
757
|
if (rows.length === 0)
|
|
703
758
|
continue;
|
|
704
759
|
// Upsert so source rows override the brain_meta defaults
|
|
705
760
|
// (schema_version, created_at) seeded during target initialisation.
|
|
706
|
-
await this._bulkCopy(target, table, rows, this
|
|
761
|
+
await this._bulkCopy(target, table, rows, __classPrivateFieldGet(this, _Brain_brainId, "f"), { upsert: true });
|
|
707
762
|
}
|
|
708
763
|
}
|
|
709
764
|
finally {
|
|
@@ -720,6 +775,11 @@ export class Brain {
|
|
|
720
775
|
* file. This means importing an `alice` snapshot into a Brain opened
|
|
721
776
|
* with `brainId: 'alice-fork'` produces a fork with no shared identity.
|
|
722
777
|
*
|
|
778
|
+
* **CAVEAT:** importing from a pre-0.3.0 SQLite file MUTATES the source
|
|
779
|
+
* file. Opening the source via `Brain.openSqlite` runs the v1 to v2
|
|
780
|
+
* migration in place. To preserve the source unchanged, copy the file to
|
|
781
|
+
* a temp path before calling this method.
|
|
782
|
+
*
|
|
723
783
|
* @param sourcePath - Source SQLite file path (typically produced by
|
|
724
784
|
* `Brain.exportToSqlite`).
|
|
725
785
|
* @param opts.strategy - `'merge'` (default) upserts on PK collision;
|
|
@@ -728,14 +788,41 @@ export class Brain {
|
|
|
728
788
|
*/
|
|
729
789
|
async importFromSqlite(sourcePath, opts = {}) {
|
|
730
790
|
const strategy = opts.strategy ?? 'merge';
|
|
731
|
-
|
|
791
|
+
// Peek at the source's brain_meta BEFORE opening it as a Brain. Opening
|
|
792
|
+
// via Brain.openSqlite without a brainId would derive one from the file
|
|
793
|
+
// path and pollute brain_meta with that synthetic id (via _seedMeta),
|
|
794
|
+
// breaking the single-brain check below. We use a raw adapter for the
|
|
795
|
+
// peek so we don't trigger any seeding.
|
|
796
|
+
const peekAdapter = await resolveStorageAdapter({
|
|
797
|
+
filePath: sourcePath,
|
|
798
|
+
priority: ['better-sqlite3', 'sqljs'],
|
|
799
|
+
quiet: true,
|
|
800
|
+
});
|
|
801
|
+
let sourceBrainIds;
|
|
802
|
+
try {
|
|
803
|
+
sourceBrainIds = await peekAdapter.all(`SELECT DISTINCT brain_id FROM brain_meta WHERE brain_id IS NOT NULL`);
|
|
804
|
+
}
|
|
805
|
+
finally {
|
|
806
|
+
await peekAdapter.close();
|
|
807
|
+
}
|
|
808
|
+
if (sourceBrainIds.length > 1) {
|
|
809
|
+
const ids = sourceBrainIds.map((r) => r.brain_id).join(', ');
|
|
810
|
+
throw new Error(`Brain.importFromSqlite: source contains multiple brain_ids (${ids}). ` +
|
|
811
|
+
`Imports must be from a single-brain export (use Brain.exportToSqlite).`);
|
|
812
|
+
}
|
|
813
|
+
// Open the source as a Brain with the peeked brainId (if any) to avoid
|
|
814
|
+
// _seedMeta polluting brain_meta with a path-derived id.
|
|
815
|
+
const sourceBrainId = sourceBrainIds[0]?.brain_id;
|
|
816
|
+
const source = sourceBrainId
|
|
817
|
+
? await Brain.openSqlite(sourcePath, { brainId: sourceBrainId })
|
|
818
|
+
: await Brain.openSqlite(sourcePath);
|
|
732
819
|
const tablesImported = {};
|
|
733
820
|
try {
|
|
734
821
|
if (strategy === 'replace') {
|
|
735
822
|
// Wipe existing rows for the receiving brainId in every portable table.
|
|
736
823
|
// Order matters: child tables before parent tables to satisfy FKs.
|
|
737
824
|
for (const table of [...PORTABLE_TABLES].reverse()) {
|
|
738
|
-
await this.run(`DELETE FROM ${table} WHERE brain_id = ?`, [this
|
|
825
|
+
await this.run(`DELETE FROM ${table} WHERE brain_id = ?`, [__classPrivateFieldGet(this, _Brain_brainId, "f")]);
|
|
739
826
|
}
|
|
740
827
|
}
|
|
741
828
|
for (const table of PORTABLE_TABLES) {
|
|
@@ -748,7 +835,7 @@ export class Brain {
|
|
|
748
835
|
// Always use upsert to gracefully handle the brain_meta rows seeded
|
|
749
836
|
// by `_seedMeta` during the receiving Brain's initialization (which
|
|
750
837
|
// would otherwise collide with the source's schema_version/created_at).
|
|
751
|
-
await this._bulkCopy(this, table, rows, this
|
|
838
|
+
await this._bulkCopy(this, table, rows, __classPrivateFieldGet(this, _Brain_brainId, "f"), { upsert: true });
|
|
752
839
|
}
|
|
753
840
|
}
|
|
754
841
|
finally {
|
|
@@ -792,53 +879,20 @@ export class Brain {
|
|
|
792
879
|
* an unconsumed WAL file.
|
|
793
880
|
*/
|
|
794
881
|
async close() {
|
|
795
|
-
|
|
882
|
+
try {
|
|
883
|
+
await this._adapter.close();
|
|
884
|
+
}
|
|
885
|
+
catch (err) {
|
|
886
|
+
// Adapter close failures (pool drain timeouts, lock-release races on
|
|
887
|
+
// shutdown) shouldn't propagate to callers who are themselves shutting
|
|
888
|
+
// down and can't usefully react. Log to stderr so CI artifacts capture
|
|
889
|
+
// the failure context if it ever indicates a real problem.
|
|
890
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
891
|
+
process.stderr.write(`[Brain.close] adapter close failed: ${msg}\n`);
|
|
892
|
+
}
|
|
796
893
|
}
|
|
797
894
|
}
|
|
798
|
-
|
|
799
|
-
//
|
|
800
|
-
//
|
|
801
|
-
/**
|
|
802
|
-
* Tables exported and imported by `Brain.exportToSqlite` / `importFromSqlite`.
|
|
803
|
-
* Order matters for import: parents before children to satisfy FKs.
|
|
804
|
-
*/
|
|
805
|
-
const PORTABLE_TABLES = [
|
|
806
|
-
'brain_meta',
|
|
807
|
-
'memory_traces',
|
|
808
|
-
'knowledge_nodes',
|
|
809
|
-
'knowledge_edges',
|
|
810
|
-
'documents',
|
|
811
|
-
'document_chunks',
|
|
812
|
-
'document_images',
|
|
813
|
-
'consolidation_log',
|
|
814
|
-
'retrieval_feedback',
|
|
815
|
-
'conversations',
|
|
816
|
-
'messages',
|
|
817
|
-
'prospective_items',
|
|
818
|
-
'archived_traces',
|
|
819
|
-
'archive_access_log',
|
|
820
|
-
];
|
|
821
|
-
/**
|
|
822
|
-
* Composite primary key columns for each portable table, used by
|
|
823
|
-
* `dialect.insertOrReplace` as the conflict target during merge import.
|
|
824
|
-
*
|
|
825
|
-
* Tables with `INTEGER PRIMARY KEY AUTOINCREMENT` (consolidation_log,
|
|
826
|
-
* retrieval_feedback) use `id` alone since their PK is system-generated.
|
|
827
|
-
*/
|
|
828
|
-
const PORTABLE_TABLE_PRIMARY_KEYS = {
|
|
829
|
-
brain_meta: 'brain_id, key',
|
|
830
|
-
memory_traces: 'brain_id, id',
|
|
831
|
-
knowledge_nodes: 'brain_id, id',
|
|
832
|
-
knowledge_edges: 'brain_id, id',
|
|
833
|
-
documents: 'brain_id, id',
|
|
834
|
-
document_chunks: 'brain_id, id',
|
|
835
|
-
document_images: 'brain_id, id',
|
|
836
|
-
consolidation_log: 'id',
|
|
837
|
-
retrieval_feedback: 'id',
|
|
838
|
-
conversations: 'brain_id, id',
|
|
839
|
-
messages: 'brain_id, id',
|
|
840
|
-
prospective_items: 'brain_id, id',
|
|
841
|
-
archived_traces: 'brain_id, trace_id',
|
|
842
|
-
archive_access_log: 'brain_id, trace_id, accessed_at',
|
|
843
|
-
};
|
|
895
|
+
_Brain_brainId = new WeakMap();
|
|
896
|
+
// PORTABLE_TABLES + PORTABLE_TABLE_PRIMARY_KEYS moved to ./portable-tables.ts
|
|
897
|
+
// (single source of truth shared with v1-to-v2 migration + postgres test cleanup).
|
|
844
898
|
//# sourceMappingURL=Brain.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Brain.js","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/Brain.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Brain.js","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/Brain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MigrationRunner: centralized owner of "how schema migrations
|
|
3
|
+
* run safely." Each registered Migration object knows only its target version
|
|
4
|
+
* and schema-diff logic; the runner handles transaction wrapping, advisory
|
|
5
|
+
* locking (per-brain), and atomic schema_version bumps.
|
|
6
|
+
*
|
|
7
|
+
* Two distinct dialect paths because connection-pooling and transaction
|
|
8
|
+
* semantics differ enough that a unified path obscures correctness:
|
|
9
|
+
*
|
|
10
|
+
* - Postgres: uses `adapter.transaction()` to keep all queries on one pooled
|
|
11
|
+
* connection. Acquires a transaction-scoped advisory lock with
|
|
12
|
+
* `pg_advisory_xact_lock`, which auto-releases on COMMIT/ROLLBACK.
|
|
13
|
+
* - SQLite: uses explicit `BEGIN IMMEDIATE` via `adapter.exec`. Single
|
|
14
|
+
* connection per file, so the connection-pool concern doesn't apply.
|
|
15
|
+
* IMMEDIATE acquires the reserved write lock immediately, eliminating the
|
|
16
|
+
* race window in default DEFERRED mode.
|
|
17
|
+
*
|
|
18
|
+
* @module memory/retrieval/store/migrations/MigrationRunner
|
|
19
|
+
*/
|
|
20
|
+
import type { StorageAdapter, StorageFeatures } from '@framers/sql-storage-adapter';
|
|
21
|
+
import type { Migration } from './types.js';
|
|
22
|
+
export declare class MigrationRunner {
|
|
23
|
+
/**
|
|
24
|
+
* Run all pending migrations against the adapter, scoped by brainId.
|
|
25
|
+
*
|
|
26
|
+
* @returns The list of migration versions that were applied.
|
|
27
|
+
*/
|
|
28
|
+
static runPending(adapter: StorageAdapter, features: StorageFeatures, brainId: string, migrations: Migration[]): Promise<{
|
|
29
|
+
applied: number[];
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Inner migration loop, called once the lock + transaction are established.
|
|
33
|
+
* Reads the current schema_version, filters pending migrations, applies each
|
|
34
|
+
* one, and bumps schema_version inside the same transaction.
|
|
35
|
+
*/
|
|
36
|
+
private static _runMigrations;
|
|
37
|
+
/**
|
|
38
|
+
* Read the current schema_version from brain_meta. Returns null when
|
|
39
|
+
* brain_meta does not exist (fresh database).
|
|
40
|
+
*/
|
|
41
|
+
private static _readSchemaVersion;
|
|
42
|
+
/**
|
|
43
|
+
* Upsert schema_version in brain_meta inside the current transaction.
|
|
44
|
+
* Uses dialect-aware INSERT OR REPLACE.
|
|
45
|
+
*/
|
|
46
|
+
private static _writeSchemaVersion;
|
|
47
|
+
private static _sqliteTableExists;
|
|
48
|
+
private static _postgresTableExists;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=MigrationRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationRunner.d.ts","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/MigrationRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,eAAe;IAC1B;;;;OAIG;WACU,UAAU,CACrB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAyBjC;;;;OAIG;mBACkB,cAAc;IAwBnC;;;OAGG;mBACkB,kBAAkB;IAiBvC;;;OAGG;mBACkB,mBAAmB;mBAiBnB,kBAAkB;mBAWlB,oBAAoB;CAa1C"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MigrationRunner: centralized owner of "how schema migrations
|
|
3
|
+
* run safely." Each registered Migration object knows only its target version
|
|
4
|
+
* and schema-diff logic; the runner handles transaction wrapping, advisory
|
|
5
|
+
* locking (per-brain), and atomic schema_version bumps.
|
|
6
|
+
*
|
|
7
|
+
* Two distinct dialect paths because connection-pooling and transaction
|
|
8
|
+
* semantics differ enough that a unified path obscures correctness:
|
|
9
|
+
*
|
|
10
|
+
* - Postgres: uses `adapter.transaction()` to keep all queries on one pooled
|
|
11
|
+
* connection. Acquires a transaction-scoped advisory lock with
|
|
12
|
+
* `pg_advisory_xact_lock`, which auto-releases on COMMIT/ROLLBACK.
|
|
13
|
+
* - SQLite: uses explicit `BEGIN IMMEDIATE` via `adapter.exec`. Single
|
|
14
|
+
* connection per file, so the connection-pool concern doesn't apply.
|
|
15
|
+
* IMMEDIATE acquires the reserved write lock immediately, eliminating the
|
|
16
|
+
* race window in default DEFERRED mode.
|
|
17
|
+
*
|
|
18
|
+
* @module memory/retrieval/store/migrations/MigrationRunner
|
|
19
|
+
*/
|
|
20
|
+
export class MigrationRunner {
|
|
21
|
+
/**
|
|
22
|
+
* Run all pending migrations against the adapter, scoped by brainId.
|
|
23
|
+
*
|
|
24
|
+
* @returns The list of migration versions that were applied.
|
|
25
|
+
*/
|
|
26
|
+
static async runPending(adapter, features, brainId, migrations) {
|
|
27
|
+
const isPostgres = adapter.kind.includes('postgres');
|
|
28
|
+
if (isPostgres) {
|
|
29
|
+
return adapter.transaction(async (trx) => {
|
|
30
|
+
await trx.run(`SELECT pg_advisory_xact_lock(hashtext($1))`, [`agentos_brain:${brainId}`]);
|
|
31
|
+
return MigrationRunner._runMigrations(trx, features, brainId, migrations);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
// SQLite path: explicit BEGIN IMMEDIATE for single-connection serialization.
|
|
35
|
+
await adapter.exec('BEGIN IMMEDIATE');
|
|
36
|
+
try {
|
|
37
|
+
const result = await MigrationRunner._runMigrations(adapter, features, brainId, migrations);
|
|
38
|
+
await adapter.exec('COMMIT');
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
await adapter.exec('ROLLBACK');
|
|
43
|
+
throw err;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Inner migration loop, called once the lock + transaction are established.
|
|
48
|
+
* Reads the current schema_version, filters pending migrations, applies each
|
|
49
|
+
* one, and bumps schema_version inside the same transaction.
|
|
50
|
+
*/
|
|
51
|
+
static async _runMigrations(adapter, features, brainId, migrations) {
|
|
52
|
+
const current = await MigrationRunner._readSchemaVersion(adapter, brainId);
|
|
53
|
+
// Fresh database: brain_meta does not exist yet. Skip migrations entirely;
|
|
54
|
+
// the upcoming _initSchema call creates the latest schema directly.
|
|
55
|
+
if (current === null)
|
|
56
|
+
return { applied: [] };
|
|
57
|
+
const sorted = [...migrations].sort((a, b) => a.version - b.version);
|
|
58
|
+
const pending = sorted.filter((m) => m.version > current);
|
|
59
|
+
const applied = [];
|
|
60
|
+
for (const migration of pending) {
|
|
61
|
+
await migration.up(adapter, features, brainId);
|
|
62
|
+
await MigrationRunner._writeSchemaVersion(adapter, features, brainId, migration.version);
|
|
63
|
+
applied.push(migration.version);
|
|
64
|
+
}
|
|
65
|
+
return { applied };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Read the current schema_version from brain_meta. Returns null when
|
|
69
|
+
* brain_meta does not exist (fresh database).
|
|
70
|
+
*/
|
|
71
|
+
static async _readSchemaVersion(adapter, brainId) {
|
|
72
|
+
const isPostgres = adapter.kind.includes('postgres');
|
|
73
|
+
const brainMetaExists = isPostgres
|
|
74
|
+
? await MigrationRunner._postgresTableExists(adapter, 'brain_meta')
|
|
75
|
+
: await MigrationRunner._sqliteTableExists(adapter, 'brain_meta');
|
|
76
|
+
if (!brainMetaExists)
|
|
77
|
+
return null;
|
|
78
|
+
const row = await adapter.get(`SELECT value FROM brain_meta WHERE brain_id = ? AND key = ?`, [brainId, 'schema_version']);
|
|
79
|
+
return row ? parseInt(row.value, 10) : null;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Upsert schema_version in brain_meta inside the current transaction.
|
|
83
|
+
* Uses dialect-aware INSERT OR REPLACE.
|
|
84
|
+
*/
|
|
85
|
+
static async _writeSchemaVersion(adapter, features, brainId, version) {
|
|
86
|
+
await adapter.run(features.dialect.insertOrReplace('brain_meta', ['brain_id', 'key', 'value'], ['?', '?', '?'], 'brain_id, key'), [brainId, 'schema_version', String(version)]);
|
|
87
|
+
}
|
|
88
|
+
static async _sqliteTableExists(adapter, table) {
|
|
89
|
+
const row = await adapter.get(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`, [table]);
|
|
90
|
+
return Boolean(row);
|
|
91
|
+
}
|
|
92
|
+
static async _postgresTableExists(adapter, table) {
|
|
93
|
+
const row = await adapter.get(`SELECT EXISTS (
|
|
94
|
+
SELECT 1 FROM information_schema.tables
|
|
95
|
+
WHERE table_schema = current_schema() AND table_name = $1
|
|
96
|
+
) AS exists`, [table]);
|
|
97
|
+
return row?.exists ?? false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=MigrationRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationRunner.js","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/MigrationRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,MAAM,OAAO,eAAe;IAC1B;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,OAAuB,EACvB,QAAyB,EACzB,OAAe,EACf,UAAuB;QAEvB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAErD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACvC,MAAM,GAAG,CAAC,GAAG,CACX,4CAA4C,EAC5C,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAC7B,CAAC;gBACF,OAAO,eAAe,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACL,CAAC;QAED,6EAA6E;QAC7E,MAAM,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAC5F,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,cAAc,CACjC,OAAuB,EACvB,QAAyB,EACzB,OAAe,EACf,UAAuB;QAEvB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE3E,2EAA2E;QAC3E,oEAAoE;QACpE,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,eAAe,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;YACzF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACrC,OAAuB,EACvB,OAAe;QAEf,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,UAAU;YAChC,CAAC,CAAC,MAAM,eAAe,CAAC,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC;YACnE,CAAC,CAAC,MAAM,eAAe,CAAC,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACpE,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QAElC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B,6DAA6D,EAC7D,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAC5B,CAAC;QACF,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACtC,OAAuB,EACvB,QAAyB,EACzB,OAAe,EACf,OAAe;QAEf,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,OAAO,CAAC,eAAe,CAC9B,YAAY,EACZ,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,EAC5B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,eAAe,CAChB,EACD,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAC7C,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACrC,OAAuB,EACvB,KAAa;QAEb,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B,8DAA8D,EAC9D,CAAC,KAAK,CAAC,CACR,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACvC,OAAuB,EACvB,KAAa;QAEb,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B;;;mBAGa,EACb,CAAC,KAAK,CAAC,CACR,CAAC;QACF,OAAO,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Registry of all schema migrations in version order.
|
|
3
|
+
*
|
|
4
|
+
* Adding a new schema version: implement `v2-to-v3.ts` exporting a
|
|
5
|
+
* `Migration` object, then append it to the `MIGRATIONS` array here.
|
|
6
|
+
* Both `Brain._initialize` (for `runPending`) and `Brain._seedMeta` (for
|
|
7
|
+
* the schema_version seed value) pick up the change automatically.
|
|
8
|
+
*
|
|
9
|
+
* @module memory/retrieval/store/migrations
|
|
10
|
+
*/
|
|
11
|
+
import type { Migration } from './types.js';
|
|
12
|
+
export type { Migration } from './types.js';
|
|
13
|
+
export { MigrationRunner } from './MigrationRunner.js';
|
|
14
|
+
export declare const MIGRATIONS: Migration[];
|
|
15
|
+
/**
|
|
16
|
+
* The highest schema version among registered migrations. Used by
|
|
17
|
+
* `Brain._seedMeta` to seed `schema_version` on fresh databases.
|
|
18
|
+
*/
|
|
19
|
+
export declare const LATEST_SCHEMA_VERSION: number;
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,SAAS,EAAa,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAA6C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Registry of all schema migrations in version order.
|
|
3
|
+
*
|
|
4
|
+
* Adding a new schema version: implement `v2-to-v3.ts` exporting a
|
|
5
|
+
* `Migration` object, then append it to the `MIGRATIONS` array here.
|
|
6
|
+
* Both `Brain._initialize` (for `runPending`) and `Brain._seedMeta` (for
|
|
7
|
+
* the schema_version seed value) pick up the change automatically.
|
|
8
|
+
*
|
|
9
|
+
* @module memory/retrieval/store/migrations
|
|
10
|
+
*/
|
|
11
|
+
import { v1ToV2 } from './v1-to-v2.js';
|
|
12
|
+
export { MigrationRunner } from './MigrationRunner.js';
|
|
13
|
+
export const MIGRATIONS = [v1ToV2];
|
|
14
|
+
/**
|
|
15
|
+
* The highest schema version among registered migrations. Used by
|
|
16
|
+
* `Brain._seedMeta` to seed `schema_version` on fresh databases.
|
|
17
|
+
*/
|
|
18
|
+
export const LATEST_SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1].version;
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAgB,CAAC,MAAM,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,OAAO,CAAC"}
|