@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.
Files changed (61) hide show
  1. package/dist/memory/retrieval/store/Brain.d.ts +6 -11
  2. package/dist/memory/retrieval/store/Brain.d.ts.map +1 -1
  3. package/dist/memory/retrieval/store/Brain.js +122 -68
  4. package/dist/memory/retrieval/store/Brain.js.map +1 -1
  5. package/dist/memory/retrieval/store/migrations/MigrationRunner.d.ts +50 -0
  6. package/dist/memory/retrieval/store/migrations/MigrationRunner.d.ts.map +1 -0
  7. package/dist/memory/retrieval/store/migrations/MigrationRunner.js +100 -0
  8. package/dist/memory/retrieval/store/migrations/MigrationRunner.js.map +1 -0
  9. package/dist/memory/retrieval/store/migrations/index.d.ts +20 -0
  10. package/dist/memory/retrieval/store/migrations/index.d.ts.map +1 -0
  11. package/dist/memory/retrieval/store/migrations/index.js +19 -0
  12. package/dist/memory/retrieval/store/migrations/index.js.map +1 -0
  13. package/dist/memory/retrieval/store/migrations/types.d.ts +28 -0
  14. package/dist/memory/retrieval/store/migrations/types.d.ts.map +1 -0
  15. package/dist/memory/retrieval/store/migrations/types.js +7 -0
  16. package/dist/memory/retrieval/store/migrations/types.js.map +1 -0
  17. package/dist/memory/retrieval/store/migrations/v1-to-v2.d.ts +9 -0
  18. package/dist/memory/retrieval/store/migrations/v1-to-v2.d.ts.map +1 -1
  19. package/dist/memory/retrieval/store/migrations/v1-to-v2.js +72 -4
  20. package/dist/memory/retrieval/store/migrations/v1-to-v2.js.map +1 -1
  21. package/dist/memory/retrieval/store/portable-tables.d.ts +27 -0
  22. package/dist/memory/retrieval/store/portable-tables.d.ts.map +1 -0
  23. package/dist/memory/retrieval/store/portable-tables.js +56 -0
  24. package/dist/memory/retrieval/store/portable-tables.js.map +1 -0
  25. package/dist/memory/retrieval/typed-network/FourWayRrf.d.ts +51 -0
  26. package/dist/memory/retrieval/typed-network/FourWayRrf.d.ts.map +1 -0
  27. package/dist/memory/retrieval/typed-network/FourWayRrf.js +47 -0
  28. package/dist/memory/retrieval/typed-network/FourWayRrf.js.map +1 -0
  29. package/dist/memory/retrieval/typed-network/TemporalIntervalOverlap.d.ts +34 -0
  30. package/dist/memory/retrieval/typed-network/TemporalIntervalOverlap.d.ts.map +1 -0
  31. package/dist/memory/retrieval/typed-network/TemporalIntervalOverlap.js +86 -0
  32. package/dist/memory/retrieval/typed-network/TemporalIntervalOverlap.js.map +1 -0
  33. package/dist/memory/retrieval/typed-network/TypedNetworkObserver.d.ts +67 -0
  34. package/dist/memory/retrieval/typed-network/TypedNetworkObserver.d.ts.map +1 -0
  35. package/dist/memory/retrieval/typed-network/TypedNetworkObserver.js +78 -0
  36. package/dist/memory/retrieval/typed-network/TypedNetworkObserver.js.map +1 -0
  37. package/dist/memory/retrieval/typed-network/TypedNetworkStore.d.ts +83 -0
  38. package/dist/memory/retrieval/typed-network/TypedNetworkStore.d.ts.map +1 -0
  39. package/dist/memory/retrieval/typed-network/TypedNetworkStore.js +109 -0
  40. package/dist/memory/retrieval/typed-network/TypedNetworkStore.js.map +1 -0
  41. package/dist/memory/retrieval/typed-network/TypedSpreadingActivation.d.ts +80 -0
  42. package/dist/memory/retrieval/typed-network/TypedSpreadingActivation.d.ts.map +1 -0
  43. package/dist/memory/retrieval/typed-network/TypedSpreadingActivation.js +97 -0
  44. package/dist/memory/retrieval/typed-network/TypedSpreadingActivation.js.map +1 -0
  45. package/dist/memory/retrieval/typed-network/index.d.ts +18 -0
  46. package/dist/memory/retrieval/typed-network/index.d.ts.map +1 -0
  47. package/dist/memory/retrieval/typed-network/index.js +18 -0
  48. package/dist/memory/retrieval/typed-network/index.js.map +1 -0
  49. package/dist/memory/retrieval/typed-network/prompts/extraction-prompt.d.ts +30 -0
  50. package/dist/memory/retrieval/typed-network/prompts/extraction-prompt.d.ts.map +1 -0
  51. package/dist/memory/retrieval/typed-network/prompts/extraction-prompt.js +47 -0
  52. package/dist/memory/retrieval/typed-network/prompts/extraction-prompt.js.map +1 -0
  53. package/dist/memory/retrieval/typed-network/prompts/extraction-schema.d.ts +71 -0
  54. package/dist/memory/retrieval/typed-network/prompts/extraction-schema.d.ts.map +1 -0
  55. package/dist/memory/retrieval/typed-network/prompts/extraction-schema.js +39 -0
  56. package/dist/memory/retrieval/typed-network/prompts/extraction-schema.js.map +1 -0
  57. package/dist/memory/retrieval/typed-network/types.d.ts +123 -0
  58. package/dist/memory/retrieval/typed-network/types.d.ts.map +1 -0
  59. package/dist/memory/retrieval/typed-network/types.js +48 -0
  60. package/dist/memory/retrieval/typed-network/types.js.map +1 -0
  61. 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":"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"}
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 { migrateV1ToV2 } from './migrations/v1-to-v2.js';
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
- /** Current schema version. Increment when breaking schema changes are made. */
57
- const SCHEMA_VERSION = '2';
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._brainId = brainId;
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._brainId;
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
- const adapter = await createPostgresAdapter({
435
- connectionString,
436
- max: opts.poolSize ?? 10,
437
- });
438
- await adapter.open();
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 migrateV1ToV2(adapter, features, brainId);
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._brainId, 'schema_version', SCHEMA_VERSION]);
613
- await this._adapter.run(dialect.insertOrIgnore('brain_meta', ['brain_id', 'key', 'value'], ['?', '?', '?']), [this._brainId, 'created_at', Date.now().toString()]);
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._brainId, key]);
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._brainId, key, value]);
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._brainId });
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._brainId]);
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._brainId, { upsert: true });
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
- const source = await Brain.openSqlite(sourcePath);
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._brainId]);
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._brainId, { upsert: true });
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
- await this._adapter.close();
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
- // Portable-artifact constants
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":"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"}
@@ -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"}