@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.
- package/README.md +47 -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 +24 -0
- package/dist/memory/in-memory-store.d.ts.map +1 -0
- package/dist/memory/in-memory-store.js +380 -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 +81 -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,450 @@
|
|
|
1
|
+
import { nanoid } from "nanoid";
|
|
2
|
+
import { MemoryContractError } from "./errors.js";
|
|
3
|
+
import { MAX_MEMORY_CONTENT_CHARACTERS, MAX_MEMORY_SUMMARY_CHARACTERS, } from "./item.js";
|
|
4
|
+
import { normalizeMemoryDedupeContent } from "./dedupe.js";
|
|
5
|
+
import { normalizeMemoryScope } from "./scope.js";
|
|
6
|
+
import { MEMORY_KINDS, } from "./types.js";
|
|
7
|
+
import { detectSensitiveMemoryContent } from "./policy.js";
|
|
8
|
+
export const MEMORY_EXTRACTION_STATUSES = [
|
|
9
|
+
"pending",
|
|
10
|
+
"approved",
|
|
11
|
+
"rejected",
|
|
12
|
+
"applied",
|
|
13
|
+
];
|
|
14
|
+
export const MEMORY_EXTRACTION_PROPOSAL_ACTIONS = [
|
|
15
|
+
"create",
|
|
16
|
+
"duplicate",
|
|
17
|
+
"supersede",
|
|
18
|
+
];
|
|
19
|
+
export const MEMORY_EXTRACTION_AUDIT_TYPES = [
|
|
20
|
+
"proposed",
|
|
21
|
+
"approved",
|
|
22
|
+
"rejected",
|
|
23
|
+
"applied",
|
|
24
|
+
];
|
|
25
|
+
const memoryKinds = new Set(MEMORY_KINDS);
|
|
26
|
+
const extractionStatuses = new Set(MEMORY_EXTRACTION_STATUSES);
|
|
27
|
+
const proposalActions = new Set(MEMORY_EXTRACTION_PROPOSAL_ACTIONS);
|
|
28
|
+
const auditTypes = new Set(MEMORY_EXTRACTION_AUDIT_TYPES);
|
|
29
|
+
const MAX_REFERENCE_CHARACTERS = 512;
|
|
30
|
+
const MAX_IDEMPOTENCY_KEY_CHARACTERS = 2_048;
|
|
31
|
+
const MAX_REASON_CHARACTERS = 2_000;
|
|
32
|
+
const MAX_MESSAGE_IDS = 100;
|
|
33
|
+
const MAX_METADATA_DEPTH = 8;
|
|
34
|
+
const MAX_METADATA_NODES = 5_000;
|
|
35
|
+
const MAX_METADATA_CHARACTERS = 32_000;
|
|
36
|
+
function requiredText(value, path, max) {
|
|
37
|
+
if (typeof value !== "string") {
|
|
38
|
+
throw new MemoryContractError(`${path} must be a string`, "invalid_item", path);
|
|
39
|
+
}
|
|
40
|
+
const normalized = value.trim();
|
|
41
|
+
if (normalized.length === 0 || normalized.length > max) {
|
|
42
|
+
throw new MemoryContractError(`${path} must contain between 1 and ${max} characters`, "invalid_item", path);
|
|
43
|
+
}
|
|
44
|
+
return normalized;
|
|
45
|
+
}
|
|
46
|
+
function optionalText(value, path, max) {
|
|
47
|
+
if (value === undefined)
|
|
48
|
+
return undefined;
|
|
49
|
+
return requiredText(value, path, max);
|
|
50
|
+
}
|
|
51
|
+
function timestamp(value, path) {
|
|
52
|
+
if (!(typeof value === "string" || value instanceof Date)) {
|
|
53
|
+
throw new MemoryContractError(`${path} must be a valid timestamp`, "invalid_item", path);
|
|
54
|
+
}
|
|
55
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
56
|
+
if (!Number.isFinite(date.getTime())) {
|
|
57
|
+
throw new MemoryContractError(`${path} must be a valid timestamp`, "invalid_item", path);
|
|
58
|
+
}
|
|
59
|
+
return date.toISOString();
|
|
60
|
+
}
|
|
61
|
+
function positiveInteger(value, path) {
|
|
62
|
+
if (!Number.isSafeInteger(value) || Number(value) < 1) {
|
|
63
|
+
throw new MemoryContractError(`${path} must be a positive safe integer`, "invalid_item", path);
|
|
64
|
+
}
|
|
65
|
+
return Number(value);
|
|
66
|
+
}
|
|
67
|
+
function confidence(value) {
|
|
68
|
+
if (value === undefined)
|
|
69
|
+
return undefined;
|
|
70
|
+
if (typeof value !== "number"
|
|
71
|
+
|| !Number.isFinite(value)
|
|
72
|
+
|| value < 0
|
|
73
|
+
|| value > 1) {
|
|
74
|
+
throw new MemoryContractError("confidence must be a finite number between 0 and 1", "invalid_item", "confidence");
|
|
75
|
+
}
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
function kind(value) {
|
|
79
|
+
if (typeof value !== "string" || !memoryKinds.has(value)) {
|
|
80
|
+
throw new MemoryContractError(`Unknown Memory kind: ${String(value)}`, "invalid_item", "kind");
|
|
81
|
+
}
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
function normalizeSource(value) {
|
|
85
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
86
|
+
throw new MemoryContractError("source must be an object", "invalid_provenance", "source");
|
|
87
|
+
}
|
|
88
|
+
const source = value;
|
|
89
|
+
const sourceId = optionalText(source.sourceId, "source.sourceId", MAX_REFERENCE_CHARACTERS);
|
|
90
|
+
const runId = optionalText(source.runId, "source.runId", MAX_REFERENCE_CHARACTERS);
|
|
91
|
+
const sessionId = optionalText(source.sessionId, "source.sessionId", MAX_REFERENCE_CHARACTERS);
|
|
92
|
+
let messageIds;
|
|
93
|
+
if (source.messageIds !== undefined) {
|
|
94
|
+
if (!Array.isArray(source.messageIds)
|
|
95
|
+
|| source.messageIds.length > MAX_MESSAGE_IDS) {
|
|
96
|
+
throw new MemoryContractError(`source.messageIds must contain at most ${MAX_MESSAGE_IDS} ids`, "invalid_provenance", "source.messageIds");
|
|
97
|
+
}
|
|
98
|
+
messageIds = Object.freeze([...new Set(source.messageIds.map((id, index) => requiredText(id, `source.messageIds[${index}]`, MAX_REFERENCE_CHARACTERS)))].sort());
|
|
99
|
+
if (messageIds.length === 0)
|
|
100
|
+
messageIds = undefined;
|
|
101
|
+
}
|
|
102
|
+
if (!sourceId && !runId && !sessionId && !messageIds?.length) {
|
|
103
|
+
throw new MemoryContractError("source requires sourceId, runId, sessionId, or messageIds", "invalid_provenance", "source");
|
|
104
|
+
}
|
|
105
|
+
return Object.freeze({
|
|
106
|
+
...(sourceId ? { sourceId } : {}),
|
|
107
|
+
...(runId ? { runId } : {}),
|
|
108
|
+
...(sessionId ? { sessionId } : {}),
|
|
109
|
+
...(messageIds ? { messageIds } : {}),
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function provenance(source) {
|
|
113
|
+
return Object.freeze({
|
|
114
|
+
source: "extraction",
|
|
115
|
+
actor: "system",
|
|
116
|
+
...(source.sourceId ? { sourceId: source.sourceId } : {}),
|
|
117
|
+
...(source.runId ? { runId: source.runId } : {}),
|
|
118
|
+
...(source.sessionId ? { sessionId: source.sessionId } : {}),
|
|
119
|
+
...(source.messageIds?.[0]
|
|
120
|
+
? { messageId: source.messageIds[0] }
|
|
121
|
+
: {}),
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
function normalizeProposal(value) {
|
|
125
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
126
|
+
throw new MemoryContractError("proposal must be an object", "invalid_item", "proposal");
|
|
127
|
+
}
|
|
128
|
+
const candidate = value;
|
|
129
|
+
if (typeof candidate.action !== "string"
|
|
130
|
+
|| !proposalActions.has(candidate.action)) {
|
|
131
|
+
throw new MemoryContractError(`Unknown extraction proposal: ${String(candidate.action)}`, "invalid_item", "proposal.action");
|
|
132
|
+
}
|
|
133
|
+
const action = candidate.action;
|
|
134
|
+
const existingMemoryId = optionalText(candidate.existingMemoryId, "proposal.existingMemoryId", MAX_REFERENCE_CHARACTERS);
|
|
135
|
+
if (action === "create" && existingMemoryId) {
|
|
136
|
+
throw new MemoryContractError("create proposals cannot reference an existing Memory item", "invalid_item", "proposal.existingMemoryId");
|
|
137
|
+
}
|
|
138
|
+
if (action !== "create" && !existingMemoryId) {
|
|
139
|
+
throw new MemoryContractError(`${action} proposals require existingMemoryId`, "invalid_item", "proposal.existingMemoryId");
|
|
140
|
+
}
|
|
141
|
+
return Object.freeze({
|
|
142
|
+
action,
|
|
143
|
+
...(existingMemoryId ? { existingMemoryId } : {}),
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
function normalizeFinding(value, index) {
|
|
147
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
148
|
+
throw new MemoryContractError(`sensitiveFindings[${index}] must be an object`, "invalid_item", `sensitiveFindings[${index}]`);
|
|
149
|
+
}
|
|
150
|
+
const finding = value;
|
|
151
|
+
const code = typeof finding.code === "string"
|
|
152
|
+
&& /^[a-z0-9][a-z0-9_-]{0,63}$/u.test(finding.code)
|
|
153
|
+
? finding.code
|
|
154
|
+
: "custom_sensitive_content";
|
|
155
|
+
const start = Number.isSafeInteger(finding.start) && Number(finding.start) >= 0
|
|
156
|
+
? Number(finding.start)
|
|
157
|
+
: 0;
|
|
158
|
+
const length = Number.isSafeInteger(finding.length) && Number(finding.length) >= 0
|
|
159
|
+
? Number(finding.length)
|
|
160
|
+
: 0;
|
|
161
|
+
return Object.freeze({ code, start, length });
|
|
162
|
+
}
|
|
163
|
+
function normalizeFindings(value) {
|
|
164
|
+
if (value === undefined)
|
|
165
|
+
return Object.freeze([]);
|
|
166
|
+
if (!Array.isArray(value) || value.length > 1_000) {
|
|
167
|
+
throw new MemoryContractError("sensitiveFindings must be an array with at most 1000 entries", "invalid_item", "sensitiveFindings");
|
|
168
|
+
}
|
|
169
|
+
const findings = value.map(normalizeFinding).sort((left, right) => left.start - right.start
|
|
170
|
+
|| left.code.localeCompare(right.code)
|
|
171
|
+
|| left.length - right.length);
|
|
172
|
+
return Object.freeze(findings.filter((finding, index) => {
|
|
173
|
+
const previous = findings[index - 1];
|
|
174
|
+
return !previous
|
|
175
|
+
|| previous.code !== finding.code
|
|
176
|
+
|| previous.start !== finding.start
|
|
177
|
+
|| previous.length !== finding.length;
|
|
178
|
+
}));
|
|
179
|
+
}
|
|
180
|
+
function normalizeMetadata(value) {
|
|
181
|
+
if (value === undefined)
|
|
182
|
+
return Object.freeze({});
|
|
183
|
+
let nodes = 0;
|
|
184
|
+
const visit = (entry, path, depth) => {
|
|
185
|
+
nodes += 1;
|
|
186
|
+
if (nodes > MAX_METADATA_NODES || depth > MAX_METADATA_DEPTH) {
|
|
187
|
+
throw new MemoryContractError("metadata is too complex", "invalid_item", path);
|
|
188
|
+
}
|
|
189
|
+
if (entry === null
|
|
190
|
+
|| typeof entry === "boolean"
|
|
191
|
+
|| typeof entry === "string") {
|
|
192
|
+
return entry;
|
|
193
|
+
}
|
|
194
|
+
if (typeof entry === "number") {
|
|
195
|
+
if (!Number.isFinite(entry)) {
|
|
196
|
+
throw new MemoryContractError(`${path} must contain finite numbers`, "invalid_item", path);
|
|
197
|
+
}
|
|
198
|
+
return entry;
|
|
199
|
+
}
|
|
200
|
+
if (Array.isArray(entry)) {
|
|
201
|
+
return Object.freeze(entry.map((item, index) => visit(item, `${path}[${index}]`, depth + 1)));
|
|
202
|
+
}
|
|
203
|
+
if (!entry
|
|
204
|
+
|| typeof entry !== "object"
|
|
205
|
+
|| (Object.getPrototypeOf(entry) !== Object.prototype
|
|
206
|
+
&& Object.getPrototypeOf(entry) !== null)) {
|
|
207
|
+
throw new MemoryContractError(`${path} must contain JSON-compatible values`, "invalid_item", path);
|
|
208
|
+
}
|
|
209
|
+
const result = Object.create(null);
|
|
210
|
+
for (const [key, item] of Object.entries(entry).sort(([left], [right]) => left.localeCompare(right))) {
|
|
211
|
+
const normalizedKey = requiredText(key, `${path} key`, 256);
|
|
212
|
+
if (Object.hasOwn(result, normalizedKey)) {
|
|
213
|
+
throw new MemoryContractError(`${path} contains duplicate normalized key "${normalizedKey}"`, "invalid_item", path);
|
|
214
|
+
}
|
|
215
|
+
result[normalizedKey] = visit(item, `${path}.${normalizedKey}`, depth + 1);
|
|
216
|
+
}
|
|
217
|
+
return Object.freeze(result);
|
|
218
|
+
};
|
|
219
|
+
const normalized = visit(value, "metadata", 0);
|
|
220
|
+
if (!normalized
|
|
221
|
+
|| Array.isArray(normalized)
|
|
222
|
+
|| typeof normalized !== "object") {
|
|
223
|
+
throw new MemoryContractError("metadata must be an object", "invalid_item", "metadata");
|
|
224
|
+
}
|
|
225
|
+
if (JSON.stringify(normalized).length > MAX_METADATA_CHARACTERS) {
|
|
226
|
+
throw new MemoryContractError(`metadata must contain at most ${MAX_METADATA_CHARACTERS} characters`, "invalid_item", "metadata");
|
|
227
|
+
}
|
|
228
|
+
return normalized;
|
|
229
|
+
}
|
|
230
|
+
function normalizeReviewer(value) {
|
|
231
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
232
|
+
throw new MemoryContractError("decidedBy must be an object", "invalid_item", "decision.decidedBy");
|
|
233
|
+
}
|
|
234
|
+
const reviewer = value;
|
|
235
|
+
if (reviewer.actor !== "user" && reviewer.actor !== "system") {
|
|
236
|
+
throw new MemoryContractError("decision actor must be user or system", "invalid_item", "decision.decidedBy.actor");
|
|
237
|
+
}
|
|
238
|
+
return Object.freeze({
|
|
239
|
+
actor: reviewer.actor,
|
|
240
|
+
actorId: requiredText(reviewer.actorId, "decision.decidedBy.actorId", MAX_REFERENCE_CHARACTERS),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
function normalizeDecision(value) {
|
|
244
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
245
|
+
throw new MemoryContractError("decision must be an object", "invalid_item", "decision");
|
|
246
|
+
}
|
|
247
|
+
const decision = value;
|
|
248
|
+
if (decision.decision !== "approve" && decision.decision !== "reject") {
|
|
249
|
+
throw new MemoryContractError("decision must be approve or reject", "invalid_item", "decision.decision");
|
|
250
|
+
}
|
|
251
|
+
const reason = optionalText(decision.reason, "decision.reason", MAX_REASON_CHARACTERS);
|
|
252
|
+
if (decision.decision === "reject" && !reason) {
|
|
253
|
+
throw new MemoryContractError("rejection decisions require a reason", "invalid_item", "decision.reason");
|
|
254
|
+
}
|
|
255
|
+
return Object.freeze({
|
|
256
|
+
decision: decision.decision,
|
|
257
|
+
decidedBy: normalizeReviewer(decision.decidedBy),
|
|
258
|
+
decidedAt: timestamp(decision.decidedAt, "decision.decidedAt"),
|
|
259
|
+
...(reason ? { reason } : {}),
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
function freezeCandidate(input) {
|
|
263
|
+
const status = input.status;
|
|
264
|
+
if (typeof status !== "string" || !extractionStatuses.has(status)) {
|
|
265
|
+
throw new MemoryContractError(`Unknown extraction status: ${String(status)}`, "invalid_item", "status");
|
|
266
|
+
}
|
|
267
|
+
const revision = positiveInteger(input.revision, "revision");
|
|
268
|
+
const expectedRevision = status === "pending"
|
|
269
|
+
? 1
|
|
270
|
+
: status === "applied"
|
|
271
|
+
? 3
|
|
272
|
+
: 2;
|
|
273
|
+
if (revision !== expectedRevision) {
|
|
274
|
+
throw new MemoryContractError(`${status} candidates require revision ${expectedRevision}`, "invalid_transition", "revision");
|
|
275
|
+
}
|
|
276
|
+
const createdAt = timestamp(input.createdAt, "createdAt");
|
|
277
|
+
const updatedAt = timestamp(input.updatedAt, "updatedAt");
|
|
278
|
+
if (Date.parse(updatedAt) < Date.parse(createdAt)) {
|
|
279
|
+
throw new MemoryContractError("updatedAt cannot precede createdAt", "invalid_item", "updatedAt");
|
|
280
|
+
}
|
|
281
|
+
const source = normalizeSource(input.source);
|
|
282
|
+
const decision = input.decision === undefined
|
|
283
|
+
? undefined
|
|
284
|
+
: normalizeDecision(input.decision);
|
|
285
|
+
const appliedMemoryId = optionalText(input.appliedMemoryId, "appliedMemoryId", MAX_REFERENCE_CHARACTERS);
|
|
286
|
+
const appliedAt = input.appliedAt === undefined
|
|
287
|
+
? undefined
|
|
288
|
+
: timestamp(input.appliedAt, "appliedAt");
|
|
289
|
+
if (status === "pending" && (decision || appliedMemoryId || appliedAt)) {
|
|
290
|
+
throw new MemoryContractError("pending candidates cannot contain a decision or applied Memory", "invalid_transition", "status");
|
|
291
|
+
}
|
|
292
|
+
if (status === "approved"
|
|
293
|
+
&& (decision?.decision !== "approve"
|
|
294
|
+
|| appliedMemoryId
|
|
295
|
+
|| appliedAt)) {
|
|
296
|
+
throw new MemoryContractError("approved candidates require an approval decision only", "invalid_transition", "status");
|
|
297
|
+
}
|
|
298
|
+
if (status === "rejected"
|
|
299
|
+
&& (decision?.decision !== "reject"
|
|
300
|
+
|| appliedMemoryId
|
|
301
|
+
|| appliedAt)) {
|
|
302
|
+
throw new MemoryContractError("rejected candidates require a rejection decision only", "invalid_transition", "status");
|
|
303
|
+
}
|
|
304
|
+
if (status === "applied"
|
|
305
|
+
&& (decision?.decision !== "approve"
|
|
306
|
+
|| !appliedMemoryId
|
|
307
|
+
|| !appliedAt)) {
|
|
308
|
+
throw new MemoryContractError("applied candidates require approval and an applied Memory reference", "invalid_transition", "status");
|
|
309
|
+
}
|
|
310
|
+
if (decision && Date.parse(decision.decidedAt) < Date.parse(createdAt)) {
|
|
311
|
+
throw new MemoryContractError("decision cannot precede candidate creation", "invalid_item", "decision.decidedAt");
|
|
312
|
+
}
|
|
313
|
+
if (decision && Date.parse(decision.decidedAt) > Date.parse(updatedAt)) {
|
|
314
|
+
throw new MemoryContractError("decision cannot follow candidate update time", "invalid_item", "decision.decidedAt");
|
|
315
|
+
}
|
|
316
|
+
if (appliedAt && decision && Date.parse(appliedAt) < Date.parse(decision.decidedAt)) {
|
|
317
|
+
throw new MemoryContractError("appliedAt cannot precede approval", "invalid_item", "appliedAt");
|
|
318
|
+
}
|
|
319
|
+
if (appliedAt && Date.parse(appliedAt) > Date.parse(updatedAt)) {
|
|
320
|
+
throw new MemoryContractError("appliedAt cannot follow candidate update time", "invalid_item", "appliedAt");
|
|
321
|
+
}
|
|
322
|
+
const content = requiredText(input.content, "content", MAX_MEMORY_CONTENT_CHARACTERS);
|
|
323
|
+
const summary = optionalText(input.summary, "summary", MAX_MEMORY_SUMMARY_CHARACTERS);
|
|
324
|
+
const reportedFindings = normalizeFindings(input.sensitiveFindings);
|
|
325
|
+
const detectedFindings = normalizeFindings([
|
|
326
|
+
...detectSensitiveMemoryContent(content),
|
|
327
|
+
...(summary ? detectSensitiveMemoryContent(summary) : []),
|
|
328
|
+
...reportedFindings,
|
|
329
|
+
]);
|
|
330
|
+
const normalizedConfidence = confidence(input.confidence);
|
|
331
|
+
const candidate = {
|
|
332
|
+
id: requiredText(input.id, "id", 256),
|
|
333
|
+
idempotencyKey: requiredText(input.idempotencyKey, "idempotencyKey", MAX_IDEMPOTENCY_KEY_CHARACTERS),
|
|
334
|
+
scope: normalizeMemoryScope(input.scope),
|
|
335
|
+
kind: kind(input.kind),
|
|
336
|
+
content,
|
|
337
|
+
...(summary ? { summary } : {}),
|
|
338
|
+
...(normalizedConfidence === undefined
|
|
339
|
+
? {}
|
|
340
|
+
: { confidence: normalizedConfidence }),
|
|
341
|
+
source,
|
|
342
|
+
provenance: provenance(source),
|
|
343
|
+
proposal: normalizeProposal(input.proposal),
|
|
344
|
+
sensitiveFindings: detectedFindings,
|
|
345
|
+
metadata: normalizeMetadata(input.metadata),
|
|
346
|
+
status: status,
|
|
347
|
+
revision,
|
|
348
|
+
...(decision ? { decision } : {}),
|
|
349
|
+
...(appliedMemoryId ? { appliedMemoryId } : {}),
|
|
350
|
+
...(appliedAt ? { appliedAt } : {}),
|
|
351
|
+
createdAt,
|
|
352
|
+
updatedAt,
|
|
353
|
+
};
|
|
354
|
+
return Object.freeze(candidate);
|
|
355
|
+
}
|
|
356
|
+
export function createMemoryExtractionCandidate(input, factory = {}) {
|
|
357
|
+
if (!input || typeof input !== "object") {
|
|
358
|
+
throw new MemoryContractError("extraction candidate input must be an object");
|
|
359
|
+
}
|
|
360
|
+
const now = timestamp(factory.now?.() ?? new Date(), "now");
|
|
361
|
+
return freezeCandidate({
|
|
362
|
+
id: factory.createId?.() ?? `memory-candidate-${nanoid(16)}`,
|
|
363
|
+
idempotencyKey: input.idempotencyKey,
|
|
364
|
+
scope: input.scope,
|
|
365
|
+
kind: input.kind,
|
|
366
|
+
content: input.content,
|
|
367
|
+
summary: input.summary,
|
|
368
|
+
confidence: input.confidence,
|
|
369
|
+
source: input.source,
|
|
370
|
+
proposal: input.proposal ?? { action: "create" },
|
|
371
|
+
sensitiveFindings: input.sensitiveFindings ?? [],
|
|
372
|
+
metadata: input.metadata ?? {},
|
|
373
|
+
status: "pending",
|
|
374
|
+
revision: 1,
|
|
375
|
+
createdAt: now,
|
|
376
|
+
updatedAt: now,
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
export function normalizeMemoryExtractionCandidate(value) {
|
|
380
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
381
|
+
throw new MemoryContractError("extraction candidate must be an object");
|
|
382
|
+
}
|
|
383
|
+
return freezeCandidate(value);
|
|
384
|
+
}
|
|
385
|
+
export function memoryExtractionCandidateIdentity(candidate) {
|
|
386
|
+
const value = normalizeMemoryExtractionCandidate(candidate);
|
|
387
|
+
return JSON.stringify({
|
|
388
|
+
scope: value.scope,
|
|
389
|
+
kind: value.kind,
|
|
390
|
+
content: normalizeMemoryDedupeContent(value.content),
|
|
391
|
+
summary: value.summary,
|
|
392
|
+
confidence: value.confidence,
|
|
393
|
+
source: value.source,
|
|
394
|
+
proposal: value.proposal,
|
|
395
|
+
sensitiveFindings: value.sensitiveFindings,
|
|
396
|
+
metadata: value.metadata,
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
export function createMemoryExtractionDecision(input, now = new Date()) {
|
|
400
|
+
return normalizeDecision({
|
|
401
|
+
decision: input.decision,
|
|
402
|
+
decidedBy: input.decidedBy,
|
|
403
|
+
decidedAt: now,
|
|
404
|
+
reason: input.reason,
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
export function normalizeMemoryExtractionAuditEvent(value) {
|
|
408
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
409
|
+
throw new MemoryContractError("extraction audit event must be an object");
|
|
410
|
+
}
|
|
411
|
+
const event = value;
|
|
412
|
+
if (typeof event.type !== "string" || !auditTypes.has(event.type)) {
|
|
413
|
+
throw new MemoryContractError(`Unknown extraction audit type: ${String(event.type)}`, "invalid_item", "audit.type");
|
|
414
|
+
}
|
|
415
|
+
const reviewer = event.reviewer === undefined
|
|
416
|
+
? undefined
|
|
417
|
+
: normalizeReviewer(event.reviewer);
|
|
418
|
+
const reason = optionalText(event.reason, "audit.reason", MAX_REASON_CHARACTERS);
|
|
419
|
+
const memoryId = optionalText(event.memoryId, "audit.memoryId", MAX_REFERENCE_CHARACTERS);
|
|
420
|
+
if (event.type === "proposed" && (reviewer || reason || memoryId)) {
|
|
421
|
+
throw new MemoryContractError("proposed audit events cannot contain decision fields", "invalid_item", "audit");
|
|
422
|
+
}
|
|
423
|
+
if ((event.type === "approved" || event.type === "rejected")
|
|
424
|
+
&& !reviewer) {
|
|
425
|
+
throw new MemoryContractError(`${event.type} audit events require a reviewer`, "invalid_item", "audit.reviewer");
|
|
426
|
+
}
|
|
427
|
+
if ((event.type === "approved" || event.type === "rejected")
|
|
428
|
+
&& memoryId) {
|
|
429
|
+
throw new MemoryContractError(`${event.type} audit events cannot contain memoryId`, "invalid_item", "audit.memoryId");
|
|
430
|
+
}
|
|
431
|
+
if (event.type === "rejected" && !reason) {
|
|
432
|
+
throw new MemoryContractError("rejected audit events require a reason", "invalid_item", "audit.reason");
|
|
433
|
+
}
|
|
434
|
+
if (event.type === "applied" && !memoryId) {
|
|
435
|
+
throw new MemoryContractError("applied audit events require memoryId", "invalid_item", "audit.memoryId");
|
|
436
|
+
}
|
|
437
|
+
if (event.type === "applied" && (reviewer || reason)) {
|
|
438
|
+
throw new MemoryContractError("applied audit events cannot contain decision fields", "invalid_item", "audit");
|
|
439
|
+
}
|
|
440
|
+
return Object.freeze({
|
|
441
|
+
id: requiredText(event.id, "audit.id", 256),
|
|
442
|
+
candidateId: requiredText(event.candidateId, "audit.candidateId", 256),
|
|
443
|
+
type: event.type,
|
|
444
|
+
at: timestamp(event.at, "audit.at"),
|
|
445
|
+
...(reviewer ? { reviewer } : {}),
|
|
446
|
+
...(reason ? { reason } : {}),
|
|
447
|
+
...(memoryId ? { memoryId } : {}),
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
//# sourceMappingURL=extraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/memory/extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.test.d.ts","sourceRoot":"","sources":["../../src/memory/extraction.test.ts"],"names":[],"mappings":""}
|