@framers/agentos 0.3.1 → 0.3.3
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 +13 -0
- package/dist/memory/retrieval/store/Brain.d.ts.map +1 -1
- package/dist/memory/retrieval/store/Brain.js +35 -21
- package/dist/memory/retrieval/store/Brain.js.map +1 -1
- package/dist/memory/retrieval/store/migrations/MigrationRunner.d.ts +6 -0
- package/dist/memory/retrieval/store/migrations/MigrationRunner.d.ts.map +1 -1
- package/dist/memory/retrieval/store/migrations/MigrationRunner.js +24 -0
- package/dist/memory/retrieval/store/migrations/MigrationRunner.js.map +1 -1
- package/dist/memory/retrieval/store/postgresPasswordRedaction.d.ts +17 -0
- package/dist/memory/retrieval/store/postgresPasswordRedaction.d.ts.map +1 -0
- package/dist/memory/retrieval/store/postgresPasswordRedaction.js +26 -0
- package/dist/memory/retrieval/store/postgresPasswordRedaction.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 +80 -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
|
@@ -112,6 +112,19 @@ export declare class Brain {
|
|
|
112
112
|
* adapter across subsystems (e.g., wilds-ai foundation pool + brain) or
|
|
113
113
|
* when the consumer needs full control over adapter resolution.
|
|
114
114
|
*
|
|
115
|
+
* **CONCURRENCY CAVEAT (Postgres adapters):** the underlying
|
|
116
|
+
* `PostgresAdapter` tracks `transactionalClient` as instance-shared
|
|
117
|
+
* mutable state. Two concurrent `Brain.transaction(...)` calls on the
|
|
118
|
+
* same shared adapter (or any subsystem call that internally opens a
|
|
119
|
+
* transaction) will overwrite each other's connection assignment, which
|
|
120
|
+
* corrupts both transactions silently. If the consumer dispatches
|
|
121
|
+
* concurrent writes through subsystems sharing one adapter, either:
|
|
122
|
+
* 1. construct a fresh `PostgresAdapter` per logical actor, OR
|
|
123
|
+
* 2. serialize transactions at the consumer layer until the adapter
|
|
124
|
+
* gets `AsyncLocalStorage`-tracked transactional clients.
|
|
125
|
+
* Non-transactional concurrent reads/writes against a shared adapter
|
|
126
|
+
* are safe (the pool handles those correctly).
|
|
127
|
+
*
|
|
115
128
|
* @param adapter - Pre-built StorageAdapter instance.
|
|
116
129
|
* @param opts.brainId - Required for postgres-kind adapters; optional for
|
|
117
130
|
* sqlite-kind adapters (defaults to `'default'`).
|
|
@@ -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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"}
|
|
@@ -46,6 +46,7 @@ import { resolveStorageAdapter, createStorageFeatures, createPostgresAdapter } f
|
|
|
46
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';
|
|
47
47
|
import { MigrationRunner, MIGRATIONS, LATEST_SCHEMA_VERSION } from './migrations/index.js';
|
|
48
48
|
import { PORTABLE_TABLES, PORTABLE_TABLE_PRIMARY_KEYS } from './portable-tables.js';
|
|
49
|
+
import { redactPostgresPassword } from './postgresPasswordRedaction.js';
|
|
49
50
|
/**
|
|
50
51
|
* Derive a stable brain identifier from the database file path.
|
|
51
52
|
*
|
|
@@ -63,16 +64,8 @@ function deriveBrainIdFromPath(dbPath) {
|
|
|
63
64
|
const lastDot = basename.lastIndexOf('.');
|
|
64
65
|
return lastDot > 0 ? basename.slice(0, lastDot) : basename;
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
}
|
|
67
|
+
// redactPostgresPassword extracted to ./postgresPasswordRedaction.ts
|
|
68
|
+
// (handles both URL form and keyword form; see postgresPasswordRedaction.test.ts).
|
|
76
69
|
// ---------------------------------------------------------------------------
|
|
77
70
|
// Constants
|
|
78
71
|
// ---------------------------------------------------------------------------
|
|
@@ -498,6 +491,19 @@ export class Brain {
|
|
|
498
491
|
* adapter across subsystems (e.g., wilds-ai foundation pool + brain) or
|
|
499
492
|
* when the consumer needs full control over adapter resolution.
|
|
500
493
|
*
|
|
494
|
+
* **CONCURRENCY CAVEAT (Postgres adapters):** the underlying
|
|
495
|
+
* `PostgresAdapter` tracks `transactionalClient` as instance-shared
|
|
496
|
+
* mutable state. Two concurrent `Brain.transaction(...)` calls on the
|
|
497
|
+
* same shared adapter (or any subsystem call that internally opens a
|
|
498
|
+
* transaction) will overwrite each other's connection assignment, which
|
|
499
|
+
* corrupts both transactions silently. If the consumer dispatches
|
|
500
|
+
* concurrent writes through subsystems sharing one adapter, either:
|
|
501
|
+
* 1. construct a fresh `PostgresAdapter` per logical actor, OR
|
|
502
|
+
* 2. serialize transactions at the consumer layer until the adapter
|
|
503
|
+
* gets `AsyncLocalStorage`-tracked transactional clients.
|
|
504
|
+
* Non-transactional concurrent reads/writes against a shared adapter
|
|
505
|
+
* are safe (the pool handles those correctly).
|
|
506
|
+
*
|
|
501
507
|
* @param adapter - Pre-built StorageAdapter instance.
|
|
502
508
|
* @param opts.brainId - Required for postgres-kind adapters; optional for
|
|
503
509
|
* sqlite-kind adapters (defaults to `'default'`).
|
|
@@ -798,9 +804,19 @@ export class Brain {
|
|
|
798
804
|
priority: ['better-sqlite3', 'sqljs'],
|
|
799
805
|
quiet: true,
|
|
800
806
|
});
|
|
801
|
-
let sourceBrainIds;
|
|
807
|
+
let sourceBrainIds = [];
|
|
802
808
|
try {
|
|
803
|
-
|
|
809
|
+
// Check brain_meta has the brain_id column before querying it. v1
|
|
810
|
+
// schemas (pre-0.3.0) only have key/value columns; the SELECT would
|
|
811
|
+
// throw "no such column: brain_id" otherwise. When the column is
|
|
812
|
+
// missing, treat as a single-brain v1 source (the auto-migration on
|
|
813
|
+
// Brain.openSqlite below will add brain_id and namespace by the
|
|
814
|
+
// path-derived brainId, then importFromSqlite proceeds normally).
|
|
815
|
+
const cols = await peekAdapter.all(`PRAGMA table_info(brain_meta)`);
|
|
816
|
+
const hasBrainIdColumn = cols.some((c) => c.name === 'brain_id');
|
|
817
|
+
if (hasBrainIdColumn) {
|
|
818
|
+
sourceBrainIds = await peekAdapter.all(`SELECT DISTINCT brain_id FROM brain_meta WHERE brain_id IS NOT NULL`);
|
|
819
|
+
}
|
|
804
820
|
}
|
|
805
821
|
finally {
|
|
806
822
|
await peekAdapter.close();
|
|
@@ -858,18 +874,16 @@ export class Brain {
|
|
|
858
874
|
? target._features.dialect.insertOrReplace(table, columns, columns.map(() => '?'), PORTABLE_TABLE_PRIMARY_KEYS[table] ?? 'brain_id, id')
|
|
859
875
|
: `INSERT INTO ${table} (${colList}) VALUES (${placeholders})`;
|
|
860
876
|
// Single transaction per table for bulk-insert performance + atomicity.
|
|
861
|
-
|
|
862
|
-
|
|
877
|
+
// MUST use adapter.transaction() (not raw exec BEGIN/COMMIT) so all writes
|
|
878
|
+
// pin to one pooled connection on Postgres. Raw BEGIN against a pool
|
|
879
|
+
// connection would land each query on a different connection, breaking
|
|
880
|
+
// the transactional guarantee silently.
|
|
881
|
+
await target._adapter.transaction(async (trx) => {
|
|
863
882
|
for (const row of rows) {
|
|
864
883
|
const values = columns.map((c) => c === 'brain_id' ? targetBrainId : row[c]);
|
|
865
|
-
await
|
|
884
|
+
await trx.run(stmt, values);
|
|
866
885
|
}
|
|
867
|
-
|
|
868
|
-
}
|
|
869
|
-
catch (err) {
|
|
870
|
-
await target._adapter.exec('ROLLBACK');
|
|
871
|
-
throw err;
|
|
872
|
-
}
|
|
886
|
+
});
|
|
873
887
|
}
|
|
874
888
|
/**
|
|
875
889
|
* Close the database connection.
|
|
@@ -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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"}
|
|
@@ -37,6 +37,10 @@ export declare class MigrationRunner {
|
|
|
37
37
|
/**
|
|
38
38
|
* Read the current schema_version from brain_meta. Returns null when
|
|
39
39
|
* brain_meta does not exist (fresh database).
|
|
40
|
+
*
|
|
41
|
+
* Handles both v1 (no brain_id column) and v2+ (composite-key) schemas.
|
|
42
|
+
* On v1, the SELECT omits the brain_id WHERE clause so the column-existence
|
|
43
|
+
* check in v1ToV2.up can proceed with the migration.
|
|
40
44
|
*/
|
|
41
45
|
private static _readSchemaVersion;
|
|
42
46
|
/**
|
|
@@ -45,6 +49,8 @@ export declare class MigrationRunner {
|
|
|
45
49
|
*/
|
|
46
50
|
private static _writeSchemaVersion;
|
|
47
51
|
private static _sqliteTableExists;
|
|
52
|
+
private static _sqliteHasColumn;
|
|
53
|
+
private static _postgresHasColumn;
|
|
48
54
|
private static _postgresTableExists;
|
|
49
55
|
}
|
|
50
56
|
//# sourceMappingURL=MigrationRunner.d.ts.map
|
|
@@ -1 +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
|
|
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;;;;;;;OAOG;mBACkB,kBAAkB;IA+BvC;;;OAGG;mBACkB,mBAAmB;mBAiBnB,kBAAkB;mBAWlB,gBAAgB;mBAShB,kBAAkB;mBAelB,oBAAoB;CAa1C"}
|
|
@@ -67,6 +67,10 @@ export class MigrationRunner {
|
|
|
67
67
|
/**
|
|
68
68
|
* Read the current schema_version from brain_meta. Returns null when
|
|
69
69
|
* brain_meta does not exist (fresh database).
|
|
70
|
+
*
|
|
71
|
+
* Handles both v1 (no brain_id column) and v2+ (composite-key) schemas.
|
|
72
|
+
* On v1, the SELECT omits the brain_id WHERE clause so the column-existence
|
|
73
|
+
* check in v1ToV2.up can proceed with the migration.
|
|
70
74
|
*/
|
|
71
75
|
static async _readSchemaVersion(adapter, brainId) {
|
|
72
76
|
const isPostgres = adapter.kind.includes('postgres');
|
|
@@ -75,6 +79,15 @@ export class MigrationRunner {
|
|
|
75
79
|
: await MigrationRunner._sqliteTableExists(adapter, 'brain_meta');
|
|
76
80
|
if (!brainMetaExists)
|
|
77
81
|
return null;
|
|
82
|
+
const hasBrainIdCol = isPostgres
|
|
83
|
+
? await MigrationRunner._postgresHasColumn(adapter, 'brain_meta', 'brain_id')
|
|
84
|
+
: await MigrationRunner._sqliteHasColumn(adapter, 'brain_meta', 'brain_id');
|
|
85
|
+
if (!hasBrainIdCol) {
|
|
86
|
+
// v1 schema: brain_meta has key/value only. v1ToV2 migration will add
|
|
87
|
+
// brain_id and namespace existing rows. Read the unscoped schema_version.
|
|
88
|
+
const row = await adapter.get(`SELECT value FROM brain_meta WHERE key = ?`, ['schema_version']);
|
|
89
|
+
return row ? parseInt(row.value, 10) : null;
|
|
90
|
+
}
|
|
78
91
|
const row = await adapter.get(`SELECT value FROM brain_meta WHERE brain_id = ? AND key = ?`, [brainId, 'schema_version']);
|
|
79
92
|
return row ? parseInt(row.value, 10) : null;
|
|
80
93
|
}
|
|
@@ -89,6 +102,17 @@ export class MigrationRunner {
|
|
|
89
102
|
const row = await adapter.get(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`, [table]);
|
|
90
103
|
return Boolean(row);
|
|
91
104
|
}
|
|
105
|
+
static async _sqliteHasColumn(adapter, table, column) {
|
|
106
|
+
const rows = await adapter.all(`PRAGMA table_info(${table})`);
|
|
107
|
+
return rows.some((r) => r.name === column);
|
|
108
|
+
}
|
|
109
|
+
static async _postgresHasColumn(adapter, table, column) {
|
|
110
|
+
const row = await adapter.get(`SELECT EXISTS (
|
|
111
|
+
SELECT 1 FROM information_schema.columns
|
|
112
|
+
WHERE table_name = $1 AND column_name = $2
|
|
113
|
+
) AS exists`, [table, column]);
|
|
114
|
+
return row?.exists ?? false;
|
|
115
|
+
}
|
|
92
116
|
static async _postgresTableExists(adapter, table) {
|
|
93
117
|
const row = await adapter.get(`SELECT EXISTS (
|
|
94
118
|
SELECT 1 FROM information_schema.tables
|
|
@@ -1 +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
|
|
1
|
+
{"version":3,"file":"MigrationRunner.js","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/MigrationRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Redact passwords from Postgres connection strings before
|
|
3
|
+
* inclusion in error messages or logs. Handles both URL form and keyword form.
|
|
4
|
+
*
|
|
5
|
+
* @module memory/retrieval/store/postgresPasswordRedaction
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Replace the password in a Postgres connection string with `***`. Handles:
|
|
9
|
+
*
|
|
10
|
+
* - URL form: `postgresql://user:secret@host/db` -> `postgresql://user:***@host/db`
|
|
11
|
+
* - Keyword form: `host=localhost password=secret dbname=foo` ->
|
|
12
|
+
* `host=localhost password=*** dbname=foo`
|
|
13
|
+
* - Quoted keyword form: `password='secret with space'` -> `password='***'`
|
|
14
|
+
* - Connection strings without an embedded password pass through unchanged.
|
|
15
|
+
*/
|
|
16
|
+
export declare function redactPostgresPassword(connStr: string): string;
|
|
17
|
+
//# sourceMappingURL=postgresPasswordRedaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgresPasswordRedaction.d.ts","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/postgresPasswordRedaction.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS9D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Redact passwords from Postgres connection strings before
|
|
3
|
+
* inclusion in error messages or logs. Handles both URL form and keyword form.
|
|
4
|
+
*
|
|
5
|
+
* @module memory/retrieval/store/postgresPasswordRedaction
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Replace the password in a Postgres connection string with `***`. Handles:
|
|
9
|
+
*
|
|
10
|
+
* - URL form: `postgresql://user:secret@host/db` -> `postgresql://user:***@host/db`
|
|
11
|
+
* - Keyword form: `host=localhost password=secret dbname=foo` ->
|
|
12
|
+
* `host=localhost password=*** dbname=foo`
|
|
13
|
+
* - Quoted keyword form: `password='secret with space'` -> `password='***'`
|
|
14
|
+
* - Connection strings without an embedded password pass through unchanged.
|
|
15
|
+
*/
|
|
16
|
+
export function redactPostgresPassword(connStr) {
|
|
17
|
+
// URL form: postgresql://user:password@host/db
|
|
18
|
+
let safe = connStr.replace(/(:\/\/[^:]+:)[^@]+(@)/, '$1***$2');
|
|
19
|
+
// Quoted keyword form: password='...' or password="..."
|
|
20
|
+
safe = safe.replace(/(password\s*=\s*)'[^']*'/gi, "$1'***'");
|
|
21
|
+
safe = safe.replace(/(password\s*=\s*)"[^"]*"/gi, '$1"***"');
|
|
22
|
+
// Bare keyword form: password=token (whitespace- or end-terminated)
|
|
23
|
+
safe = safe.replace(/(password\s*=\s*)[^\s'"]+/gi, '$1***');
|
|
24
|
+
return safe;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=postgresPasswordRedaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgresPasswordRedaction.js","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/postgresPasswordRedaction.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,+CAA+C;IAC/C,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;IAC/D,wDAAwD;IACxD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;IAC7D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;IAC7D,oEAAoE;IACpE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file FourWayRrf.ts
|
|
3
|
+
* @description Four-way Reciprocal Rank Fusion over the typed-network
|
|
4
|
+
* retrieval signals: semantic similarity, BM25 lexical match, graph
|
|
5
|
+
* spreading activation, and temporal interval overlap. Per Hindsight
|
|
6
|
+
* §2.4.3, the fusion uses standard RRF with `k=60`:
|
|
7
|
+
*
|
|
8
|
+
* score(f) = Σ over rankings R of [1 / (k + rank_R(f))]
|
|
9
|
+
*
|
|
10
|
+
* Output is a single ranked list combining all four signals. Facts
|
|
11
|
+
* present in only some rankings are still scored — RRF naturally
|
|
12
|
+
* tolerates missing rankings because absent IDs contribute zero.
|
|
13
|
+
*
|
|
14
|
+
* @module @framers/agentos/memory/retrieval/typed-network/FourWayRrf
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Inputs to the fusion. Each list is an ordered array of fact IDs
|
|
18
|
+
* from a separate retrieval signal.
|
|
19
|
+
*/
|
|
20
|
+
export interface FourWayRrfInput {
|
|
21
|
+
/** Cosine-similarity ranking over fact embeddings. */
|
|
22
|
+
semantic: string[];
|
|
23
|
+
/** BM25 ranking over fact text. */
|
|
24
|
+
bm25: string[];
|
|
25
|
+
/** Spreading-activation ranking over the typed-network graph. */
|
|
26
|
+
graphActivation: string[];
|
|
27
|
+
/** Temporal-interval-overlap ranking against the query timestamp. */
|
|
28
|
+
temporalOverlap: string[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Fusion options.
|
|
32
|
+
*/
|
|
33
|
+
export interface FourWayRrfOptions {
|
|
34
|
+
/** RRF constant. Default 60 per the standard literature. */
|
|
35
|
+
k?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Optional per-signal weight multiplier. Defaults to {1, 1, 1, 1}
|
|
38
|
+
* (uniform RRF). Use to emphasize one signal over others — e.g.
|
|
39
|
+
* downweighting graph activation when the typed network is sparse.
|
|
40
|
+
*/
|
|
41
|
+
weights?: Partial<Record<keyof FourWayRrfInput, number>>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Fuse four retrieval rankings via Reciprocal Rank Fusion. Returns
|
|
45
|
+
* the merged list ordered by descending fused score.
|
|
46
|
+
*
|
|
47
|
+
* @param input - Four ranked lists (semantic, BM25, graph, temporal).
|
|
48
|
+
* @param options - RRF k constant + optional per-signal weights.
|
|
49
|
+
*/
|
|
50
|
+
export declare function fourWayRrf(input: FourWayRrfInput, options?: FourWayRrfOptions): string[];
|
|
51
|
+
//# sourceMappingURL=FourWayRrf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FourWayRrf.d.ts","sourceRoot":"","sources":["../../../../src/memory/retrieval/typed-network/FourWayRrf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mCAAmC;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iEAAiE;IACjE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,qEAAqE;IACrE,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,CAAC,CAAC,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,EAAE,CA8BV"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file FourWayRrf.ts
|
|
3
|
+
* @description Four-way Reciprocal Rank Fusion over the typed-network
|
|
4
|
+
* retrieval signals: semantic similarity, BM25 lexical match, graph
|
|
5
|
+
* spreading activation, and temporal interval overlap. Per Hindsight
|
|
6
|
+
* §2.4.3, the fusion uses standard RRF with `k=60`:
|
|
7
|
+
*
|
|
8
|
+
* score(f) = Σ over rankings R of [1 / (k + rank_R(f))]
|
|
9
|
+
*
|
|
10
|
+
* Output is a single ranked list combining all four signals. Facts
|
|
11
|
+
* present in only some rankings are still scored — RRF naturally
|
|
12
|
+
* tolerates missing rankings because absent IDs contribute zero.
|
|
13
|
+
*
|
|
14
|
+
* @module @framers/agentos/memory/retrieval/typed-network/FourWayRrf
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Fuse four retrieval rankings via Reciprocal Rank Fusion. Returns
|
|
18
|
+
* the merged list ordered by descending fused score.
|
|
19
|
+
*
|
|
20
|
+
* @param input - Four ranked lists (semantic, BM25, graph, temporal).
|
|
21
|
+
* @param options - RRF k constant + optional per-signal weights.
|
|
22
|
+
*/
|
|
23
|
+
export function fourWayRrf(input, options = {}) {
|
|
24
|
+
const k = options.k ?? 60;
|
|
25
|
+
const w = {
|
|
26
|
+
semantic: options.weights?.semantic ?? 1,
|
|
27
|
+
bm25: options.weights?.bm25 ?? 1,
|
|
28
|
+
graphActivation: options.weights?.graphActivation ?? 1,
|
|
29
|
+
temporalOverlap: options.weights?.temporalOverlap ?? 1,
|
|
30
|
+
};
|
|
31
|
+
const scores = new Map();
|
|
32
|
+
const accumulate = (ranking, weight) => {
|
|
33
|
+
ranking.forEach((id, idx) => {
|
|
34
|
+
const rank = idx + 1;
|
|
35
|
+
const contribution = (1.0 / (k + rank)) * weight;
|
|
36
|
+
scores.set(id, (scores.get(id) ?? 0) + contribution);
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
accumulate(input.semantic, w.semantic);
|
|
40
|
+
accumulate(input.bm25, w.bm25);
|
|
41
|
+
accumulate(input.graphActivation, w.graphActivation);
|
|
42
|
+
accumulate(input.temporalOverlap, w.temporalOverlap);
|
|
43
|
+
return [...scores.entries()]
|
|
44
|
+
.sort((a, b) => b[1] - a[1])
|
|
45
|
+
.map(([id]) => id);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=FourWayRrf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FourWayRrf.js","sourceRoot":"","sources":["../../../../src/memory/retrieval/typed-network/FourWayRrf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+BH;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,KAAsB,EACtB,UAA6B,EAAE;IAE/B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1B,MAAM,CAAC,GAAG;QACR,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,IAAI,CAAC;QACxC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;QAChC,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe,IAAI,CAAC;QACtD,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe,IAAI,CAAC;KACvD,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,MAAM,UAAU,GAAG,CACjB,OAAiB,EACjB,MAAc,EACR,EAAE;QACR,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;YACrB,MAAM,YAAY,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/B,UAAU,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;IACrD,UAAU,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;IAErD,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file TemporalIntervalOverlap.ts
|
|
3
|
+
* @description Temporal-overlap ranking signal for the 4-way RRF
|
|
4
|
+
* fusion. Given a query timestamp and a set of typed facts, ranks the
|
|
5
|
+
* facts by how tightly their occurrence intervals (`τs, τe`) bracket
|
|
6
|
+
* the query timestamp, with a graceful fallback to mention-timestamp
|
|
7
|
+
* distance for facts without a full interval.
|
|
8
|
+
*
|
|
9
|
+
* Hindsight Eq. 12 weighs temporal edges by `exp(−Δt / σt)`. This
|
|
10
|
+
* file's `rankByTemporalOverlap` produces the same monotone signal in
|
|
11
|
+
* a form suitable for the BM25 / semantic / spreading-activation /
|
|
12
|
+
* temporal four-way RRF fusion (see {@link FourWayRrf}).
|
|
13
|
+
*
|
|
14
|
+
* @module @framers/agentos/memory/retrieval/typed-network/TemporalIntervalOverlap
|
|
15
|
+
*/
|
|
16
|
+
import type { TypedFact } from './types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Rank an array of typed facts by their temporal proximity to a query
|
|
19
|
+
* timestamp. Facts whose `(start, end)` interval contains the query
|
|
20
|
+
* rank highest, with tighter intervals (smaller width) scoring higher
|
|
21
|
+
* within the contained set. Facts whose interval lies outside the
|
|
22
|
+
* query rank by the minimum endpoint distance. Facts with only a
|
|
23
|
+
* mention timestamp fall back to mention-distance.
|
|
24
|
+
*
|
|
25
|
+
* Returns a new array; the input is not mutated. Stable ordering
|
|
26
|
+
* within tied scores follows JavaScript's `Array.prototype.sort`
|
|
27
|
+
* insertion order.
|
|
28
|
+
*
|
|
29
|
+
* @param facts - Typed facts to rank.
|
|
30
|
+
* @param queryTimestamp - ISO 8601 string. Invalid timestamps fall
|
|
31
|
+
* back to original ordering.
|
|
32
|
+
*/
|
|
33
|
+
export declare function rankByTemporalOverlap(facts: TypedFact[], queryTimestamp: string): TypedFact[];
|
|
34
|
+
//# sourceMappingURL=TemporalIntervalOverlap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemporalIntervalOverlap.d.ts","sourceRoot":"","sources":["../../../../src/memory/retrieval/typed-network/TemporalIntervalOverlap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK5C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAAE,EAClB,cAAc,EAAE,MAAM,GACrB,SAAS,EAAE,CAUb"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file TemporalIntervalOverlap.ts
|
|
3
|
+
* @description Temporal-overlap ranking signal for the 4-way RRF
|
|
4
|
+
* fusion. Given a query timestamp and a set of typed facts, ranks the
|
|
5
|
+
* facts by how tightly their occurrence intervals (`τs, τe`) bracket
|
|
6
|
+
* the query timestamp, with a graceful fallback to mention-timestamp
|
|
7
|
+
* distance for facts without a full interval.
|
|
8
|
+
*
|
|
9
|
+
* Hindsight Eq. 12 weighs temporal edges by `exp(−Δt / σt)`. This
|
|
10
|
+
* file's `rankByTemporalOverlap` produces the same monotone signal in
|
|
11
|
+
* a form suitable for the BM25 / semantic / spreading-activation /
|
|
12
|
+
* temporal four-way RRF fusion (see {@link FourWayRrf}).
|
|
13
|
+
*
|
|
14
|
+
* @module @framers/agentos/memory/retrieval/typed-network/TemporalIntervalOverlap
|
|
15
|
+
*/
|
|
16
|
+
/** One day in milliseconds — used as the natural unit for distance penalties. */
|
|
17
|
+
const DAY_MS = 86400000;
|
|
18
|
+
/**
|
|
19
|
+
* Rank an array of typed facts by their temporal proximity to a query
|
|
20
|
+
* timestamp. Facts whose `(start, end)` interval contains the query
|
|
21
|
+
* rank highest, with tighter intervals (smaller width) scoring higher
|
|
22
|
+
* within the contained set. Facts whose interval lies outside the
|
|
23
|
+
* query rank by the minimum endpoint distance. Facts with only a
|
|
24
|
+
* mention timestamp fall back to mention-distance.
|
|
25
|
+
*
|
|
26
|
+
* Returns a new array; the input is not mutated. Stable ordering
|
|
27
|
+
* within tied scores follows JavaScript's `Array.prototype.sort`
|
|
28
|
+
* insertion order.
|
|
29
|
+
*
|
|
30
|
+
* @param facts - Typed facts to rank.
|
|
31
|
+
* @param queryTimestamp - ISO 8601 string. Invalid timestamps fall
|
|
32
|
+
* back to original ordering.
|
|
33
|
+
*/
|
|
34
|
+
export function rankByTemporalOverlap(facts, queryTimestamp) {
|
|
35
|
+
const queryMs = Date.parse(queryTimestamp);
|
|
36
|
+
if (Number.isNaN(queryMs))
|
|
37
|
+
return [...facts];
|
|
38
|
+
const scored = facts.map((f) => ({
|
|
39
|
+
fact: f,
|
|
40
|
+
score: scoreOverlap(f, queryMs),
|
|
41
|
+
}));
|
|
42
|
+
scored.sort((a, b) => b.score - a.score);
|
|
43
|
+
return scored.map((s) => s.fact);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Score a single fact against the query timestamp. Higher = more
|
|
47
|
+
* relevant.
|
|
48
|
+
*
|
|
49
|
+
* Score scale:
|
|
50
|
+
* - In-interval facts produce scores in (1.0, 2.0] — every in-interval
|
|
51
|
+
* fact outranks every out-of-interval fact regardless of width vs
|
|
52
|
+
* endpoint-distance. Tighter intervals score closer to 2.0.
|
|
53
|
+
* - Out-of-interval facts produce scores in (0, 1.0) — closer
|
|
54
|
+
* endpoint distances score nearer to 1.0.
|
|
55
|
+
* - Mention-only facts produce scores in (0, 1.0) — same scale as
|
|
56
|
+
* out-of-interval (the mention timestamp is treated as a degenerate
|
|
57
|
+
* point-interval).
|
|
58
|
+
*
|
|
59
|
+
* The +1.0 boost on in-interval guarantees the order semantics the
|
|
60
|
+
* Hindsight paper §2.4.1 implies: temporal containment is a
|
|
61
|
+
* categorical match; width breaks ties within that category. Without
|
|
62
|
+
* the boost, a wide containing interval can score below a narrow non-
|
|
63
|
+
* containing one (which is geometrically wrong).
|
|
64
|
+
*/
|
|
65
|
+
function scoreOverlap(fact, queryMs) {
|
|
66
|
+
const start = fact.temporal.start ? Date.parse(fact.temporal.start) : NaN;
|
|
67
|
+
const end = fact.temporal.end ? Date.parse(fact.temporal.end) : NaN;
|
|
68
|
+
const mention = Date.parse(fact.temporal.mention);
|
|
69
|
+
if (!Number.isNaN(start) && !Number.isNaN(end)) {
|
|
70
|
+
if (queryMs >= start && queryMs <= end) {
|
|
71
|
+
// Query inside interval — score by inverse interval width,
|
|
72
|
+
// boosted by +1.0 so it outranks all out-of-interval facts.
|
|
73
|
+
const width = Math.max(1, end - start);
|
|
74
|
+
return 1.0 + 1.0 / (1 + width / DAY_MS);
|
|
75
|
+
}
|
|
76
|
+
// Query outside — penalize by distance to nearest endpoint.
|
|
77
|
+
const dist = Math.min(Math.abs(queryMs - start), Math.abs(queryMs - end));
|
|
78
|
+
return 1.0 / (1 + dist / DAY_MS);
|
|
79
|
+
}
|
|
80
|
+
// Fall back to mention-timestamp distance.
|
|
81
|
+
if (Number.isNaN(mention))
|
|
82
|
+
return 0;
|
|
83
|
+
const dist = Math.abs(queryMs - mention);
|
|
84
|
+
return 1.0 / (1 + dist / DAY_MS);
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=TemporalIntervalOverlap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemporalIntervalOverlap.js","sourceRoot":"","sources":["../../../../src/memory/retrieval/typed-network/TemporalIntervalOverlap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,iFAAiF;AACjF,MAAM,MAAM,GAAG,QAAU,CAAC;AAE1B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAkB,EAClB,cAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,YAAY,CAAC,IAAe,EAAE,OAAe;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;YACvC,2DAA2D;YAC3D,4DAA4D;YAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;YACvC,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;QAC1C,CAAC;QACD,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;QAC1E,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,2CAA2C;IAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IACzC,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC;AACnC,CAAC"}
|