@polpo-ai/core 0.15.41 → 0.15.42

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 (108) hide show
  1. package/README.md +47 -0
  2. package/dist/__tests__/memory-store-policy.test.d.ts +2 -0
  3. package/dist/__tests__/memory-store-policy.test.d.ts.map +1 -0
  4. package/dist/__tests__/memory-store-policy.test.js +141 -0
  5. package/dist/__tests__/memory-store-policy.test.js.map +1 -0
  6. package/dist/__tests__/typed-memory.test.d.ts +2 -0
  7. package/dist/__tests__/typed-memory.test.d.ts.map +1 -0
  8. package/dist/__tests__/typed-memory.test.js +226 -0
  9. package/dist/__tests__/typed-memory.test.js.map +1 -0
  10. package/dist/adapter.d.ts +3 -0
  11. package/dist/adapter.d.ts.map +1 -1
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/memory/compatibility.d.ts +3 -0
  17. package/dist/memory/compatibility.d.ts.map +1 -0
  18. package/dist/memory/compatibility.js +27 -0
  19. package/dist/memory/compatibility.js.map +1 -0
  20. package/dist/memory/dedupe.d.ts +4 -0
  21. package/dist/memory/dedupe.d.ts.map +1 -0
  22. package/dist/memory/dedupe.js +21 -0
  23. package/dist/memory/dedupe.js.map +1 -0
  24. package/dist/memory/errors.d.ts +7 -0
  25. package/dist/memory/errors.d.ts.map +1 -0
  26. package/dist/memory/errors.js +11 -0
  27. package/dist/memory/errors.js.map +1 -0
  28. package/dist/memory/extraction.d.ts +124 -0
  29. package/dist/memory/extraction.d.ts.map +1 -0
  30. package/dist/memory/extraction.js +450 -0
  31. package/dist/memory/extraction.js.map +1 -0
  32. package/dist/memory/extraction.test.d.ts +2 -0
  33. package/dist/memory/extraction.test.d.ts.map +1 -0
  34. package/dist/memory/extraction.test.js +366 -0
  35. package/dist/memory/extraction.test.js.map +1 -0
  36. package/dist/memory/in-memory-extraction-store.d.ts +30 -0
  37. package/dist/memory/in-memory-extraction-store.d.ts.map +1 -0
  38. package/dist/memory/in-memory-extraction-store.js +363 -0
  39. package/dist/memory/in-memory-extraction-store.js.map +1 -0
  40. package/dist/memory/in-memory-store.d.ts +24 -0
  41. package/dist/memory/in-memory-store.d.ts.map +1 -0
  42. package/dist/memory/in-memory-store.js +380 -0
  43. package/dist/memory/in-memory-store.js.map +1 -0
  44. package/dist/memory/index.d.ts +20 -0
  45. package/dist/memory/index.d.ts.map +1 -0
  46. package/dist/memory/index.js +14 -0
  47. package/dist/memory/index.js.map +1 -0
  48. package/dist/memory/item.d.ts +6 -0
  49. package/dist/memory/item.d.ts.map +1 -0
  50. package/dist/memory/item.js +169 -0
  51. package/dist/memory/item.js.map +1 -0
  52. package/dist/memory/lifecycle.d.ts +5 -0
  53. package/dist/memory/lifecycle.d.ts.map +1 -0
  54. package/dist/memory/lifecycle.js +32 -0
  55. package/dist/memory/lifecycle.js.map +1 -0
  56. package/dist/memory/policy.d.ts +27 -0
  57. package/dist/memory/policy.d.ts.map +1 -0
  58. package/dist/memory/policy.js +114 -0
  59. package/dist/memory/policy.js.map +1 -0
  60. package/dist/memory/ranking.d.ts +9 -0
  61. package/dist/memory/ranking.d.ts.map +1 -0
  62. package/dist/memory/ranking.js +65 -0
  63. package/dist/memory/ranking.js.map +1 -0
  64. package/dist/memory/scope.d.ts +5 -0
  65. package/dist/memory/scope.d.ts.map +1 -0
  66. package/dist/memory/scope.js +68 -0
  67. package/dist/memory/scope.js.map +1 -0
  68. package/dist/memory/store-errors.d.ts +10 -0
  69. package/dist/memory/store-errors.d.ts.map +1 -0
  70. package/dist/memory/store-errors.js +19 -0
  71. package/dist/memory/store-errors.js.map +1 -0
  72. package/dist/memory/store-types.d.ts +81 -0
  73. package/dist/memory/store-types.d.ts.map +1 -0
  74. package/dist/memory/store-types.js +2 -0
  75. package/dist/memory/store-types.js.map +1 -0
  76. package/dist/memory/types.d.ts +70 -0
  77. package/dist/memory/types.d.ts.map +1 -0
  78. package/dist/memory/types.js +32 -0
  79. package/dist/memory/types.js.map +1 -0
  80. package/dist/orchestrator-context.d.ts +6 -0
  81. package/dist/orchestrator-context.d.ts.map +1 -1
  82. package/dist/runtime-context/index.d.ts +5 -0
  83. package/dist/runtime-context/index.d.ts.map +1 -0
  84. package/dist/runtime-context/index.js +4 -0
  85. package/dist/runtime-context/index.js.map +1 -0
  86. package/dist/runtime-context/memory-retriever.d.ts +14 -0
  87. package/dist/runtime-context/memory-retriever.d.ts.map +1 -0
  88. package/dist/runtime-context/memory-retriever.js +76 -0
  89. package/dist/runtime-context/memory-retriever.js.map +1 -0
  90. package/dist/runtime-context/runtime-context.d.ts +4 -0
  91. package/dist/runtime-context/runtime-context.d.ts.map +1 -0
  92. package/dist/runtime-context/runtime-context.js +311 -0
  93. package/dist/runtime-context/runtime-context.js.map +1 -0
  94. package/dist/runtime-context/runtime-context.test.d.ts +2 -0
  95. package/dist/runtime-context/runtime-context.test.d.ts.map +1 -0
  96. package/dist/runtime-context/runtime-context.test.js +282 -0
  97. package/dist/runtime-context/runtime-context.test.js.map +1 -0
  98. package/dist/runtime-context/types.d.ts +75 -0
  99. package/dist/runtime-context/types.d.ts.map +1 -0
  100. package/dist/runtime-context/types.js +8 -0
  101. package/dist/runtime-context/types.js.map +1 -0
  102. package/dist/task-runner.d.ts.map +1 -1
  103. package/dist/task-runner.js +16 -0
  104. package/dist/task-runner.js.map +1 -1
  105. package/dist/types/config.d.ts +6 -0
  106. package/dist/types/config.d.ts.map +1 -1
  107. package/dist/types/config.js.map +1 -1
  108. package/package.json +9 -1
@@ -0,0 +1,380 @@
1
+ import { MemoryContractError } from "./errors.js";
2
+ import { createMemoryDedupeIdentity } from "./dedupe.js";
3
+ import { normalizeMemoryItem } from "./item.js";
4
+ import { assertMemoryStatusTransition, isMemoryItemExpired, isMemoryItemRetrievable, } from "./lifecycle.js";
5
+ import { evaluateMemoryWrite } from "./policy.js";
6
+ import { rankMemoryItems, selectMemoryResultsWithinBudget } from "./ranking.js";
7
+ import { canAccessMemoryScope, memoryScopeKey, normalizeMemoryScope, } from "./scope.js";
8
+ import { MemoryAuthorizationError, MemoryConflictError, MemoryPolicyError, } from "./store-errors.js";
9
+ import { MEMORY_KINDS, MEMORY_STATUSES, } from "./types.js";
10
+ const memoryKinds = new Set(MEMORY_KINDS);
11
+ const memoryStatuses = new Set(MEMORY_STATUSES);
12
+ const usageTypes = new Set([
13
+ "retrieved",
14
+ "written",
15
+ "updated",
16
+ "superseded",
17
+ "forgotten",
18
+ ]);
19
+ function text(value, path, max = 512) {
20
+ if (typeof value !== "string") {
21
+ throw new MemoryContractError(`${path} must be a string`, "invalid_item", path);
22
+ }
23
+ const normalized = value.trim();
24
+ if (normalized.length === 0 || normalized.length > max) {
25
+ throw new MemoryContractError(`${path} must contain between 1 and ${max} characters`, "invalid_item", path);
26
+ }
27
+ return normalized;
28
+ }
29
+ function timestamp(value, path) {
30
+ if (!(typeof value === "string" || value instanceof Date)) {
31
+ throw new MemoryContractError(`${path} must be a timestamp`, "invalid_item", path);
32
+ }
33
+ const parsed = value instanceof Date ? value : new Date(value);
34
+ if (!Number.isFinite(parsed.getTime())) {
35
+ throw new MemoryContractError(`${path} must be a timestamp`, "invalid_item", path);
36
+ }
37
+ return parsed.toISOString();
38
+ }
39
+ function normalizeContext(context) {
40
+ if (!context || typeof context !== "object") {
41
+ throw new MemoryContractError("Memory store context is required");
42
+ }
43
+ if (!context.access
44
+ || typeof context.access !== "object"
45
+ || Array.isArray(context.access)) {
46
+ throw new MemoryContractError("Memory store access context is required", "invalid_scope", "access");
47
+ }
48
+ return {
49
+ ...context,
50
+ namespace: text(context.namespace, "namespace"),
51
+ access: { ...context.access },
52
+ ...(context.now ? { now: timestamp(context.now, "now") } : {}),
53
+ };
54
+ }
55
+ function normalizeLimit(value) {
56
+ if (value === undefined)
57
+ return 1_000;
58
+ if (!Number.isInteger(value) || value < 0 || value > 10_000) {
59
+ throw new MemoryContractError("Memory list limit must be an integer between 0 and 10000", "invalid_item", "limit");
60
+ }
61
+ return value;
62
+ }
63
+ function normalizeUsageEvent(value) {
64
+ if (!value || typeof value !== "object" || !usageTypes.has(value.type)) {
65
+ throw new MemoryContractError("Invalid Memory usage event");
66
+ }
67
+ return Object.freeze({
68
+ id: text(value.id, "usage.id", 256),
69
+ memoryId: text(value.memoryId, "usage.memoryId", 256),
70
+ type: value.type,
71
+ at: timestamp(value.at, "usage.at"),
72
+ ...(value.runId ? { runId: text(value.runId, "usage.runId") } : {}),
73
+ ...(value.sessionId
74
+ ? { sessionId: text(value.sessionId, "usage.sessionId") }
75
+ : {}),
76
+ ...(value.requestId
77
+ ? { requestId: text(value.requestId, "usage.requestId") }
78
+ : {}),
79
+ });
80
+ }
81
+ function cloneItem(item) {
82
+ return normalizeMemoryItem(JSON.parse(JSON.stringify(item)));
83
+ }
84
+ function cloneUsage(event) {
85
+ return normalizeUsageEvent(JSON.parse(JSON.stringify(event)));
86
+ }
87
+ export class InMemoryMemoryItemStore {
88
+ writePolicy;
89
+ namespaces = new Map();
90
+ constructor(writePolicy = {}, snapshot) {
91
+ this.writePolicy = writePolicy;
92
+ if (snapshot)
93
+ this.replaceSnapshot(snapshot);
94
+ }
95
+ state(namespace) {
96
+ let state = this.namespaces.get(namespace);
97
+ if (!state) {
98
+ state = { items: new Map(), usage: [] };
99
+ this.namespaces.set(namespace, state);
100
+ }
101
+ return state;
102
+ }
103
+ existing(id, context) {
104
+ const normalized = normalizeContext(context);
105
+ const item = this.namespaces.get(normalized.namespace)?.items.get(text(id, "id", 256));
106
+ if (!item || !canAccessMemoryScope(item.scope, normalized.access)) {
107
+ return undefined;
108
+ }
109
+ return item;
110
+ }
111
+ async assertWriteAllowed(item, context) {
112
+ const decision = await evaluateMemoryWrite(item, context, this.writePolicy);
113
+ const unauthorized = decision.violations.some((violation) => violation.code === "unauthorized_scope");
114
+ if (unauthorized)
115
+ throw new MemoryAuthorizationError();
116
+ if (!decision.allowed) {
117
+ throw new MemoryPolicyError(`Memory write denied: ${decision.violations
118
+ .map((violation) => violation.code)
119
+ .join(", ")}`);
120
+ }
121
+ }
122
+ async create(value, context) {
123
+ const normalizedContext = normalizeContext(context);
124
+ const item = cloneItem(value);
125
+ if (item.status !== "active" && item.status !== "pending") {
126
+ throw new MemoryContractError("New Memory items may only be active or pending", "invalid_item", "status");
127
+ }
128
+ await this.assertWriteAllowed(item, normalizedContext);
129
+ const state = this.state(normalizedContext.namespace);
130
+ if (state.items.has(item.id)) {
131
+ throw new MemoryConflictError(`Memory item "${item.id}" already exists in this namespace`);
132
+ }
133
+ state.items.set(item.id, item);
134
+ return cloneItem(item);
135
+ }
136
+ async get(id, context, options = {}) {
137
+ const item = this.existing(id, context);
138
+ if (!item)
139
+ return undefined;
140
+ const now = options.now ?? context.now ?? new Date();
141
+ if (!options.includeInactive && item.status !== "active")
142
+ return undefined;
143
+ if (!options.includeExpired && isMemoryItemExpired(item, now))
144
+ return undefined;
145
+ return cloneItem(item);
146
+ }
147
+ async list(query, context) {
148
+ const normalized = normalizeContext(context);
149
+ const state = this.namespaces.get(normalized.namespace);
150
+ if (!state)
151
+ return [];
152
+ const statuses = query.statuses ?? ["active"];
153
+ for (const status of statuses) {
154
+ if (!memoryStatuses.has(status)) {
155
+ throw new MemoryContractError(`Unknown Memory status: ${status}`);
156
+ }
157
+ }
158
+ const kinds = query.kinds;
159
+ if (kinds) {
160
+ for (const kind of kinds) {
161
+ if (!memoryKinds.has(kind)) {
162
+ throw new MemoryContractError(`Unknown Memory kind: ${kind}`);
163
+ }
164
+ }
165
+ }
166
+ const scopeKey = query.scope
167
+ ? memoryScopeKey(normalizeMemoryScope(query.scope))
168
+ : undefined;
169
+ const now = query.now ?? normalized.now ?? new Date();
170
+ const limit = normalizeLimit(query.limit);
171
+ return [...state.items.values()]
172
+ .filter((item) => canAccessMemoryScope(item.scope, normalized.access))
173
+ .filter((item) => statuses.includes(item.status))
174
+ .filter((item) => !kinds || kinds.includes(item.kind))
175
+ .filter((item) => !scopeKey || memoryScopeKey(item.scope) === scopeKey)
176
+ .filter((item) => query.includeExpired || !isMemoryItemExpired(item, now))
177
+ .sort((left, right) => (left.createdAt.localeCompare(right.createdAt)
178
+ || left.id.localeCompare(right.id)))
179
+ .slice(0, limit)
180
+ .map(cloneItem);
181
+ }
182
+ async update(id, patch, context) {
183
+ const normalized = normalizeContext(context);
184
+ const current = this.existing(id, normalized);
185
+ if (!current)
186
+ return undefined;
187
+ const status = patch.status ?? current.status;
188
+ assertMemoryStatusTransition(current.status, status);
189
+ const candidate = normalizeMemoryItem({
190
+ ...current,
191
+ ...(patch.content === undefined ? {} : { content: patch.content }),
192
+ ...(patch.summary === undefined
193
+ ? {}
194
+ : patch.summary === null
195
+ ? { summary: undefined }
196
+ : { summary: patch.summary }),
197
+ ...(patch.confidence === undefined
198
+ ? {}
199
+ : patch.confidence === null
200
+ ? { confidence: undefined }
201
+ : { confidence: patch.confidence }),
202
+ ...(patch.expiresAt === undefined
203
+ ? {}
204
+ : patch.expiresAt === null
205
+ ? { expiresAt: undefined }
206
+ : { expiresAt: patch.expiresAt }),
207
+ status,
208
+ updatedAt: timestamp(normalized.now ?? new Date(), "now"),
209
+ });
210
+ await this.assertWriteAllowed(candidate, normalized);
211
+ const state = this.state(normalized.namespace);
212
+ if (state.items.get(current.id) !== current) {
213
+ throw new MemoryConflictError(`Memory item "${current.id}" changed during update`);
214
+ }
215
+ state.items.set(candidate.id, candidate);
216
+ return cloneItem(candidate);
217
+ }
218
+ async supersede(id, replacementValue, context) {
219
+ const normalized = normalizeContext(context);
220
+ const current = this.existing(id, normalized);
221
+ if (!current)
222
+ return undefined;
223
+ assertMemoryStatusTransition(current.status, "superseded");
224
+ const replacement = cloneItem(replacementValue);
225
+ if (replacement.status !== "active") {
226
+ throw new MemoryContractError("A superseding Memory replacement must be active", "invalid_item", "status");
227
+ }
228
+ if (replacement.id === current.id) {
229
+ throw new MemoryConflictError("Replacement Memory id must be different");
230
+ }
231
+ const state = this.state(normalized.namespace);
232
+ if (state.items.has(replacement.id)) {
233
+ throw new MemoryConflictError(`Memory item "${replacement.id}" already exists in this namespace`);
234
+ }
235
+ await this.assertWriteAllowed(replacement, normalized);
236
+ if (state.items.get(current.id) !== current) {
237
+ throw new MemoryConflictError(`Memory item "${current.id}" changed during supersede`);
238
+ }
239
+ if (state.items.has(replacement.id)) {
240
+ throw new MemoryConflictError(`Memory item "${replacement.id}" was created during supersede`);
241
+ }
242
+ const updatedAt = timestamp(normalized.now ?? new Date(), "now");
243
+ const superseded = normalizeMemoryItem({
244
+ ...current,
245
+ status: "superseded",
246
+ updatedAt,
247
+ });
248
+ state.items.set(current.id, superseded);
249
+ state.items.set(replacement.id, replacement);
250
+ return {
251
+ superseded: cloneItem(superseded),
252
+ replacement: cloneItem(replacement),
253
+ };
254
+ }
255
+ async forget(id, context) {
256
+ const normalized = normalizeContext(context);
257
+ const current = this.existing(id, normalized);
258
+ if (!current)
259
+ return false;
260
+ assertMemoryStatusTransition(current.status, "deleted");
261
+ const deleted = normalizeMemoryItem({
262
+ ...current,
263
+ status: "deleted",
264
+ updatedAt: timestamp(normalized.now ?? new Date(), "now"),
265
+ });
266
+ this.state(normalized.namespace).items.set(deleted.id, deleted);
267
+ return true;
268
+ }
269
+ async search(query, context) {
270
+ const candidates = await this.list({
271
+ statuses: ["active"],
272
+ kinds: query.kinds,
273
+ scope: query.scope,
274
+ now: query.now,
275
+ limit: 10_000,
276
+ }, context);
277
+ const ranked = rankMemoryItems(candidates.filter((item) => isMemoryItemRetrievable(item, query.now ?? context.now ?? new Date())), query.query);
278
+ return selectMemoryResultsWithinBudget(ranked, {
279
+ tokenBudget: query.tokenBudget ?? Number.MAX_SAFE_INTEGER,
280
+ maxResults: query.maxResults ?? 20,
281
+ });
282
+ }
283
+ async findDedupeCandidate(input, context) {
284
+ const identity = createMemoryDedupeIdentity(input);
285
+ const normalized = normalizeContext(context);
286
+ const state = this.namespaces.get(normalized.namespace);
287
+ if (!state)
288
+ return undefined;
289
+ const now = normalized.now ?? new Date();
290
+ const candidate = [...state.items.values()]
291
+ .filter((item) => canAccessMemoryScope(item.scope, normalized.access))
292
+ .filter((item) => item.status === "active" || item.status === "pending")
293
+ .filter((item) => !isMemoryItemExpired(item, now))
294
+ .filter((item) => createMemoryDedupeIdentity(item) === identity)
295
+ .sort((left, right) => (left.createdAt.localeCompare(right.createdAt)
296
+ || left.id.localeCompare(right.id)))[0];
297
+ return candidate ? cloneItem(candidate) : undefined;
298
+ }
299
+ async appendUsage(value, context) {
300
+ const normalized = normalizeContext(context);
301
+ const item = this.existing(value.memoryId, normalized);
302
+ if (!item)
303
+ throw new MemoryAuthorizationError();
304
+ const event = normalizeUsageEvent(value);
305
+ const state = this.state(normalized.namespace);
306
+ if (state.usage.some((existing) => existing.id === event.id)) {
307
+ throw new MemoryConflictError(`Memory usage event "${event.id}" already exists`);
308
+ }
309
+ state.usage.push(event);
310
+ }
311
+ async listUsage(memoryId, context) {
312
+ const normalized = normalizeContext(context);
313
+ const item = this.existing(memoryId, normalized);
314
+ if (!item)
315
+ return [];
316
+ return (this.namespaces.get(normalized.namespace)?.usage ?? [])
317
+ .filter((event) => event.memoryId === item.id)
318
+ .slice()
319
+ .sort((left, right) => (left.at.localeCompare(right.at)
320
+ || left.id.localeCompare(right.id)))
321
+ .map(cloneUsage);
322
+ }
323
+ exportSnapshot() {
324
+ const namespaces = [...this.namespaces]
325
+ .sort(([left], [right]) => left.localeCompare(right))
326
+ .map(([namespace, state]) => ({
327
+ namespace,
328
+ items: [...state.items.values()]
329
+ .sort((left, right) => left.id.localeCompare(right.id))
330
+ .map(cloneItem),
331
+ usage: state.usage
332
+ .slice()
333
+ .sort((left, right) => left.id.localeCompare(right.id))
334
+ .map(cloneUsage),
335
+ }));
336
+ return Object.freeze({
337
+ version: 1,
338
+ namespaces: Object.freeze(namespaces),
339
+ });
340
+ }
341
+ replaceSnapshot(value) {
342
+ if (!value || value.version !== 1 || !Array.isArray(value.namespaces)) {
343
+ throw new MemoryContractError("Invalid Memory item store snapshot");
344
+ }
345
+ const next = new Map();
346
+ for (const namespaceState of value.namespaces) {
347
+ const namespace = text(namespaceState.namespace, "snapshot.namespace");
348
+ if (next.has(namespace)) {
349
+ throw new MemoryConflictError(`Duplicate Memory namespace "${namespace}"`);
350
+ }
351
+ if (!Array.isArray(namespaceState.items)
352
+ || !Array.isArray(namespaceState.usage)) {
353
+ throw new MemoryContractError("Invalid Memory namespace snapshot");
354
+ }
355
+ const items = new Map();
356
+ for (const valueItem of namespaceState.items) {
357
+ const item = cloneItem(valueItem);
358
+ if (items.has(item.id)) {
359
+ throw new MemoryConflictError(`Duplicate Memory item "${item.id}"`);
360
+ }
361
+ items.set(item.id, item);
362
+ }
363
+ const usage = namespaceState.usage.map((event) => cloneUsage(event));
364
+ if (new Set(usage.map((event) => event.id)).size !== usage.length) {
365
+ throw new MemoryConflictError("Duplicate Memory usage event");
366
+ }
367
+ for (const event of usage) {
368
+ if (!items.has(event.memoryId)) {
369
+ throw new MemoryContractError(`Memory usage references missing item "${event.memoryId}"`);
370
+ }
371
+ }
372
+ next.set(namespace, { items, usage });
373
+ }
374
+ this.namespaces.clear();
375
+ for (const [namespace, state] of next) {
376
+ this.namespaces.set(namespace, state);
377
+ }
378
+ }
379
+ }
380
+ //# sourceMappingURL=in-memory-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../../src/memory/in-memory-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export { MAX_MEMORY_CONTENT_CHARACTERS, MAX_MEMORY_SUMMARY_CHARACTERS, createMemoryItem, normalizeMemoryItem, } from "./item.js";
2
+ export { canAccessMemoryScope, memoryScopeKey, normalizeMemoryScope, } from "./scope.js";
3
+ export { assertMemoryStatusTransition, isMemoryItemExpired, isMemoryItemRetrievable, } from "./lifecycle.js";
4
+ export { createMemoryDedupeIdentity, normalizeMemoryDedupeContent, } from "./dedupe.js";
5
+ export { renderMemoryItemsMarkdown } from "./compatibility.js";
6
+ export { MemoryContractError } from "./errors.js";
7
+ export type { MemoryContractErrorCode } from "./errors.js";
8
+ export { MemoryAuthorizationError, MemoryConflictError, MemoryPolicyError, } from "./store-errors.js";
9
+ export { detectSensitiveMemoryContent, evaluateMemoryWrite, } from "./policy.js";
10
+ export type { MemoryPolicyViolation, MemorySensitiveContentFinding, MemorySensitiveContentHook, MemoryWriteDecision, MemoryWritePolicy, } from "./policy.js";
11
+ export { estimateMemoryItemTokens, rankMemoryItems, selectMemoryResultsWithinBudget, } from "./ranking.js";
12
+ export { InMemoryMemoryItemStore } from "./in-memory-store.js";
13
+ export { MEMORY_EXTRACTION_AUDIT_TYPES, MEMORY_EXTRACTION_PROPOSAL_ACTIONS, MEMORY_EXTRACTION_STATUSES, createMemoryExtractionCandidate, createMemoryExtractionDecision, memoryExtractionCandidateIdentity, normalizeMemoryExtractionAuditEvent, normalizeMemoryExtractionCandidate, } from "./extraction.js";
14
+ export type { CreateMemoryExtractionCandidateInput, MemoryExtractionApplyInput, MemoryExtractionAuditEvent, MemoryExtractionAuditType, MemoryExtractionCandidate, MemoryExtractionCandidateFactoryOptions, MemoryExtractionCandidateStore, MemoryExtractionDecision, MemoryExtractionDecisionInput, MemoryExtractionListQuery, MemoryExtractionMetadataValue, MemoryExtractionProposal, MemoryExtractionProposalAction, MemoryExtractionProposeResult, MemoryExtractionReviewer, MemoryExtractionSnapshotNamespace, MemoryExtractionSource, MemoryExtractionStatus, MemoryExtractionStoreContext, MemoryExtractionStoreSnapshot, } from "./extraction.js";
15
+ export { InMemoryMemoryExtractionStore, } from "./in-memory-extraction-store.js";
16
+ export type { InMemoryMemoryExtractionStoreOptions, } from "./in-memory-extraction-store.js";
17
+ export { MEMORY_KINDS, MEMORY_PROVENANCE_SOURCES, MEMORY_SCOPE_KINDS, MEMORY_STATUSES, } from "./types.js";
18
+ export type { CreateMemoryItemInput, MemoryDedupeInput, MemoryItem, MemoryItemFactoryOptions, MemoryKind, MemoryProvenance, MemoryProvenanceActor, MemoryProvenanceSource, MemoryScope, MemoryScopeAccess, MemoryScopeKind, MemoryStatus, RenderMemoryItemsOptions, } from "./types.js";
19
+ export type { MemoryGetOptions, MemoryItemPatch, MemoryItemStore, MemoryItemStoreSnapshot, MemoryListQuery, MemorySearchQuery, MemorySearchResult, MemoryStoreContext, MemoryStoreSnapshotNamespace, MemorySupersedeResult, MemoryUsageEvent, MemoryUsageEventType, MemoryWriteSurface, } from "./store-types.js";
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC1B,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,+BAA+B,GAChC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACL,6BAA6B,EAC7B,kCAAkC,EAClC,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC9B,iCAAiC,EACjC,mCAAmC,EACnC,kCAAkC,GACnC,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,oCAAoC,EACpC,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,uCAAuC,EACvC,8BAA8B,EAC9B,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,6BAA6B,EAC7B,wBAAwB,EACxB,8BAA8B,EAC9B,6BAA6B,EAC7B,wBAAwB,EACxB,iCAAiC,EACjC,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,oCAAoC,GACrC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,EACV,wBAAwB,EACxB,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,4BAA4B,EAC5B,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,14 @@
1
+ export { MAX_MEMORY_CONTENT_CHARACTERS, MAX_MEMORY_SUMMARY_CHARACTERS, createMemoryItem, normalizeMemoryItem, } from "./item.js";
2
+ export { canAccessMemoryScope, memoryScopeKey, normalizeMemoryScope, } from "./scope.js";
3
+ export { assertMemoryStatusTransition, isMemoryItemExpired, isMemoryItemRetrievable, } from "./lifecycle.js";
4
+ export { createMemoryDedupeIdentity, normalizeMemoryDedupeContent, } from "./dedupe.js";
5
+ export { renderMemoryItemsMarkdown } from "./compatibility.js";
6
+ export { MemoryContractError } from "./errors.js";
7
+ export { MemoryAuthorizationError, MemoryConflictError, MemoryPolicyError, } from "./store-errors.js";
8
+ export { detectSensitiveMemoryContent, evaluateMemoryWrite, } from "./policy.js";
9
+ export { estimateMemoryItemTokens, rankMemoryItems, selectMemoryResultsWithinBudget, } from "./ranking.js";
10
+ export { InMemoryMemoryItemStore } from "./in-memory-store.js";
11
+ export { MEMORY_EXTRACTION_AUDIT_TYPES, MEMORY_EXTRACTION_PROPOSAL_ACTIONS, MEMORY_EXTRACTION_STATUSES, createMemoryExtractionCandidate, createMemoryExtractionDecision, memoryExtractionCandidateIdentity, normalizeMemoryExtractionAuditEvent, normalizeMemoryExtractionCandidate, } from "./extraction.js";
12
+ export { InMemoryMemoryExtractionStore, } from "./in-memory-extraction-store.js";
13
+ export { MEMORY_KINDS, MEMORY_PROVENANCE_SOURCES, MEMORY_SCOPE_KINDS, MEMORY_STATUSES, } from "./types.js";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAQrB,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,+BAA+B,GAChC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACL,6BAA6B,EAC7B,kCAAkC,EAClC,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC9B,iCAAiC,EACjC,mCAAmC,EACnC,kCAAkC,GACnC,MAAM,iBAAiB,CAAC;AAuBzB,OAAO,EACL,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type CreateMemoryItemInput, type MemoryItem, type MemoryItemFactoryOptions } from "./types.js";
2
+ export declare const MAX_MEMORY_CONTENT_CHARACTERS = 32000;
3
+ export declare const MAX_MEMORY_SUMMARY_CHARACTERS = 1000;
4
+ export declare function createMemoryItem(input: CreateMemoryItemInput, factory?: MemoryItemFactoryOptions): MemoryItem;
5
+ export declare function normalizeMemoryItem(value: unknown): MemoryItem;
6
+ //# sourceMappingURL=item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/memory/item.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,wBAAwB,EAM9B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,6BAA6B,QAAS,CAAC;AACpD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AA+OnD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE,wBAA6B,GACrC,UAAU,CA2BZ;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAK9D"}
@@ -0,0 +1,169 @@
1
+ import { nanoid } from "nanoid";
2
+ import { MemoryContractError } from "./errors.js";
3
+ import { normalizeMemoryScope } from "./scope.js";
4
+ import { MEMORY_KINDS, MEMORY_PROVENANCE_SOURCES, MEMORY_STATUSES, } from "./types.js";
5
+ export const MAX_MEMORY_CONTENT_CHARACTERS = 32_000;
6
+ export const MAX_MEMORY_SUMMARY_CHARACTERS = 1_000;
7
+ const kinds = new Set(MEMORY_KINDS);
8
+ const statuses = new Set(MEMORY_STATUSES);
9
+ const provenanceSources = new Set(MEMORY_PROVENANCE_SOURCES);
10
+ const provenanceActors = new Set(["user", "agent", "system"]);
11
+ function text(value, path, max, required = true) {
12
+ if (value === undefined && !required)
13
+ return undefined;
14
+ if (typeof value !== "string") {
15
+ throw new MemoryContractError(`${path} must be a string`, "invalid_item", path);
16
+ }
17
+ const normalized = value.trim();
18
+ if ((required && normalized.length === 0)
19
+ || normalized.length > max) {
20
+ throw new MemoryContractError(`${path} must contain ${required ? "between 1 and" : "at most"} ${max} characters`, "invalid_item", path);
21
+ }
22
+ return normalized || undefined;
23
+ }
24
+ function isoTimestamp(value, path) {
25
+ if (!(typeof value === "string" || value instanceof Date)) {
26
+ throw new MemoryContractError(`${path} must be a valid timestamp`, "invalid_item", path);
27
+ }
28
+ const date = value instanceof Date ? value : new Date(value);
29
+ if (!Number.isFinite(date.getTime())) {
30
+ throw new MemoryContractError(`${path} must be a valid timestamp`, "invalid_item", path);
31
+ }
32
+ return date.toISOString();
33
+ }
34
+ function optionalReference(value, path) {
35
+ return text(value, path, 512, false);
36
+ }
37
+ function normalizeProvenance(value) {
38
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
39
+ throw new MemoryContractError("Memory provenance must be an object", "invalid_provenance", "provenance");
40
+ }
41
+ const candidate = value;
42
+ if (typeof candidate.source !== "string"
43
+ || !provenanceSources.has(candidate.source)) {
44
+ throw new MemoryContractError(`Unknown Memory provenance source: ${String(candidate.source)}`, "invalid_provenance", "provenance.source");
45
+ }
46
+ const source = candidate.source;
47
+ let actor;
48
+ if (candidate.actor !== undefined) {
49
+ if (typeof candidate.actor !== "string"
50
+ || !provenanceActors.has(candidate.actor)) {
51
+ throw new MemoryContractError(`Unknown Memory provenance actor: ${String(candidate.actor)}`, "invalid_provenance", "provenance.actor");
52
+ }
53
+ actor = candidate.actor;
54
+ }
55
+ const sourceId = optionalReference(candidate.sourceId, "provenance.sourceId");
56
+ const runId = optionalReference(candidate.runId, "provenance.runId");
57
+ const sessionId = optionalReference(candidate.sessionId, "provenance.sessionId");
58
+ const messageId = optionalReference(candidate.messageId, "provenance.messageId");
59
+ const toolName = optionalReference(candidate.toolName, "provenance.toolName");
60
+ const provenance = {
61
+ source,
62
+ ...(actor ? { actor } : {}),
63
+ ...(sourceId ? { sourceId } : {}),
64
+ ...(runId ? { runId } : {}),
65
+ ...(sessionId ? { sessionId } : {}),
66
+ ...(messageId ? { messageId } : {}),
67
+ ...(toolName ? { toolName } : {}),
68
+ };
69
+ const hasReference = Boolean(provenance.sourceId
70
+ || provenance.runId
71
+ || provenance.sessionId
72
+ || provenance.messageId
73
+ || provenance.toolName);
74
+ if (source === "explicit" && !provenance.actor) {
75
+ throw new MemoryContractError("Explicit Memory provenance requires an actor", "invalid_provenance", "provenance.actor");
76
+ }
77
+ if (source === "run" && !provenance.runId) {
78
+ throw new MemoryContractError("Run Memory provenance requires runId", "invalid_provenance", "provenance.runId");
79
+ }
80
+ if (source === "session" && !provenance.sessionId) {
81
+ throw new MemoryContractError("Session Memory provenance requires sessionId", "invalid_provenance", "provenance.sessionId");
82
+ }
83
+ if (source === "tool" && !provenance.toolName) {
84
+ throw new MemoryContractError("Tool Memory provenance requires toolName", "invalid_provenance", "provenance.toolName");
85
+ }
86
+ if ((source === "import" || source === "extraction") && !hasReference) {
87
+ throw new MemoryContractError(`${source} Memory provenance requires a source reference`, "invalid_provenance", "provenance");
88
+ }
89
+ return Object.freeze(provenance);
90
+ }
91
+ function normalizeConfidence(value) {
92
+ if (value === undefined)
93
+ return undefined;
94
+ if (typeof value !== "number"
95
+ || !Number.isFinite(value)
96
+ || value < 0
97
+ || value > 1) {
98
+ throw new MemoryContractError("Memory confidence must be a finite number between 0 and 1", "invalid_item", "confidence");
99
+ }
100
+ return value;
101
+ }
102
+ function normalizeKind(value) {
103
+ if (typeof value !== "string" || !kinds.has(value)) {
104
+ throw new MemoryContractError(`Unknown Memory kind: ${String(value)}`, "invalid_item", "kind");
105
+ }
106
+ return value;
107
+ }
108
+ function normalizeStatus(value) {
109
+ if (typeof value !== "string" || !statuses.has(value)) {
110
+ throw new MemoryContractError(`Unknown Memory status: ${String(value)}`, "invalid_item", "status");
111
+ }
112
+ return value;
113
+ }
114
+ function freezeItem(input) {
115
+ const createdAt = isoTimestamp(input.createdAt, "createdAt");
116
+ const updatedAt = isoTimestamp(input.updatedAt, "updatedAt");
117
+ if (Date.parse(updatedAt) < Date.parse(createdAt)) {
118
+ throw new MemoryContractError("Memory updatedAt cannot precede createdAt", "invalid_item", "updatedAt");
119
+ }
120
+ const confidence = normalizeConfidence(input.confidence);
121
+ const summary = text(input.summary, "summary", MAX_MEMORY_SUMMARY_CHARACTERS, false);
122
+ const expiresAt = input.expiresAt === undefined
123
+ ? undefined
124
+ : isoTimestamp(input.expiresAt, "expiresAt");
125
+ return Object.freeze({
126
+ id: text(input.id, "id", 256),
127
+ scope: normalizeMemoryScope(input.scope),
128
+ kind: normalizeKind(input.kind),
129
+ content: text(input.content, "content", MAX_MEMORY_CONTENT_CHARACTERS),
130
+ ...(summary ? { summary } : {}),
131
+ provenance: normalizeProvenance(input.provenance),
132
+ ...(confidence === undefined ? {} : { confidence }),
133
+ status: normalizeStatus(input.status),
134
+ ...(expiresAt ? { expiresAt } : {}),
135
+ createdAt,
136
+ updatedAt,
137
+ });
138
+ }
139
+ export function createMemoryItem(input, factory = {}) {
140
+ if (!input || typeof input !== "object") {
141
+ throw new MemoryContractError("Memory item input must be an object");
142
+ }
143
+ const status = input.status ?? "active";
144
+ if (status !== "active" && status !== "pending") {
145
+ throw new MemoryContractError("New Memory items may only be active or pending", "invalid_item", "status");
146
+ }
147
+ const nowValue = factory.now?.() ?? new Date();
148
+ const now = isoTimestamp(nowValue, "now");
149
+ return freezeItem({
150
+ id: input.id ?? factory.createId?.() ?? `memory-${nanoid(16)}`,
151
+ scope: input.scope,
152
+ kind: input.kind,
153
+ content: input.content,
154
+ summary: input.summary,
155
+ provenance: input.provenance,
156
+ confidence: input.confidence,
157
+ status,
158
+ expiresAt: input.expiresAt,
159
+ createdAt: now,
160
+ updatedAt: now,
161
+ });
162
+ }
163
+ export function normalizeMemoryItem(value) {
164
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
165
+ throw new MemoryContractError("Memory item must be an object");
166
+ }
167
+ return freezeItem(value);
168
+ }
169
+ //# sourceMappingURL=item.js.map