@polpo-ai/core 0.15.41 → 0.15.43
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 +54 -0
- package/dist/__tests__/memory-store-policy.test.d.ts +2 -0
- package/dist/__tests__/memory-store-policy.test.d.ts.map +1 -0
- package/dist/__tests__/memory-store-policy.test.js +141 -0
- package/dist/__tests__/memory-store-policy.test.js.map +1 -0
- package/dist/__tests__/typed-memory.test.d.ts +2 -0
- package/dist/__tests__/typed-memory.test.d.ts.map +1 -0
- package/dist/__tests__/typed-memory.test.js +226 -0
- package/dist/__tests__/typed-memory.test.js.map +1 -0
- package/dist/adapter.d.ts +3 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/compatibility.d.ts +3 -0
- package/dist/memory/compatibility.d.ts.map +1 -0
- package/dist/memory/compatibility.js +27 -0
- package/dist/memory/compatibility.js.map +1 -0
- package/dist/memory/dedupe.d.ts +4 -0
- package/dist/memory/dedupe.d.ts.map +1 -0
- package/dist/memory/dedupe.js +21 -0
- package/dist/memory/dedupe.js.map +1 -0
- package/dist/memory/errors.d.ts +7 -0
- package/dist/memory/errors.d.ts.map +1 -0
- package/dist/memory/errors.js +11 -0
- package/dist/memory/errors.js.map +1 -0
- package/dist/memory/extraction.d.ts +124 -0
- package/dist/memory/extraction.d.ts.map +1 -0
- package/dist/memory/extraction.js +450 -0
- package/dist/memory/extraction.js.map +1 -0
- package/dist/memory/extraction.test.d.ts +2 -0
- package/dist/memory/extraction.test.d.ts.map +1 -0
- package/dist/memory/extraction.test.js +366 -0
- package/dist/memory/extraction.test.js.map +1 -0
- package/dist/memory/in-memory-extraction-store.d.ts +30 -0
- package/dist/memory/in-memory-extraction-store.d.ts.map +1 -0
- package/dist/memory/in-memory-extraction-store.js +363 -0
- package/dist/memory/in-memory-extraction-store.js.map +1 -0
- package/dist/memory/in-memory-store.d.ts +25 -0
- package/dist/memory/in-memory-store.d.ts.map +1 -0
- package/dist/memory/in-memory-store.js +434 -0
- package/dist/memory/in-memory-store.js.map +1 -0
- package/dist/memory/index.d.ts +20 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +14 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/item.d.ts +6 -0
- package/dist/memory/item.d.ts.map +1 -0
- package/dist/memory/item.js +169 -0
- package/dist/memory/item.js.map +1 -0
- package/dist/memory/lifecycle.d.ts +5 -0
- package/dist/memory/lifecycle.d.ts.map +1 -0
- package/dist/memory/lifecycle.js +32 -0
- package/dist/memory/lifecycle.js.map +1 -0
- package/dist/memory/policy.d.ts +27 -0
- package/dist/memory/policy.d.ts.map +1 -0
- package/dist/memory/policy.js +114 -0
- package/dist/memory/policy.js.map +1 -0
- package/dist/memory/ranking.d.ts +9 -0
- package/dist/memory/ranking.d.ts.map +1 -0
- package/dist/memory/ranking.js +65 -0
- package/dist/memory/ranking.js.map +1 -0
- package/dist/memory/scope.d.ts +5 -0
- package/dist/memory/scope.d.ts.map +1 -0
- package/dist/memory/scope.js +68 -0
- package/dist/memory/scope.js.map +1 -0
- package/dist/memory/store-errors.d.ts +10 -0
- package/dist/memory/store-errors.d.ts.map +1 -0
- package/dist/memory/store-errors.js +19 -0
- package/dist/memory/store-errors.js.map +1 -0
- package/dist/memory/store-types.d.ts +97 -0
- package/dist/memory/store-types.d.ts.map +1 -0
- package/dist/memory/store-types.js +2 -0
- package/dist/memory/store-types.js.map +1 -0
- package/dist/memory/types.d.ts +70 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +32 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/orchestrator-context.d.ts +6 -0
- package/dist/orchestrator-context.d.ts.map +1 -1
- package/dist/runtime-context/index.d.ts +5 -0
- package/dist/runtime-context/index.d.ts.map +1 -0
- package/dist/runtime-context/index.js +4 -0
- package/dist/runtime-context/index.js.map +1 -0
- package/dist/runtime-context/memory-retriever.d.ts +14 -0
- package/dist/runtime-context/memory-retriever.d.ts.map +1 -0
- package/dist/runtime-context/memory-retriever.js +76 -0
- package/dist/runtime-context/memory-retriever.js.map +1 -0
- package/dist/runtime-context/runtime-context.d.ts +4 -0
- package/dist/runtime-context/runtime-context.d.ts.map +1 -0
- package/dist/runtime-context/runtime-context.js +311 -0
- package/dist/runtime-context/runtime-context.js.map +1 -0
- package/dist/runtime-context/runtime-context.test.d.ts +2 -0
- package/dist/runtime-context/runtime-context.test.d.ts.map +1 -0
- package/dist/runtime-context/runtime-context.test.js +282 -0
- package/dist/runtime-context/runtime-context.test.js.map +1 -0
- package/dist/runtime-context/types.d.ts +75 -0
- package/dist/runtime-context/types.d.ts.map +1 -0
- package/dist/runtime-context/types.js +8 -0
- package/dist/runtime-context/types.js.map +1 -0
- package/dist/task-runner.d.ts.map +1 -1
- package/dist/task-runner.js +16 -0
- package/dist/task-runner.js.map +1 -1
- package/dist/types/config.d.ts +6 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/package.json +9 -1
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import { nanoid } from "nanoid";
|
|
2
|
+
import { createMemoryExtractionDecision, memoryExtractionCandidateIdentity, normalizeMemoryExtractionAuditEvent, normalizeMemoryExtractionCandidate, } from "./extraction.js";
|
|
3
|
+
import { MemoryContractError } from "./errors.js";
|
|
4
|
+
import { canAccessMemoryScope, memoryScopeKey, normalizeMemoryScope, } from "./scope.js";
|
|
5
|
+
import { MemoryAuthorizationError, MemoryConflictError, } from "./store-errors.js";
|
|
6
|
+
function namespace(value) {
|
|
7
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
8
|
+
throw new MemoryContractError("Memory extraction namespace is required", "invalid_scope", "namespace");
|
|
9
|
+
}
|
|
10
|
+
return value.trim();
|
|
11
|
+
}
|
|
12
|
+
function timestamp(value) {
|
|
13
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
14
|
+
if (!Number.isFinite(date.getTime())) {
|
|
15
|
+
throw new MemoryContractError("Memory extraction time must be valid", "invalid_item", "now");
|
|
16
|
+
}
|
|
17
|
+
return date.toISOString();
|
|
18
|
+
}
|
|
19
|
+
function cloneCandidate(value) {
|
|
20
|
+
return normalizeMemoryExtractionCandidate(value);
|
|
21
|
+
}
|
|
22
|
+
function cloneAudit(value) {
|
|
23
|
+
return normalizeMemoryExtractionAuditEvent(value);
|
|
24
|
+
}
|
|
25
|
+
function boundedLimit(value) {
|
|
26
|
+
if (value === undefined)
|
|
27
|
+
return 100;
|
|
28
|
+
if (!Number.isSafeInteger(value) || value < 1 || value > 1_000) {
|
|
29
|
+
throw new MemoryContractError("Memory extraction limit must be between 1 and 1000", "invalid_item", "limit");
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
function assertAuditConsistency(candidate, events) {
|
|
34
|
+
const expected = candidate.status === "pending"
|
|
35
|
+
? ["proposed"]
|
|
36
|
+
: candidate.status === "approved"
|
|
37
|
+
? ["proposed", "approved"]
|
|
38
|
+
: candidate.status === "rejected"
|
|
39
|
+
? ["proposed", "rejected"]
|
|
40
|
+
: ["proposed", "approved", "applied"];
|
|
41
|
+
if (events.length !== expected.length
|
|
42
|
+
|| events.some((event, index) => event.type !== expected[index])) {
|
|
43
|
+
throw new MemoryContractError(`Memory extraction audit is inconsistent for candidate "${candidate.id}"`);
|
|
44
|
+
}
|
|
45
|
+
for (let index = 1; index < events.length; index += 1) {
|
|
46
|
+
if (Date.parse(events[index].at) < Date.parse(events[index - 1].at)) {
|
|
47
|
+
throw new MemoryContractError(`Memory extraction audit is out of order for candidate "${candidate.id}"`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const decisionEvent = events.find((event) => event.type === "approved" || event.type === "rejected");
|
|
51
|
+
if (candidate.decision
|
|
52
|
+
&& (!decisionEvent
|
|
53
|
+
|| decisionEvent.type
|
|
54
|
+
!== (candidate.decision.decision === "approve" ? "approved" : "rejected")
|
|
55
|
+
|| decisionEvent.reviewer?.actor !== candidate.decision.decidedBy.actor
|
|
56
|
+
|| decisionEvent.reviewer?.actorId !== candidate.decision.decidedBy.actorId
|
|
57
|
+
|| decisionEvent.reason !== candidate.decision.reason
|
|
58
|
+
|| decisionEvent.at !== candidate.decision.decidedAt)) {
|
|
59
|
+
throw new MemoryContractError(`Memory extraction decision audit is inconsistent for candidate "${candidate.id}"`);
|
|
60
|
+
}
|
|
61
|
+
const appliedEvent = events.find((event) => event.type === "applied");
|
|
62
|
+
if (candidate.status === "applied"
|
|
63
|
+
&& (!appliedEvent
|
|
64
|
+
|| appliedEvent.memoryId !== candidate.appliedMemoryId
|
|
65
|
+
|| appliedEvent.at !== candidate.appliedAt)) {
|
|
66
|
+
throw new MemoryContractError(`Memory extraction application audit is inconsistent for candidate "${candidate.id}"`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export class InMemoryMemoryExtractionStore {
|
|
70
|
+
namespaces = new Map();
|
|
71
|
+
auditIds = new Set();
|
|
72
|
+
createAuditId;
|
|
73
|
+
now;
|
|
74
|
+
constructor(options = {}) {
|
|
75
|
+
this.createAuditId = options.createAuditId
|
|
76
|
+
?? (() => `memory-audit-${nanoid(16)}`);
|
|
77
|
+
this.now = options.now ?? (() => new Date());
|
|
78
|
+
if (options.snapshot)
|
|
79
|
+
this.restore(options.snapshot);
|
|
80
|
+
}
|
|
81
|
+
state(context) {
|
|
82
|
+
const key = namespace(context.namespace);
|
|
83
|
+
let state = this.namespaces.get(key);
|
|
84
|
+
if (!state) {
|
|
85
|
+
state = {
|
|
86
|
+
candidates: new Map(),
|
|
87
|
+
idempotency: new Map(),
|
|
88
|
+
audit: [],
|
|
89
|
+
};
|
|
90
|
+
this.namespaces.set(key, state);
|
|
91
|
+
}
|
|
92
|
+
return state;
|
|
93
|
+
}
|
|
94
|
+
existingState(context) {
|
|
95
|
+
return this.namespaces.get(namespace(context.namespace));
|
|
96
|
+
}
|
|
97
|
+
authorize(candidate, context) {
|
|
98
|
+
if (!canAccessMemoryScope(candidate.scope, context.access)) {
|
|
99
|
+
throw new MemoryAuthorizationError("Memory extraction scope is not authorized");
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
requiredCandidate(id, context) {
|
|
103
|
+
const candidateId = typeof id === "string" ? id.trim() : "";
|
|
104
|
+
if (!candidateId) {
|
|
105
|
+
throw new MemoryContractError("Memory extraction candidate id is required", "invalid_item", "id");
|
|
106
|
+
}
|
|
107
|
+
const state = this.existingState(context);
|
|
108
|
+
const candidate = state?.candidates.get(candidateId);
|
|
109
|
+
if (!state || !candidate) {
|
|
110
|
+
throw new MemoryConflictError("Memory extraction candidate was not found");
|
|
111
|
+
}
|
|
112
|
+
this.authorize(candidate, context);
|
|
113
|
+
return { state, candidate };
|
|
114
|
+
}
|
|
115
|
+
assertRevision(candidate, expectedRevision) {
|
|
116
|
+
if (expectedRevision !== undefined
|
|
117
|
+
&& (!Number.isSafeInteger(expectedRevision)
|
|
118
|
+
|| expectedRevision < 1
|
|
119
|
+
|| candidate.revision !== expectedRevision)) {
|
|
120
|
+
throw new MemoryConflictError("Memory extraction candidate changed; retry the decision");
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
auditEvent(candidateId, input, at = this.now()) {
|
|
124
|
+
return normalizeMemoryExtractionAuditEvent({
|
|
125
|
+
id: this.createAuditId(),
|
|
126
|
+
candidateId,
|
|
127
|
+
at,
|
|
128
|
+
...input,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
appendAudit(state, event) {
|
|
132
|
+
if (this.auditIds.has(event.id)) {
|
|
133
|
+
throw new MemoryConflictError(`Duplicate Memory extraction audit event "${event.id}"`);
|
|
134
|
+
}
|
|
135
|
+
this.auditIds.add(event.id);
|
|
136
|
+
state.audit.push(event);
|
|
137
|
+
}
|
|
138
|
+
idempotencyIndexKey(candidate) {
|
|
139
|
+
return JSON.stringify([
|
|
140
|
+
memoryScopeKey(candidate.scope),
|
|
141
|
+
candidate.idempotencyKey,
|
|
142
|
+
]);
|
|
143
|
+
}
|
|
144
|
+
async propose(input, context) {
|
|
145
|
+
const candidate = normalizeMemoryExtractionCandidate(input);
|
|
146
|
+
if (candidate.status !== "pending" || candidate.revision !== 1) {
|
|
147
|
+
throw new MemoryConflictError("Only new pending extraction candidates can be proposed");
|
|
148
|
+
}
|
|
149
|
+
this.authorize(candidate, context);
|
|
150
|
+
const state = this.state(context);
|
|
151
|
+
const idempotencyKey = this.idempotencyIndexKey(candidate);
|
|
152
|
+
const existingId = state.idempotency.get(idempotencyKey);
|
|
153
|
+
if (existingId) {
|
|
154
|
+
const existing = state.candidates.get(existingId);
|
|
155
|
+
if (!existing) {
|
|
156
|
+
throw new MemoryContractError("Memory extraction idempotency index is corrupted");
|
|
157
|
+
}
|
|
158
|
+
if (memoryExtractionCandidateIdentity(existing)
|
|
159
|
+
!== memoryExtractionCandidateIdentity(candidate)) {
|
|
160
|
+
throw new MemoryConflictError("Memory extraction idempotency key was reused for different content");
|
|
161
|
+
}
|
|
162
|
+
return Object.freeze({
|
|
163
|
+
candidate: cloneCandidate(existing),
|
|
164
|
+
created: false,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
if (state.candidates.has(candidate.id)) {
|
|
168
|
+
throw new MemoryConflictError(`Duplicate Memory extraction candidate "${candidate.id}"`);
|
|
169
|
+
}
|
|
170
|
+
const audit = this.auditEvent(candidate.id, { type: "proposed" });
|
|
171
|
+
if (this.auditIds.has(audit.id)) {
|
|
172
|
+
throw new MemoryConflictError(`Duplicate Memory extraction audit event "${audit.id}"`);
|
|
173
|
+
}
|
|
174
|
+
state.candidates.set(candidate.id, candidate);
|
|
175
|
+
state.idempotency.set(idempotencyKey, candidate.id);
|
|
176
|
+
this.appendAudit(state, audit);
|
|
177
|
+
return Object.freeze({
|
|
178
|
+
candidate: cloneCandidate(candidate),
|
|
179
|
+
created: true,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
async get(id, context) {
|
|
183
|
+
const candidateId = typeof id === "string" ? id.trim() : "";
|
|
184
|
+
if (!candidateId) {
|
|
185
|
+
throw new MemoryContractError("Memory extraction candidate id is required", "invalid_item", "id");
|
|
186
|
+
}
|
|
187
|
+
const candidate = this.existingState(context)?.candidates.get(candidateId);
|
|
188
|
+
if (!candidate)
|
|
189
|
+
return undefined;
|
|
190
|
+
this.authorize(candidate, context);
|
|
191
|
+
return cloneCandidate(candidate);
|
|
192
|
+
}
|
|
193
|
+
async list(query, context) {
|
|
194
|
+
const limit = boundedLimit(query.limit);
|
|
195
|
+
const requestedScope = query.scope
|
|
196
|
+
? normalizeMemoryScope(query.scope)
|
|
197
|
+
: undefined;
|
|
198
|
+
if (requestedScope
|
|
199
|
+
&& !canAccessMemoryScope(requestedScope, context.access)) {
|
|
200
|
+
throw new MemoryAuthorizationError("Memory extraction scope is not authorized");
|
|
201
|
+
}
|
|
202
|
+
const statuses = query.statuses
|
|
203
|
+
? new Set(query.statuses)
|
|
204
|
+
: undefined;
|
|
205
|
+
if (statuses
|
|
206
|
+
&& [...statuses].some((status) => !["pending", "approved", "rejected", "applied"].includes(status))) {
|
|
207
|
+
throw new MemoryContractError("Unknown Memory extraction status", "invalid_item", "statuses");
|
|
208
|
+
}
|
|
209
|
+
const result = [];
|
|
210
|
+
for (const candidate of this.existingState(context)?.candidates.values() ?? []) {
|
|
211
|
+
if (!canAccessMemoryScope(candidate.scope, context.access))
|
|
212
|
+
continue;
|
|
213
|
+
if (requestedScope
|
|
214
|
+
&& memoryScopeKey(candidate.scope) !== memoryScopeKey(requestedScope))
|
|
215
|
+
continue;
|
|
216
|
+
if (statuses && !statuses.has(candidate.status))
|
|
217
|
+
continue;
|
|
218
|
+
result.push(cloneCandidate(candidate));
|
|
219
|
+
}
|
|
220
|
+
return result
|
|
221
|
+
.sort((left, right) => right.createdAt.localeCompare(left.createdAt)
|
|
222
|
+
|| left.id.localeCompare(right.id))
|
|
223
|
+
.slice(0, limit);
|
|
224
|
+
}
|
|
225
|
+
async decide(id, input, context) {
|
|
226
|
+
const { state, candidate } = this.requiredCandidate(id, context);
|
|
227
|
+
this.assertRevision(candidate, input.expectedRevision);
|
|
228
|
+
if (candidate.status !== "pending") {
|
|
229
|
+
throw new MemoryConflictError("Only pending extraction candidates can be decided");
|
|
230
|
+
}
|
|
231
|
+
const decidedAt = timestamp(this.now());
|
|
232
|
+
const decision = createMemoryExtractionDecision(input, decidedAt);
|
|
233
|
+
const status = decision.decision === "approve" ? "approved" : "rejected";
|
|
234
|
+
const updated = normalizeMemoryExtractionCandidate({
|
|
235
|
+
...candidate,
|
|
236
|
+
status,
|
|
237
|
+
revision: candidate.revision + 1,
|
|
238
|
+
decision,
|
|
239
|
+
updatedAt: decidedAt,
|
|
240
|
+
});
|
|
241
|
+
const audit = this.auditEvent(candidate.id, {
|
|
242
|
+
type: status,
|
|
243
|
+
reviewer: decision.decidedBy,
|
|
244
|
+
...(decision.reason ? { reason: decision.reason } : {}),
|
|
245
|
+
}, decidedAt);
|
|
246
|
+
if (this.auditIds.has(audit.id)) {
|
|
247
|
+
throw new MemoryConflictError(`Duplicate Memory extraction audit event "${audit.id}"`);
|
|
248
|
+
}
|
|
249
|
+
state.candidates.set(candidate.id, updated);
|
|
250
|
+
this.appendAudit(state, audit);
|
|
251
|
+
return cloneCandidate(updated);
|
|
252
|
+
}
|
|
253
|
+
async markApplied(id, input, context) {
|
|
254
|
+
const { state, candidate } = this.requiredCandidate(id, context);
|
|
255
|
+
this.assertRevision(candidate, input.expectedRevision);
|
|
256
|
+
if (candidate.status !== "approved") {
|
|
257
|
+
throw new MemoryConflictError("Only approved extraction candidates can be applied");
|
|
258
|
+
}
|
|
259
|
+
const memoryId = typeof input.memoryId === "string"
|
|
260
|
+
? input.memoryId.trim()
|
|
261
|
+
: "";
|
|
262
|
+
if (!memoryId || memoryId.length > 512) {
|
|
263
|
+
throw new MemoryContractError("Applied Memory id is required", "invalid_item", "memoryId");
|
|
264
|
+
}
|
|
265
|
+
const appliedAt = timestamp(this.now());
|
|
266
|
+
const updated = normalizeMemoryExtractionCandidate({
|
|
267
|
+
...candidate,
|
|
268
|
+
status: "applied",
|
|
269
|
+
revision: candidate.revision + 1,
|
|
270
|
+
appliedMemoryId: memoryId,
|
|
271
|
+
appliedAt,
|
|
272
|
+
updatedAt: appliedAt,
|
|
273
|
+
});
|
|
274
|
+
const audit = this.auditEvent(candidate.id, {
|
|
275
|
+
type: "applied",
|
|
276
|
+
memoryId,
|
|
277
|
+
}, appliedAt);
|
|
278
|
+
if (this.auditIds.has(audit.id)) {
|
|
279
|
+
throw new MemoryConflictError(`Duplicate Memory extraction audit event "${audit.id}"`);
|
|
280
|
+
}
|
|
281
|
+
state.candidates.set(candidate.id, updated);
|
|
282
|
+
this.appendAudit(state, audit);
|
|
283
|
+
return cloneCandidate(updated);
|
|
284
|
+
}
|
|
285
|
+
async listAudit(candidateId, context) {
|
|
286
|
+
const { state, candidate } = this.requiredCandidate(candidateId, context);
|
|
287
|
+
this.authorize(candidate, context);
|
|
288
|
+
return state.audit
|
|
289
|
+
.filter((event) => event.candidateId === candidate.id)
|
|
290
|
+
.map(cloneAudit);
|
|
291
|
+
}
|
|
292
|
+
snapshot() {
|
|
293
|
+
const namespaces = [];
|
|
294
|
+
for (const [key, state] of [...this.namespaces].sort(([left], [right]) => left.localeCompare(right))) {
|
|
295
|
+
namespaces.push(Object.freeze({
|
|
296
|
+
namespace: key,
|
|
297
|
+
candidates: Object.freeze([...state.candidates.values()]
|
|
298
|
+
.sort((left, right) => left.id.localeCompare(right.id))
|
|
299
|
+
.map(cloneCandidate)),
|
|
300
|
+
audit: Object.freeze(state.audit.map(cloneAudit)),
|
|
301
|
+
}));
|
|
302
|
+
}
|
|
303
|
+
return Object.freeze({
|
|
304
|
+
version: 1,
|
|
305
|
+
namespaces: Object.freeze(namespaces),
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
restore(snapshot) {
|
|
309
|
+
if (!snapshot || snapshot.version !== 1 || !Array.isArray(snapshot.namespaces)) {
|
|
310
|
+
throw new MemoryContractError("Unsupported Memory extraction snapshot");
|
|
311
|
+
}
|
|
312
|
+
const next = new Map();
|
|
313
|
+
const auditIds = new Set();
|
|
314
|
+
for (const entry of snapshot.namespaces) {
|
|
315
|
+
const key = namespace(entry.namespace);
|
|
316
|
+
if (next.has(key)) {
|
|
317
|
+
throw new MemoryConflictError(`Duplicate Memory extraction namespace "${key}"`);
|
|
318
|
+
}
|
|
319
|
+
if (!Array.isArray(entry.candidates) || !Array.isArray(entry.audit)) {
|
|
320
|
+
throw new MemoryContractError("Invalid Memory extraction snapshot namespace");
|
|
321
|
+
}
|
|
322
|
+
const candidates = new Map();
|
|
323
|
+
const idempotency = new Map();
|
|
324
|
+
for (const rawCandidate of entry.candidates) {
|
|
325
|
+
const candidate = normalizeMemoryExtractionCandidate(rawCandidate);
|
|
326
|
+
if (candidates.has(candidate.id)) {
|
|
327
|
+
throw new MemoryConflictError(`Duplicate Memory extraction candidate "${candidate.id}"`);
|
|
328
|
+
}
|
|
329
|
+
const idempotencyKey = this.idempotencyIndexKey(candidate);
|
|
330
|
+
const previous = idempotency.get(idempotencyKey);
|
|
331
|
+
if (previous) {
|
|
332
|
+
throw new MemoryConflictError(`Duplicate Memory extraction idempotency key "${candidate.idempotencyKey}"`);
|
|
333
|
+
}
|
|
334
|
+
candidates.set(candidate.id, candidate);
|
|
335
|
+
idempotency.set(idempotencyKey, candidate.id);
|
|
336
|
+
}
|
|
337
|
+
const audit = entry.audit.map((rawEvent) => {
|
|
338
|
+
const event = normalizeMemoryExtractionAuditEvent(rawEvent);
|
|
339
|
+
if (auditIds.has(event.id)) {
|
|
340
|
+
throw new MemoryConflictError(`Duplicate Memory extraction audit event "${event.id}"`);
|
|
341
|
+
}
|
|
342
|
+
if (!candidates.has(event.candidateId)) {
|
|
343
|
+
throw new MemoryContractError(`Memory extraction audit references missing candidate "${event.candidateId}"`);
|
|
344
|
+
}
|
|
345
|
+
auditIds.add(event.id);
|
|
346
|
+
return event;
|
|
347
|
+
});
|
|
348
|
+
for (const candidate of candidates.values()) {
|
|
349
|
+
assertAuditConsistency(candidate, audit.filter((event) => event.candidateId === candidate.id));
|
|
350
|
+
}
|
|
351
|
+
next.set(key, { candidates, idempotency, audit });
|
|
352
|
+
}
|
|
353
|
+
this.namespaces.clear();
|
|
354
|
+
this.auditIds.clear();
|
|
355
|
+
for (const [key, state] of next)
|
|
356
|
+
this.namespaces.set(key, state);
|
|
357
|
+
for (const state of next.values()) {
|
|
358
|
+
for (const event of state.audit)
|
|
359
|
+
this.auditIds.add(event.id);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=in-memory-extraction-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-extraction-store.js","sourceRoot":"","sources":["../../src/memory/in-memory-extraction-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type MemoryWritePolicy } from "./policy.js";
|
|
2
|
+
import type { MemoryGetOptions, MemoryItemPatch, MemoryItemStore, MemoryItemStoreSnapshot, MemoryListPage, MemoryListPageQuery, MemoryListQuery, MemorySearchQuery, MemorySearchResult, MemoryStoreContext, MemorySupersedeResult, MemoryUsageEvent } from "./store-types.js";
|
|
3
|
+
import { type MemoryDedupeInput, type MemoryItem } from "./types.js";
|
|
4
|
+
export declare class InMemoryMemoryItemStore implements MemoryItemStore {
|
|
5
|
+
private readonly writePolicy;
|
|
6
|
+
private readonly namespaces;
|
|
7
|
+
constructor(writePolicy?: MemoryWritePolicy, snapshot?: MemoryItemStoreSnapshot);
|
|
8
|
+
private state;
|
|
9
|
+
private existing;
|
|
10
|
+
private assertWriteAllowed;
|
|
11
|
+
create(value: MemoryItem, context: MemoryStoreContext): Promise<MemoryItem>;
|
|
12
|
+
get(id: string, context: MemoryStoreContext, options?: MemoryGetOptions): Promise<MemoryItem | undefined>;
|
|
13
|
+
list(query: MemoryListQuery, context: MemoryStoreContext): Promise<MemoryItem[]>;
|
|
14
|
+
listPage(query: MemoryListPageQuery, context: MemoryStoreContext): Promise<MemoryListPage>;
|
|
15
|
+
update(id: string, patch: MemoryItemPatch, context: MemoryStoreContext): Promise<MemoryItem | undefined>;
|
|
16
|
+
supersede(id: string, replacementValue: MemoryItem, context: MemoryStoreContext): Promise<MemorySupersedeResult | undefined>;
|
|
17
|
+
forget(id: string, context: MemoryStoreContext): Promise<boolean>;
|
|
18
|
+
search(query: MemorySearchQuery, context: MemoryStoreContext): Promise<MemorySearchResult[]>;
|
|
19
|
+
findDedupeCandidate(input: MemoryDedupeInput, context: MemoryStoreContext): Promise<MemoryItem | undefined>;
|
|
20
|
+
appendUsage(value: MemoryUsageEvent, context: MemoryStoreContext): Promise<void>;
|
|
21
|
+
listUsage(memoryId: string, context: MemoryStoreContext): Promise<MemoryUsageEvent[]>;
|
|
22
|
+
exportSnapshot(): MemoryItemStoreSnapshot;
|
|
23
|
+
replaceSnapshot(value: MemoryItemStoreSnapshot): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=in-memory-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../../src/memory/in-memory-store.ts"],"names":[],"mappings":"AAQA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAY1E,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,uBAAuB,EAEvB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAElB,qBAAqB,EACrB,gBAAgB,EAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAGhB,MAAM,YAAY,CAAC;AAuJpB,qBAAa,uBAAwB,YAAW,eAAe;IAI3D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAH9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;gBAG7C,WAAW,GAAE,iBAAsB,EACpD,QAAQ,CAAC,EAAE,uBAAuB;IAKpC,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,QAAQ;YAcF,kBAAkB;IAkB1B,MAAM,CACV,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,CAAC;IAqBhB,GAAG,CACP,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAS5B,IAAI,CACR,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,EAAE,CAAC;IAKlB,QAAQ,CACZ,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,cAAc,CAAC;IAsDpB,MAAM,CACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAsC5B,SAAS,CACb,EAAE,EAAE,MAAM,EACV,gBAAgB,EAAE,UAAU,EAC5B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IA+CvC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAcjE,MAAM,CACV,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAqB1B,mBAAmB,CACvB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAkB5B,WAAW,CACf,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAcV,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAc9B,cAAc,IAAI,uBAAuB;IAmBzC,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI;CA4CtD"}
|