agent-working-memory 0.9.1 → 0.11.0
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/README.md +89 -19
- package/dist/adapters/common.d.ts.map +1 -1
- package/dist/adapters/common.js +5 -1
- package/dist/adapters/common.js.map +1 -1
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +2 -1
- package/dist/api/routes.js.map +1 -1
- package/dist/cli/migrate.js +29 -29
- package/dist/cli.js +405 -224
- package/dist/cli.js.map +1 -1
- package/dist/coordination/circuit-breaker.js +23 -23
- package/dist/core/salience.d.ts.map +1 -1
- package/dist/core/salience.js +10 -1
- package/dist/core/salience.js.map +1 -1
- package/dist/core/write-pipeline.d.ts.map +1 -1
- package/dist/core/write-pipeline.js +5 -1
- package/dist/core/write-pipeline.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +50 -3
- package/dist/mcp.js.map +1 -1
- package/dist/onboard/index.d.ts +68 -0
- package/dist/onboard/index.d.ts.map +1 -0
- package/dist/onboard/index.js +265 -0
- package/dist/onboard/index.js.map +1 -0
- package/dist/storage/factory.d.ts +1 -1
- package/dist/storage/factory.d.ts.map +1 -1
- package/dist/storage/factory.js +16 -2
- package/dist/storage/factory.js.map +1 -1
- package/dist/storage/pglite-schema.js +143 -143
- package/dist/storage/pglite.d.ts.map +1 -1
- package/dist/storage/pglite.js +8 -0
- package/dist/storage/pglite.js.map +1 -1
- package/dist/storage/postgres.d.ts +228 -0
- package/dist/storage/postgres.d.ts.map +1 -0
- package/dist/storage/postgres.js +1221 -0
- package/dist/storage/postgres.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +27 -0
- package/dist/version.js.map +1 -0
- package/package.json +11 -1
- package/src/adapters/common.ts +5 -1
- package/src/api/index.ts +3 -3
- package/src/api/routes.ts +2 -1
- package/src/cli/migrate.ts +307 -307
- package/src/cli.ts +342 -273
- package/src/coordination/circuit-breaker.ts +83 -83
- package/src/coordination/failure-modes.ts +50 -50
- package/src/core/decay.ts +63 -63
- package/src/core/embeddings.ts +110 -110
- package/src/core/index.ts +5 -5
- package/src/core/logger.ts +36 -36
- package/src/core/ml-worker-entry.ts +194 -194
- package/src/core/ml-worker.ts +281 -281
- package/src/core/query-expander.ts +122 -122
- package/src/core/reranker.ts +119 -119
- package/src/core/salience.ts +10 -1
- package/src/core/write-pipeline.ts +5 -1
- package/src/engine/confidence.ts +120 -120
- package/src/engine/consolidation-scheduler.ts +242 -242
- package/src/engine/eval.ts +102 -102
- package/src/engine/eviction.ts +101 -101
- package/src/engine/index.ts +8 -8
- package/src/engine/retraction.ts +366 -366
- package/src/engine/staging.ts +74 -74
- package/src/index.ts +2 -1
- package/src/mcp.ts +62 -3
- package/src/onboard/index.ts +298 -0
- package/src/storage/factory.ts +15 -3
- package/src/storage/index.ts +3 -3
- package/src/storage/pglite-schema.ts +166 -166
- package/src/storage/pglite.ts +9 -0
- package/src/storage/postgres.ts +1475 -0
- package/src/storage/store.ts +80 -80
- package/src/types/agent.ts +67 -67
- package/src/types/checkpoint.ts +46 -46
- package/src/types/eval.ts +100 -100
- package/src/types/index.ts +6 -6
- package/src/version.ts +26 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Postgres-server-backed EngramStore (AWM 0.8.x — real-server backend for scale).
|
|
3
|
+
*
|
|
4
|
+
* A near-clone of the PGlite adapter (pglite.ts) over node-postgres (`pg`) +
|
|
5
|
+
* pgvector. Same SQL surface and the same `pglite-schema.ts` DDL — PGlite IS
|
|
6
|
+
* Postgres compiled to WASM, so the schema, placeholders ($1…), and row shapes
|
|
7
|
+
* are identical; only the driver and connection lifecycle differ. Selected via
|
|
8
|
+
* `AWM_STORE_BACKEND=postgres`, connection from `AWM_DATABASE_URL`.
|
|
9
|
+
*
|
|
10
|
+
* Driver differences handled here (vs. the embedded single-connection PGlite):
|
|
11
|
+
* - `pg.Pool` instead of an embedded WASM instance.
|
|
12
|
+
* - `ivfflat.probes` is a per-SESSION GUC; it's persisted once as a
|
|
13
|
+
* per-DATABASE default during bootstrap (before the pool opens), so every
|
|
14
|
+
* pooled connection inherits it at startup with no per-connection query.
|
|
15
|
+
* - Transactions must run on ONE client. `withTransaction` checks out a
|
|
16
|
+
* dedicated client and binds it to an AsyncLocalStorage scope; `this.q()`
|
|
17
|
+
* routes to that client only for queries issued inside the transaction's
|
|
18
|
+
* async context (so `fn()`'s store calls join the tx), else to the pool.
|
|
19
|
+
* Mirrors PGlite's single-connection serialization without sending unrelated
|
|
20
|
+
* concurrent queries to the tx client.
|
|
21
|
+
* - int8/numeric are coerced to JS numbers (pg returns them as strings by
|
|
22
|
+
* default) to match PGlite's number-returning behavior.
|
|
23
|
+
*
|
|
24
|
+
* The full IEngramStore contract is implemented as async methods, identical to
|
|
25
|
+
* the PGlite adapter.
|
|
26
|
+
*/
|
|
27
|
+
import type { Engram, EngramCreate, EngramStage, Association, AssociationType, SearchQuery, ActivationEvent, StagingEvent, Episode, TaskStatus, TaskPriority, MemoryClass, ConsciousState, CheckpointRow } from '../types/index.js';
|
|
28
|
+
export declare class PostgresEngramStore {
|
|
29
|
+
private pool;
|
|
30
|
+
/**
|
|
31
|
+
* The transaction's dedicated client, scoped to the withTransaction() callback's
|
|
32
|
+
* async context. q() reads it via getStore() so ONLY queries issued from inside
|
|
33
|
+
* the transaction route to that client — background callers (the activation-flush
|
|
34
|
+
* timer, an overlapping recall) keep using the pool. A pg client serves one query
|
|
35
|
+
* at a time, so without this scoping a background query could collide with the
|
|
36
|
+
* in-flight tx query ("client is already executing a query"). PGlite sidestepped
|
|
37
|
+
* this by queuing on its single connection; the pool path needs explicit scoping.
|
|
38
|
+
*/
|
|
39
|
+
private readonly txCtx;
|
|
40
|
+
private readyPromise;
|
|
41
|
+
private activationEventBuffer;
|
|
42
|
+
private activationFlushTimer;
|
|
43
|
+
private static readonly ACTIVATION_FLUSH_INTERVAL_MS;
|
|
44
|
+
private static readonly ACTIVATION_FLUSH_BATCH_SIZE;
|
|
45
|
+
/**
|
|
46
|
+
* @param connectionString Postgres URL (postgres://user:pass@host:port/db).
|
|
47
|
+
* Falls back to AWM_DATABASE_URL, then a localhost default. The PGlite
|
|
48
|
+
* adapter takes a directory path here; this one takes a connection string —
|
|
49
|
+
* that's the only constructor-signature difference.
|
|
50
|
+
*/
|
|
51
|
+
constructor(connectionString?: string);
|
|
52
|
+
private init;
|
|
53
|
+
/**
|
|
54
|
+
* Single funnel for every data query. Routes to the tx client bound in the
|
|
55
|
+
* `txCtx` AsyncLocalStorage scope when called inside a withTransaction() callback
|
|
56
|
+
* (so inner store calls join the tx), else to the pool. Returns the same `{ rows }`
|
|
57
|
+
* shape the PGlite adapter relies on.
|
|
58
|
+
*/
|
|
59
|
+
private q;
|
|
60
|
+
ready(): Promise<void>;
|
|
61
|
+
close(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Flush queued activation events as a single multi-row INSERT.
|
|
64
|
+
* Idempotent — safe to call when the buffer is empty.
|
|
65
|
+
*/
|
|
66
|
+
private flushActivationEvents;
|
|
67
|
+
/**
|
|
68
|
+
* Async-aware transaction wrapper that matches IEngramStore.withTransaction.
|
|
69
|
+
*
|
|
70
|
+
* Checks out ONE dedicated client and binds it to the `txCtx` AsyncLocalStorage
|
|
71
|
+
* scope for the duration of `fn`, so every regular store method `fn` calls — they
|
|
72
|
+
* all funnel through `this.q()`, which reads `txCtx.getStore()` — routes to that
|
|
73
|
+
* same client and joins the transaction (a Pool would otherwise hand each query a
|
|
74
|
+
* different connection). Mirrors PGlite's single-connection serialization. Not
|
|
75
|
+
* re-entrant (no nested BEGIN), same as the PGlite adapter.
|
|
76
|
+
*/
|
|
77
|
+
withTransaction<T>(fn: () => Promise<T>): Promise<T>;
|
|
78
|
+
createEngram(input: EngramCreate & {
|
|
79
|
+
id?: string;
|
|
80
|
+
}): Promise<Engram>;
|
|
81
|
+
getEngram(id: string): Promise<Engram | null>;
|
|
82
|
+
getEngramsByAgent(agentId: string, stage?: EngramStage, includeRetracted?: boolean): Promise<Engram[]>;
|
|
83
|
+
getEngramsByAgentSlim(agentId: string, stage?: EngramStage, includeRetracted?: boolean): Promise<Array<{
|
|
84
|
+
id: string;
|
|
85
|
+
concept: string;
|
|
86
|
+
embedding: number[] | null;
|
|
87
|
+
}>>;
|
|
88
|
+
getEngramsByAgentsSlim(agentIds: string[], stage?: EngramStage, includeRetracted?: boolean): Promise<Array<{
|
|
89
|
+
id: string;
|
|
90
|
+
concept: string;
|
|
91
|
+
embedding: number[] | null;
|
|
92
|
+
}>>;
|
|
93
|
+
getEngramsByIds(ids: string[]): Promise<Engram[]>;
|
|
94
|
+
getEngramsByAgents(agentIds: string[], stage?: EngramStage, includeRetracted?: boolean): Promise<Engram[]>;
|
|
95
|
+
getWorkspaceAgentIds(agentId: string, workspace: string): Promise<string[]>;
|
|
96
|
+
touchEngram(id: string): Promise<void>;
|
|
97
|
+
updateStage(id: string, stage: EngramStage): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Replace an engram's content. Used by the fade phase of consolidation
|
|
100
|
+
* (Paper 1: storage degradation) to coarsen un-recalled memories.
|
|
101
|
+
* The FTS trigger (BEFORE INSERT OR UPDATE OF concept, content, tags)
|
|
102
|
+
* automatically refreshes the tsvector index with the new content.
|
|
103
|
+
*/
|
|
104
|
+
updateContent(id: string, content: string): Promise<void>;
|
|
105
|
+
updateConfidence(id: string, confidence: number): Promise<void>;
|
|
106
|
+
updateEmbedding(id: string, embedding: number[], modelId?: string): Promise<void>;
|
|
107
|
+
retractEngram(id: string, retractedBy: string | null): Promise<void>;
|
|
108
|
+
deleteEngram(id: string): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Time warp - shift all timestamps backward by ms milliseconds.
|
|
111
|
+
* Used for testing decay-dependent behavior.
|
|
112
|
+
*/
|
|
113
|
+
timeWarp(agentId: string, ms: number): Promise<number>;
|
|
114
|
+
getLatestEngram(agentId: string, excludeId?: string): Promise<Engram | null>;
|
|
115
|
+
searchByVector(agentId: string, vec: number[], limit?: number): Promise<Array<{
|
|
116
|
+
engram: Engram;
|
|
117
|
+
distance: number;
|
|
118
|
+
}>>;
|
|
119
|
+
searchBM25(agentId: string, query: string, limit?: number): Promise<Engram[]>;
|
|
120
|
+
searchBM25WithRank(agentId: string, query: string, limit?: number): Promise<Array<{
|
|
121
|
+
engram: Engram;
|
|
122
|
+
bm25Score: number;
|
|
123
|
+
}>>;
|
|
124
|
+
searchBM25WithRankMultiAgent(agentIds: string[], query: string, limit?: number): Promise<Array<{
|
|
125
|
+
engram: Engram;
|
|
126
|
+
bm25Score: number;
|
|
127
|
+
}>>;
|
|
128
|
+
/** Deterministic search (no vector or BM25 ranking — for diagnostic / structural queries). */
|
|
129
|
+
search(query: SearchQuery): Promise<Engram[]>;
|
|
130
|
+
updateTaskStatus(id: string, status: TaskStatus): Promise<void>;
|
|
131
|
+
updateTaskPriority(id: string, priority: TaskPriority): Promise<void>;
|
|
132
|
+
updateBlockedBy(id: string, blockedBy: string | null): Promise<void>;
|
|
133
|
+
getTasks(agentId: string, status?: TaskStatus): Promise<Engram[]>;
|
|
134
|
+
getNextTask(agentId: string): Promise<Engram | null>;
|
|
135
|
+
supersedeEngram(oldId: string, newId: string): Promise<void>;
|
|
136
|
+
findActiveMatchByConcept(agentId: string, concept: string, requiredTags?: string[]): Promise<Engram | null>;
|
|
137
|
+
isSuperseded(id: string): Promise<boolean>;
|
|
138
|
+
updateMemoryClass(id: string, memoryClass: MemoryClass): Promise<void>;
|
|
139
|
+
updateTags(id: string, tags: string[]): Promise<void>;
|
|
140
|
+
upsertAssociation(fromId: string, toId: string, weight: number, type?: AssociationType, confidence?: number): Promise<Association>;
|
|
141
|
+
getAssociation(fromId: string, toId: string): Promise<Association | null>;
|
|
142
|
+
getAssociationsFor(engramId: string): Promise<Association[]>;
|
|
143
|
+
getAssociationStatsForBatch(engramIds: string[]): Promise<Map<string, {
|
|
144
|
+
count: number;
|
|
145
|
+
sumWeight: number;
|
|
146
|
+
}>>;
|
|
147
|
+
getAssociationsForBatch(engramIds: string[]): Promise<Map<string, Association[]>>;
|
|
148
|
+
getOutgoingAssociations(engramId: string): Promise<Association[]>;
|
|
149
|
+
countAssociationsFor(engramId: string): Promise<number>;
|
|
150
|
+
getWeakestAssociation(engramId: string): Promise<Association | null>;
|
|
151
|
+
deleteAssociation(id: string): Promise<void>;
|
|
152
|
+
getAllAssociations(agentId: string): Promise<Association[]>;
|
|
153
|
+
getEvictionCandidates(agentId: string, limit: number): Promise<Engram[]>;
|
|
154
|
+
getActiveCount(agentId: string): Promise<number>;
|
|
155
|
+
getStagingCount(agentId: string): Promise<number>;
|
|
156
|
+
getExpiredStaging(): Promise<Engram[]>;
|
|
157
|
+
logActivationEvent(event: ActivationEvent): Promise<void>;
|
|
158
|
+
logStagingEvent(event: StagingEvent): Promise<void>;
|
|
159
|
+
logRetrievalFeedback(activationEventId: string | null, engramId: string, useful: boolean, context: string): Promise<void>;
|
|
160
|
+
getRetrievalPrecision(agentId: string, windowHours?: number): Promise<number>;
|
|
161
|
+
getStagingMetrics(agentId: string): Promise<{
|
|
162
|
+
promoted: number;
|
|
163
|
+
discarded: number;
|
|
164
|
+
expired: number;
|
|
165
|
+
}>;
|
|
166
|
+
getActivationStats(agentId: string, windowHours?: number): Promise<{
|
|
167
|
+
count: number;
|
|
168
|
+
avgLatencyMs: number;
|
|
169
|
+
p95LatencyMs: number;
|
|
170
|
+
}>;
|
|
171
|
+
getConsolidatedCount(agentId: string): Promise<number>;
|
|
172
|
+
createEpisode(input: {
|
|
173
|
+
agentId: string;
|
|
174
|
+
label: string;
|
|
175
|
+
embedding?: number[];
|
|
176
|
+
}): Promise<Episode>;
|
|
177
|
+
getEpisode(id: string): Promise<Episode | null>;
|
|
178
|
+
getEpisodesByAgent(agentId: string): Promise<Episode[]>;
|
|
179
|
+
getActiveEpisode(agentId: string, windowMs?: number): Promise<Episode | null>;
|
|
180
|
+
addEngramToEpisode(engramId: string, episodeId: string): Promise<void>;
|
|
181
|
+
getEngramsByEpisode(episodeId: string): Promise<Engram[]>;
|
|
182
|
+
updateEpisodeEmbedding(id: string, embedding: number[]): Promise<void>;
|
|
183
|
+
getEpisodeCount(agentId: string): Promise<number>;
|
|
184
|
+
findEngramsByTags(agentId: string, tags: string[], excludeIds?: Set<string>): Promise<Engram[]>;
|
|
185
|
+
updateAutoCheckpointWrite(agentId: string, engramId: string): Promise<void>;
|
|
186
|
+
updateAutoCheckpointRecall(agentId: string, context: string, engramIds: string[]): Promise<void>;
|
|
187
|
+
touchActivity(agentId: string): Promise<void>;
|
|
188
|
+
saveCheckpoint(agentId: string, state: ConsciousState): Promise<void>;
|
|
189
|
+
getCheckpoint(agentId: string): Promise<CheckpointRow | null>;
|
|
190
|
+
markConsolidation(agentId: string, mini: boolean): Promise<void>;
|
|
191
|
+
getActiveAgents(): Promise<Array<{
|
|
192
|
+
agentId: string;
|
|
193
|
+
lastActivityAt: Date;
|
|
194
|
+
writeCount: number;
|
|
195
|
+
recallCount: number;
|
|
196
|
+
lastConsolidationAt: Date | null;
|
|
197
|
+
}>>;
|
|
198
|
+
getConsolidationCycleCount(agentId: string): Promise<number>;
|
|
199
|
+
getLatestByTag(opts: {
|
|
200
|
+
agentId: string;
|
|
201
|
+
tagKeyPrefix: string;
|
|
202
|
+
scopeTagsAll?: string[];
|
|
203
|
+
retracted?: boolean;
|
|
204
|
+
sortBy?: 'createdAt' | 'sequence';
|
|
205
|
+
limit?: number;
|
|
206
|
+
}): Promise<Engram[]>;
|
|
207
|
+
getTopBy(opts: {
|
|
208
|
+
agentId: string;
|
|
209
|
+
sortField: string;
|
|
210
|
+
order: 'asc' | 'desc';
|
|
211
|
+
filterTagsAll?: string[];
|
|
212
|
+
filterTagsAny?: string[];
|
|
213
|
+
filterTagsNone?: string[];
|
|
214
|
+
limit?: number;
|
|
215
|
+
retracted?: boolean;
|
|
216
|
+
}): Promise<Engram[]>;
|
|
217
|
+
/**
|
|
218
|
+
* Allocate the next sequence number for an agent (a soft ordering aid, not a
|
|
219
|
+
* hard uniqueness guarantee). Runs the read inside withTransaction() to mirror
|
|
220
|
+
* the PGlite adapter, but note the caller's INSERT happens AFTER this returns —
|
|
221
|
+
* so two concurrent allocations can read the same MAX and collide. This
|
|
222
|
+
* read-then-external-insert window is identical in the PGlite/SQLite paths; if a
|
|
223
|
+
* hard guarantee is ever needed, switch to `SELECT … FOR UPDATE` or a DB sequence.
|
|
224
|
+
*/
|
|
225
|
+
allocateNextSequence(agentId: string): Promise<number>;
|
|
226
|
+
}
|
|
227
|
+
export declare const POSTGRES_DIMENSIONS: number;
|
|
228
|
+
//# sourceMappingURL=postgres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/storage/postgres.ts"],"names":[],"mappings":"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"}
|