@felan-ai/ext-memory 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -11
- package/dist/contracts.d.ts +14 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +1 -0
- package/dist/contracts.js.map +1 -1
- package/dist/hydration.d.ts.map +1 -1
- package/dist/hydration.js +3 -0
- package/dist/hydration.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/input-materializer.d.ts +28 -0
- package/dist/input-materializer.d.ts.map +1 -0
- package/dist/input-materializer.js +409 -0
- package/dist/input-materializer.js.map +1 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +47 -1
- package/dist/manifest.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -62,14 +62,15 @@ the root session's configured model scope, preferring its provider and model
|
|
|
62
62
|
family. It does not silently escalate to a more expensive tier; evidence remains
|
|
63
63
|
pending when no eligible model is available.
|
|
64
64
|
It does not impose separate turn, tool-call, or per-file I/O budgets; its only
|
|
65
|
-
execution failsafe is a one-hour wall-clock timeout.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
checkpoints in the same batch
|
|
65
|
+
execution failsafe is a one-hour wall-clock timeout. Hosts can pass a replayable
|
|
66
|
+
async JSONL line source to `materializeMemoryInputDelta` to validate checkpoint
|
|
67
|
+
lineage and create a deterministic, redacted visible-branch delta. Diverged
|
|
68
|
+
lineages emit the complete current branch. Output limits reject an oversized
|
|
69
|
+
projection instead of truncating a JSONL record. Hosts remain responsible for
|
|
70
|
+
reading session files and staging successful projections. Large source session
|
|
71
|
+
files are not rejected solely for their total size. Deterministic source
|
|
72
|
+
failures remain pending for retry, while valid checkpoints in the same batch
|
|
73
|
+
can still be published.
|
|
73
74
|
|
|
74
75
|
The memory schema keeps the wiki sparse. It prioritizes durable user-authored
|
|
75
76
|
facts, preferences, decisions, corrections, and uncodified rationale, followed
|
|
@@ -95,9 +96,9 @@ pnpm --filter @felan-ai/ext-memory test
|
|
|
95
96
|
## Package boundary and requirements
|
|
96
97
|
|
|
97
98
|
The package owns the portable memory schema, validation, hydration, checkpoint
|
|
98
|
-
contracts, and root/reader extension behavior. The
|
|
99
|
-
canonical storage,
|
|
100
|
-
locking, validation publication, and retry policy. It requires a compatible
|
|
99
|
+
contracts, checkpoint-delta projection, and root/reader extension behavior. The
|
|
100
|
+
host owns project scoping, canonical storage, transcript I/O, scheduling, model
|
|
101
|
+
calls, staging, locking, validation publication, and retry policy. It requires a compatible
|
|
101
102
|
`@felan-ai/agent-core` peer and remains independent of TUI, Supabase, and cloud
|
|
102
103
|
application modules.
|
|
103
104
|
|
package/dist/contracts.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const MEMORY_ARTIFACT_VERSION: 1;
|
|
2
2
|
export declare const MEMORY_INPUT_MANIFEST_VERSION: 1;
|
|
3
|
+
export declare const MEMORY_INPUT_PROJECTION_VERSION: 1;
|
|
3
4
|
export type MemoryRole = 'root' | 'reader';
|
|
4
5
|
export interface MemoryFile {
|
|
5
6
|
/** POSIX path relative to the logical .memory root. */
|
|
@@ -22,6 +23,18 @@ export interface SessionCheckpoint {
|
|
|
22
23
|
readonly leafId: string | null;
|
|
23
24
|
readonly transcriptDigest: string;
|
|
24
25
|
}
|
|
26
|
+
export type MemoryInputRelation = 'initial' | 'unchanged' | 'appended' | 'diverged';
|
|
27
|
+
export interface MemoryInputProjection {
|
|
28
|
+
readonly version: typeof MEMORY_INPUT_PROJECTION_VERSION;
|
|
29
|
+
readonly relation: MemoryInputRelation;
|
|
30
|
+
/** Visible lineage entries selected by the checkpoint relation. */
|
|
31
|
+
readonly includedEntryCount: number;
|
|
32
|
+
/** Complete JSONL evidence records emitted from selected entries. */
|
|
33
|
+
readonly evidenceRecordCount: number;
|
|
34
|
+
/** Hidden lineage entries and selected non-evidence entries omitted from JSONL. */
|
|
35
|
+
readonly removedEntryCount: number;
|
|
36
|
+
readonly previousCheckpoint?: SessionCheckpoint;
|
|
37
|
+
}
|
|
25
38
|
export type MemoryProcessingState = 'disabled' | 'idle' | 'scheduled' | 'processing' | 'blocked' | 'error';
|
|
26
39
|
export interface MemoryStatus {
|
|
27
40
|
readonly enabled: boolean;
|
|
@@ -44,6 +57,7 @@ export interface MemoryInputSession {
|
|
|
44
57
|
readonly materializedDigest: string;
|
|
45
58
|
readonly byteLength: number;
|
|
46
59
|
readonly redactionCount: number;
|
|
60
|
+
readonly projection?: MemoryInputProjection;
|
|
47
61
|
}
|
|
48
62
|
export interface MemoryInputManifest {
|
|
49
63
|
readonly version: typeof MEMORY_INPUT_MANIFEST_VERSION;
|
package/dist/contracts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,EAAG,CAAU,CAAC;AAClD,eAAO,MAAM,6BAA6B,EAAG,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
|
package/dist/contracts.js
CHANGED
package/dist/contracts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAU,CAAC;AAClD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAU,CAAC;AAClD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAU,CAAC;AACxD,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAU,CAAC;AA0F1D,MAAM,CAAC,MAAM,8BAA8B,GAAyB,MAAM,CAAC,MAAM,CAAC;IAChF,QAAQ,EAAE,GAAG;IACb,YAAY,EAAE,GAAG,GAAG,IAAI;IACxB,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;CAC/B,CAAC,CAAC"}
|
package/dist/hydration.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../src/hydration.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../src/hydration.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAaxB,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,UAAU,EAAE,GAAG,MAAM,CAWlG;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,GAAG,SAAS,UAAU,EAAE,EAChD,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,sBAA2B,GACnC,cAAc,CAUhB;AAED,2FAA2F;AAC3F,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,GACjB,cAAc,CAiBhB;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAQ5E;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,cAAc,CAAC,CAczB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,cAAc,GAAG,SAAS,UAAU,EAAE,EAChD,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAEf;AAyFD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,cAAc,GAAG,SAAS,UAAU,EAAE,EAChD,OAAO,GAAE,sBAA2B,GACnC,IAAI,CAGN"}
|
package/dist/hydration.js
CHANGED
|
@@ -6,6 +6,7 @@ import { createDefaultMemoryIndex, createMemoryNavigationGuide } from './schema.
|
|
|
6
6
|
import { assertValidMemoryArtifact, isSafeMemoryPath, resolveMemoryLink, validateMemoryArtifact, } from './validation.js';
|
|
7
7
|
const MARKDOWN_LINK_TARGET = /(!?\[[^\]]*\]\()([^)\s]+)((?:\s+['"][^'"]*['"])?\))/gu;
|
|
8
8
|
const WIKI_LINK_TARGET = /(\[\[)([^\]|#]+)((?:#[^\]|]+)?(?:\|[^\]]+)?)\]\]/gu;
|
|
9
|
+
const READ_MODE_IGNORED_FILES = new Set(['.DS_Store']);
|
|
9
10
|
export function memoryArtifactFingerprint(artifact) {
|
|
10
11
|
const files = 'files' in artifact ? artifact.files : artifact;
|
|
11
12
|
const sorted = [...files].sort((left, right) => left.path.localeCompare(right.path));
|
|
@@ -110,6 +111,8 @@ async function walk(root, current, files, options, onBytes) {
|
|
|
110
111
|
const absolute = join(current, entry.name);
|
|
111
112
|
const relativePath = relative(root, absolute).split(sep).join('/');
|
|
112
113
|
const stats = await lstat(absolute);
|
|
114
|
+
if (options.mode === 'read' && stats.isFile() && READ_MODE_IGNORED_FILES.has(entry.name))
|
|
115
|
+
continue;
|
|
113
116
|
if (stats.isSymbolicLink() || (!stats.isDirectory() && !stats.isFile())) {
|
|
114
117
|
throw new Error(`Unsafe memory entry type: ${relativePath}`);
|
|
115
118
|
}
|
package/dist/hydration.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydration.js","sourceRoot":"","sources":["../src/hydration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EACL,8BAA8B,GAM/B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,oBAAoB,GAAG,uDAAuD,CAAC;AACrF,MAAM,gBAAgB,GAAG,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"hydration.js","sourceRoot":"","sources":["../src/hydration.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './checkpoint.js';
|
|
|
4
4
|
export * from './contracts.js';
|
|
5
5
|
export * from './dreamer.js';
|
|
6
6
|
export * from './hydration.js';
|
|
7
|
+
export * from './input-materializer.js';
|
|
7
8
|
export * from './manifest.js';
|
|
8
9
|
export * from './schema.js';
|
|
9
10
|
export * from './validation.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM7E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG7D,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAEhC,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,IAAI,EACJ,KAAiB,GAClB,EAAE,4BAA4B,GAAG,cAAc,CAqD/C"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM7E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG7D,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAEhC,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,IAAI,EACJ,KAAiB,GAClB,EAAE,4BAA4B,GAAG,cAAc,CAqD/C"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export * from './checkpoint.js';
|
|
|
4
4
|
export * from './contracts.js';
|
|
5
5
|
export * from './dreamer.js';
|
|
6
6
|
export * from './hydration.js';
|
|
7
|
+
export * from './input-materializer.js';
|
|
7
8
|
export * from './manifest.js';
|
|
8
9
|
export * from './schema.js';
|
|
9
10
|
export * from './validation.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type MemoryInputProjection, type SessionCheckpoint } from './contracts.js';
|
|
2
|
+
export declare const MEMORY_INPUT_JSONL_FORMAT: "felan-memory-input-jsonl-v1";
|
|
3
|
+
export type MemoryTranscriptLineSource = () => AsyncIterable<string>;
|
|
4
|
+
export interface MaterializeMemoryInputDeltaOptions {
|
|
5
|
+
readonly lines: MemoryTranscriptLineSource;
|
|
6
|
+
readonly checkpoint: SessionCheckpoint;
|
|
7
|
+
readonly previousCheckpoint?: SessionCheckpoint;
|
|
8
|
+
readonly maxOutputBytes?: number;
|
|
9
|
+
readonly signal?: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
export type MemoryInputMaterializationFailureCode = 'cancelled' | 'checkpoint_changed' | 'invalid_checkpoint' | 'invalid_source' | 'output_too_large' | 'previous_checkpoint_changed' | 'source_changed' | 'source_unavailable';
|
|
12
|
+
export interface MemoryInputMaterializationFailure {
|
|
13
|
+
readonly ok: false;
|
|
14
|
+
readonly code: MemoryInputMaterializationFailureCode;
|
|
15
|
+
readonly message: string;
|
|
16
|
+
}
|
|
17
|
+
export interface MemoryInputMaterializationSuccess {
|
|
18
|
+
readonly ok: true;
|
|
19
|
+
readonly format: typeof MEMORY_INPUT_JSONL_FORMAT;
|
|
20
|
+
readonly text: string;
|
|
21
|
+
readonly materializedDigest: string;
|
|
22
|
+
readonly byteLength: number;
|
|
23
|
+
readonly redactionCount: number;
|
|
24
|
+
readonly projection: MemoryInputProjection;
|
|
25
|
+
}
|
|
26
|
+
export type MemoryInputMaterializationResult = MemoryInputMaterializationFailure | MemoryInputMaterializationSuccess;
|
|
27
|
+
export declare function materializeMemoryInputDelta(options: MaterializeMemoryInputDeltaOptions): Promise<MemoryInputMaterializationResult>;
|
|
28
|
+
//# sourceMappingURL=input-materializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-materializer.d.ts","sourceRoot":"","sources":["../src/input-materializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,qBAAqB,EAE1B,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,yBAAyB,EAAG,6BAAsC,CAAC;AAEhF,MAAM,MAAM,0BAA0B,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IAChD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,MAAM,qCAAqC,GAC7C,WAAW,GACX,oBAAoB,GACpB,oBAAoB,GACpB,gBAAgB,GAChB,kBAAkB,GAClB,6BAA6B,GAC7B,gBAAgB,GAChB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,qCAAqC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;CAC5C;AAED,MAAM,MAAM,gCAAgC,GACxC,iCAAiC,GACjC,iCAAiC,CAAC;AA4BtC,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,kCAAkC,GAC1C,OAAO,CAAC,gCAAgC,CAAC,CA0G3C"}
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import { MEMORY_INPUT_PROJECTION_VERSION, } from './contracts.js';
|
|
2
|
+
export const MEMORY_INPUT_JSONL_FORMAT = 'felan-memory-input-jsonl-v1';
|
|
3
|
+
const DIGEST_PATTERN = /^[a-f0-9]{64}$/u;
|
|
4
|
+
const SECRET_FIELD_PATTERN = /^(?:api[_-]?key|access[_-]?token|refresh[_-]?token|password|secret|authorization)$/iu;
|
|
5
|
+
const MEMORY_CONTEXT_CUSTOM_TYPE = 'felan-memory-context';
|
|
6
|
+
const encoder = new TextEncoder();
|
|
7
|
+
export async function materializeMemoryInputDelta(options) {
|
|
8
|
+
try {
|
|
9
|
+
validateOptions(options);
|
|
10
|
+
throwIfAborted(options.signal);
|
|
11
|
+
const index = await indexSource(options.lines, options.checkpoint, options.signal);
|
|
12
|
+
validateGraph(index);
|
|
13
|
+
const current = selectVisibleBranch(index, options.checkpoint.leafId);
|
|
14
|
+
const previous = options.previousCheckpoint === undefined
|
|
15
|
+
? undefined
|
|
16
|
+
: selectVisibleBranch(index, options.previousCheckpoint.leafId);
|
|
17
|
+
const commonPrefixEntryCount = previous === undefined ? 0 : longestCommonPrefix(current.ids, previous.ids);
|
|
18
|
+
const relation = classifyRelation(current.ids, previous?.ids, commonPrefixEntryCount);
|
|
19
|
+
const includedIds = relation === 'diverged'
|
|
20
|
+
? current.ids
|
|
21
|
+
: current.ids.slice(commonPrefixEntryCount);
|
|
22
|
+
const includedPositions = new Map(includedIds.map((id, position) => [id, position]));
|
|
23
|
+
const currentEntries = [];
|
|
24
|
+
const previousEntries = [];
|
|
25
|
+
const evidence = [];
|
|
26
|
+
let evidenceBytes = 0;
|
|
27
|
+
let evidenceRecordCount = 0;
|
|
28
|
+
let removedEntryCount = current.hiddenEntryCount;
|
|
29
|
+
let redactionCount = 0;
|
|
30
|
+
let outputTooLarge = false;
|
|
31
|
+
let replayLineCount = 0;
|
|
32
|
+
await consumeSource(options.lines, options.signal, async (line, lineNumber) => {
|
|
33
|
+
replayLineCount += 1;
|
|
34
|
+
if (lineNumber >= index.lineDigests.length || await sha256(line) !== index.lineDigests[lineNumber]) {
|
|
35
|
+
fail('source_changed', 'Memory checkpoint source changed while it was being read');
|
|
36
|
+
}
|
|
37
|
+
if (lineNumber === 0 || line.trim().length === 0)
|
|
38
|
+
return;
|
|
39
|
+
const entry = parseRecord(line);
|
|
40
|
+
const id = entry.id;
|
|
41
|
+
const currentPosition = current.positions.get(id);
|
|
42
|
+
if (currentPosition !== undefined)
|
|
43
|
+
currentEntries[currentPosition] = normalizeVisibleEntry(entry, index);
|
|
44
|
+
const previousPosition = previous?.positions.get(id);
|
|
45
|
+
if (previousPosition !== undefined)
|
|
46
|
+
previousEntries[previousPosition] = normalizeVisibleEntry(entry, index);
|
|
47
|
+
if (!includedPositions.has(id))
|
|
48
|
+
return;
|
|
49
|
+
const projected = projectEvidenceEntry(normalizeVisibleEntry(entry, index));
|
|
50
|
+
if (projected === undefined) {
|
|
51
|
+
removedEntryCount += 1;
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
evidenceRecordCount += 1;
|
|
55
|
+
const state = { count: 0 };
|
|
56
|
+
const jsonlRecord = `${canonicalJson(redactValue(projected, state))}\n`;
|
|
57
|
+
redactionCount += state.count;
|
|
58
|
+
const recordBytes = byteLength(jsonlRecord);
|
|
59
|
+
if (options.maxOutputBytes !== undefined && evidenceBytes + recordBytes > options.maxOutputBytes) {
|
|
60
|
+
outputTooLarge = true;
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (!outputTooLarge) {
|
|
64
|
+
evidence.push(jsonlRecord);
|
|
65
|
+
evidenceBytes += recordBytes;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
if (replayLineCount !== index.lineDigests.length) {
|
|
69
|
+
fail('source_changed', 'Memory checkpoint source changed while it was being read');
|
|
70
|
+
}
|
|
71
|
+
if (currentEntries.length !== current.ids.length
|
|
72
|
+
|| await digestCanonicalArray(currentEntries) !== options.checkpoint.transcriptDigest) {
|
|
73
|
+
fail('checkpoint_changed', 'Memory checkpoint transcript changed before processing');
|
|
74
|
+
}
|
|
75
|
+
if (previous !== undefined && (previousEntries.length !== previous.ids.length
|
|
76
|
+
|| await digestCanonicalArray(previousEntries) !== options.previousCheckpoint.transcriptDigest)) {
|
|
77
|
+
fail('previous_checkpoint_changed', 'Previously processed memory checkpoint changed before processing');
|
|
78
|
+
}
|
|
79
|
+
if (outputTooLarge) {
|
|
80
|
+
fail('output_too_large', 'Memory checkpoint evidence exceeds the output byte limit');
|
|
81
|
+
}
|
|
82
|
+
const text = evidence.join('');
|
|
83
|
+
return {
|
|
84
|
+
ok: true,
|
|
85
|
+
format: MEMORY_INPUT_JSONL_FORMAT,
|
|
86
|
+
text,
|
|
87
|
+
materializedDigest: await sha256(text),
|
|
88
|
+
byteLength: byteLength(text),
|
|
89
|
+
redactionCount,
|
|
90
|
+
projection: {
|
|
91
|
+
version: MEMORY_INPUT_PROJECTION_VERSION,
|
|
92
|
+
relation,
|
|
93
|
+
includedEntryCount: includedIds.length,
|
|
94
|
+
evidenceRecordCount,
|
|
95
|
+
removedEntryCount,
|
|
96
|
+
...(options.previousCheckpoint === undefined ? {} : { previousCheckpoint: options.previousCheckpoint }),
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (error instanceof MaterializationError) {
|
|
102
|
+
return { ok: false, code: error.code, message: error.message };
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
ok: false,
|
|
106
|
+
code: options.signal?.aborted ? 'cancelled' : 'source_unavailable',
|
|
107
|
+
message: options.signal?.aborted
|
|
108
|
+
? 'Memory input materialization was cancelled'
|
|
109
|
+
: 'Memory checkpoint source is unavailable',
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function validateOptions(options) {
|
|
114
|
+
validateCheckpoint(options.checkpoint, 'current');
|
|
115
|
+
if (options.previousCheckpoint !== undefined) {
|
|
116
|
+
validateCheckpoint(options.previousCheckpoint, 'previous');
|
|
117
|
+
if (options.previousCheckpoint.sessionId !== options.checkpoint.sessionId) {
|
|
118
|
+
fail('invalid_checkpoint', 'Previous memory checkpoint belongs to another session');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (options.maxOutputBytes !== undefined && (!Number.isSafeInteger(options.maxOutputBytes) || options.maxOutputBytes < 0)) {
|
|
122
|
+
fail('invalid_checkpoint', 'Memory input output byte limit is invalid');
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function validateCheckpoint(checkpoint, label) {
|
|
126
|
+
if (typeof checkpoint.sessionId !== 'string' || checkpoint.sessionId.length === 0
|
|
127
|
+
|| typeof checkpoint.sessionFile !== 'string' || checkpoint.sessionFile.length === 0
|
|
128
|
+
|| (checkpoint.leafId !== null && (typeof checkpoint.leafId !== 'string' || checkpoint.leafId.length === 0))
|
|
129
|
+
|| typeof checkpoint.transcriptDigest !== 'string' || !DIGEST_PATTERN.test(checkpoint.transcriptDigest)) {
|
|
130
|
+
fail('invalid_checkpoint', `${label === 'current' ? 'Current' : 'Previous'} memory checkpoint is invalid`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async function indexSource(lines, checkpoint, signal) {
|
|
134
|
+
const entries = new Map();
|
|
135
|
+
const lineDigests = [];
|
|
136
|
+
let sawHeader = false;
|
|
137
|
+
await consumeSource(lines, signal, async (line, lineNumber) => {
|
|
138
|
+
lineDigests.push(await sha256(line));
|
|
139
|
+
if (line.includes('\n') || line.includes('\r')) {
|
|
140
|
+
fail('invalid_source', 'Memory checkpoint source yielded an invalid line');
|
|
141
|
+
}
|
|
142
|
+
if (lineNumber === 0) {
|
|
143
|
+
const header = parseRecord(line);
|
|
144
|
+
if (header.type !== 'session' || typeof header.id !== 'string' || header.id.length === 0
|
|
145
|
+
|| header.id !== checkpoint.sessionId
|
|
146
|
+
|| (header.timestamp !== undefined && (typeof header.timestamp !== 'string' || header.timestamp.length === 0))
|
|
147
|
+
|| (header.cwd !== undefined && (typeof header.cwd !== 'string' || header.cwd.length === 0))
|
|
148
|
+
|| (header.parentSession !== undefined && (typeof header.parentSession !== 'string' || header.parentSession.length === 0))
|
|
149
|
+
|| (header.version !== undefined && (!Number.isSafeInteger(header.version) || header.version < 1))) {
|
|
150
|
+
fail('invalid_source', 'Memory checkpoint session header is invalid');
|
|
151
|
+
}
|
|
152
|
+
sawHeader = true;
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (line.trim().length === 0)
|
|
156
|
+
return;
|
|
157
|
+
const entry = parseRecord(line);
|
|
158
|
+
if (entry.type === 'session')
|
|
159
|
+
fail('invalid_source', 'Memory checkpoint source contains multiple session headers');
|
|
160
|
+
if (typeof entry.type !== 'string' || entry.type.length === 0
|
|
161
|
+
|| typeof entry.id !== 'string' || entry.id.length === 0
|
|
162
|
+
|| (entry.parentId !== null && (typeof entry.parentId !== 'string' || entry.parentId.length === 0))) {
|
|
163
|
+
fail('invalid_source', 'Memory checkpoint source contains an invalid entry');
|
|
164
|
+
}
|
|
165
|
+
if (entries.has(entry.id))
|
|
166
|
+
fail('invalid_source', 'Memory checkpoint source contains duplicate entry IDs');
|
|
167
|
+
entries.set(entry.id, {
|
|
168
|
+
lineNumber,
|
|
169
|
+
parentId: entry.parentId,
|
|
170
|
+
hidden: isMemoryContextEntry(entry),
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
if (!sawHeader)
|
|
174
|
+
fail('invalid_source', 'Memory checkpoint session header is missing');
|
|
175
|
+
return { entries, lineDigests };
|
|
176
|
+
}
|
|
177
|
+
function validateGraph(index) {
|
|
178
|
+
for (const entry of index.entries.values()) {
|
|
179
|
+
if (entry.parentId === null)
|
|
180
|
+
continue;
|
|
181
|
+
if (!index.entries.has(entry.parentId))
|
|
182
|
+
fail('invalid_source', 'Memory checkpoint source contains a missing parent');
|
|
183
|
+
}
|
|
184
|
+
const complete = new Set();
|
|
185
|
+
for (const id of index.entries.keys()) {
|
|
186
|
+
const path = new Set();
|
|
187
|
+
let current = id;
|
|
188
|
+
while (current !== null && !complete.has(current)) {
|
|
189
|
+
if (path.has(current))
|
|
190
|
+
fail('invalid_source', 'Memory checkpoint transcript contains a cycle');
|
|
191
|
+
path.add(current);
|
|
192
|
+
current = index.entries.get(current)?.parentId ?? null;
|
|
193
|
+
}
|
|
194
|
+
for (const entryId of path)
|
|
195
|
+
complete.add(entryId);
|
|
196
|
+
}
|
|
197
|
+
for (const entry of index.entries.values()) {
|
|
198
|
+
if (entry.parentId === null)
|
|
199
|
+
continue;
|
|
200
|
+
if (index.entries.get(entry.parentId).lineNumber >= entry.lineNumber) {
|
|
201
|
+
fail('invalid_source', 'Memory checkpoint source contains an invalid branch order');
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function selectVisibleBranch(index, leafId) {
|
|
206
|
+
if (leafId === null)
|
|
207
|
+
return { ids: [], positions: new Map(), hiddenEntryCount: 0 };
|
|
208
|
+
const path = [];
|
|
209
|
+
let hiddenEntryCount = 0;
|
|
210
|
+
let current = leafId;
|
|
211
|
+
while (current !== null) {
|
|
212
|
+
const entry = index.entries.get(current);
|
|
213
|
+
if (entry === undefined)
|
|
214
|
+
fail('invalid_source', 'Memory checkpoint leaf is not present in the transcript');
|
|
215
|
+
if (entry.hidden)
|
|
216
|
+
hiddenEntryCount += 1;
|
|
217
|
+
else
|
|
218
|
+
path.push(current);
|
|
219
|
+
current = entry.parentId;
|
|
220
|
+
}
|
|
221
|
+
path.reverse();
|
|
222
|
+
return {
|
|
223
|
+
ids: path,
|
|
224
|
+
positions: new Map(path.map((id, position) => [id, position])),
|
|
225
|
+
hiddenEntryCount,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
function normalizeVisibleEntry(entry, index) {
|
|
229
|
+
if (typeof entry.parentId !== 'string' || !index.entries.get(entry.parentId)?.hidden)
|
|
230
|
+
return entry;
|
|
231
|
+
let parentId = entry.parentId;
|
|
232
|
+
while (parentId !== null && index.entries.get(parentId)?.hidden) {
|
|
233
|
+
parentId = index.entries.get(parentId)?.parentId ?? null;
|
|
234
|
+
}
|
|
235
|
+
return { ...entry, parentId };
|
|
236
|
+
}
|
|
237
|
+
function projectEvidenceEntry(entry) {
|
|
238
|
+
if (entry.type === 'compaction' || entry.type === 'branch_summary')
|
|
239
|
+
return entry;
|
|
240
|
+
if (entry.type !== 'message' || !isRecord(entry.message))
|
|
241
|
+
return undefined;
|
|
242
|
+
const role = entry.message.role;
|
|
243
|
+
if (role === 'user' || role === 'assistant') {
|
|
244
|
+
return {
|
|
245
|
+
type: 'message',
|
|
246
|
+
id: entry.id,
|
|
247
|
+
parentId: entry.parentId,
|
|
248
|
+
message: { role, content: projectContent(entry.message.content, role === 'assistant') },
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
if (role === 'toolResult' && typeof entry.message.toolName === 'string') {
|
|
252
|
+
return {
|
|
253
|
+
type: 'message',
|
|
254
|
+
id: entry.id,
|
|
255
|
+
parentId: entry.parentId,
|
|
256
|
+
message: {
|
|
257
|
+
role,
|
|
258
|
+
toolName: entry.message.toolName,
|
|
259
|
+
isError: entry.message.isError === true,
|
|
260
|
+
content: projectContent(entry.message.content, false),
|
|
261
|
+
},
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
return undefined;
|
|
265
|
+
}
|
|
266
|
+
function projectContent(value, includeToolCalls) {
|
|
267
|
+
if (typeof value === 'string')
|
|
268
|
+
return value;
|
|
269
|
+
if (!Array.isArray(value))
|
|
270
|
+
return [];
|
|
271
|
+
return value.flatMap((part) => {
|
|
272
|
+
if (!isRecord(part))
|
|
273
|
+
return [];
|
|
274
|
+
if (part.type === 'text' && typeof part.text === 'string')
|
|
275
|
+
return [{ type: 'text', text: part.text }];
|
|
276
|
+
if (part.type === 'image')
|
|
277
|
+
return [{ type: 'image', data: '[IMAGE_DATA_OMITTED]' }];
|
|
278
|
+
if (includeToolCalls && part.type === 'toolCall' && typeof part.name === 'string') {
|
|
279
|
+
return [{ type: 'toolCall', name: part.name, arguments: part.arguments ?? null }];
|
|
280
|
+
}
|
|
281
|
+
return [];
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
function classifyRelation(current, previous, commonPrefixEntryCount) {
|
|
285
|
+
if (previous === undefined)
|
|
286
|
+
return 'initial';
|
|
287
|
+
if (current.length === previous.length && commonPrefixEntryCount === current.length)
|
|
288
|
+
return 'unchanged';
|
|
289
|
+
if (commonPrefixEntryCount === previous.length)
|
|
290
|
+
return 'appended';
|
|
291
|
+
return 'diverged';
|
|
292
|
+
}
|
|
293
|
+
function longestCommonPrefix(left, right) {
|
|
294
|
+
const limit = Math.min(left.length, right.length);
|
|
295
|
+
let length = 0;
|
|
296
|
+
while (length < limit && left[length] === right[length])
|
|
297
|
+
length += 1;
|
|
298
|
+
return length;
|
|
299
|
+
}
|
|
300
|
+
function redactValue(value, state, key) {
|
|
301
|
+
if (key !== undefined && SECRET_FIELD_PATTERN.test(key) && value !== null) {
|
|
302
|
+
state.count += 1;
|
|
303
|
+
return '[REDACTED_SECRET]';
|
|
304
|
+
}
|
|
305
|
+
if (typeof value === 'string')
|
|
306
|
+
return redactString(value, state);
|
|
307
|
+
if (Array.isArray(value))
|
|
308
|
+
return value.map((entry) => redactValue(entry, state));
|
|
309
|
+
if (!isRecord(value))
|
|
310
|
+
return value;
|
|
311
|
+
const image = value.type === 'image' && typeof value.data === 'string';
|
|
312
|
+
const result = {};
|
|
313
|
+
for (const [field, entry] of Object.entries(value)) {
|
|
314
|
+
const projectedField = redactString(field, state);
|
|
315
|
+
if (image && field === 'data') {
|
|
316
|
+
result[projectedField] = '[IMAGE_DATA_OMITTED]';
|
|
317
|
+
state.count += 1;
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
result[projectedField] = redactValue(entry, state, field);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return result;
|
|
324
|
+
}
|
|
325
|
+
function redactString(value, state) {
|
|
326
|
+
const replace = (pattern, replacement) => {
|
|
327
|
+
value = value.replace(pattern, (...args) => {
|
|
328
|
+
state.count += 1;
|
|
329
|
+
return replacement.replace('$1', String(args[1] ?? ''));
|
|
330
|
+
});
|
|
331
|
+
};
|
|
332
|
+
replace(/-----BEGIN [^-]*PRIVATE KEY-----[\s\S]*?-----END [^-]*PRIVATE KEY-----/gu, '[REDACTED_PRIVATE_KEY]');
|
|
333
|
+
replace(/\b(?:sk-[A-Za-z0-9_-]{16,}|ghp_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,}|xox[baprs]-[A-Za-z0-9-]{12,})\b/gu, '[REDACTED_TOKEN]');
|
|
334
|
+
replace(/(Bearer\s+)[A-Za-z0-9._~+/=-]{12,}/giu, '$1[REDACTED_TOKEN]');
|
|
335
|
+
replace(/(["']?(?:api[_-]?key|access[_-]?token|refresh[_-]?token|password|secret|authorization)["']?\s*[:=]\s*["']?)[^"'\s,}]+/giu, '$1[REDACTED_SECRET]');
|
|
336
|
+
return value;
|
|
337
|
+
}
|
|
338
|
+
async function consumeSource(source, signal, consume) {
|
|
339
|
+
throwIfAborted(signal);
|
|
340
|
+
const iterable = source();
|
|
341
|
+
if (!isAsyncIterable(iterable))
|
|
342
|
+
fail('invalid_source', 'Memory checkpoint line source is invalid');
|
|
343
|
+
let lineNumber = 0;
|
|
344
|
+
for await (const line of iterable) {
|
|
345
|
+
throwIfAborted(signal);
|
|
346
|
+
if (typeof line !== 'string')
|
|
347
|
+
fail('invalid_source', 'Memory checkpoint source yielded an invalid line');
|
|
348
|
+
await consume(line, lineNumber);
|
|
349
|
+
lineNumber += 1;
|
|
350
|
+
}
|
|
351
|
+
throwIfAborted(signal);
|
|
352
|
+
}
|
|
353
|
+
function parseRecord(line) {
|
|
354
|
+
let value;
|
|
355
|
+
try {
|
|
356
|
+
value = JSON.parse(line);
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
fail('invalid_source', 'Memory checkpoint source contains invalid JSONL');
|
|
360
|
+
}
|
|
361
|
+
if (!isRecord(value))
|
|
362
|
+
fail('invalid_source', 'Memory checkpoint source contains an invalid record');
|
|
363
|
+
return value;
|
|
364
|
+
}
|
|
365
|
+
function isMemoryContextEntry(entry) {
|
|
366
|
+
return entry.type === 'custom_message' && entry.customType === MEMORY_CONTEXT_CUSTOM_TYPE;
|
|
367
|
+
}
|
|
368
|
+
function canonicalJson(value) {
|
|
369
|
+
if (value === null || typeof value !== 'object')
|
|
370
|
+
return JSON.stringify(value) ?? 'null';
|
|
371
|
+
if (Array.isArray(value))
|
|
372
|
+
return `[${value.map(canonicalJson).join(',')}]`;
|
|
373
|
+
const entries = Object.entries(value)
|
|
374
|
+
.filter(([, entry]) => entry !== undefined)
|
|
375
|
+
.sort(([left], [right]) => left.localeCompare(right));
|
|
376
|
+
return `{${entries.map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`).join(',')}}`;
|
|
377
|
+
}
|
|
378
|
+
async function digestCanonicalArray(entries) {
|
|
379
|
+
return sha256(`[${entries.map(canonicalJson).join(',')}]`);
|
|
380
|
+
}
|
|
381
|
+
async function sha256(value) {
|
|
382
|
+
const digest = await globalThis.crypto.subtle.digest('SHA-256', encoder.encode(value));
|
|
383
|
+
return [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
384
|
+
}
|
|
385
|
+
function byteLength(value) {
|
|
386
|
+
return encoder.encode(value).byteLength;
|
|
387
|
+
}
|
|
388
|
+
function throwIfAborted(signal) {
|
|
389
|
+
if (signal?.aborted)
|
|
390
|
+
fail('cancelled', 'Memory input materialization was cancelled');
|
|
391
|
+
}
|
|
392
|
+
function isAsyncIterable(value) {
|
|
393
|
+
return typeof value === 'object' && value !== null && Symbol.asyncIterator in value;
|
|
394
|
+
}
|
|
395
|
+
function isRecord(value) {
|
|
396
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
397
|
+
}
|
|
398
|
+
class MaterializationError extends Error {
|
|
399
|
+
code;
|
|
400
|
+
constructor(code, message) {
|
|
401
|
+
super(message);
|
|
402
|
+
this.code = code;
|
|
403
|
+
this.name = 'MemoryInputMaterializationError';
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
function fail(code, message) {
|
|
407
|
+
throw new MaterializationError(code, message);
|
|
408
|
+
}
|
|
409
|
+
//# sourceMappingURL=input-materializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-materializer.js","sourceRoot":"","sources":["../src/input-materializer.ts"],"names":[],"mappings":"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"}
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAIhC,MAAM,gBAAgB,CAAC;AAIxB,wBAAgB,yBAAyB,CAAC,EACxC,qBAAqB,EACrB,QAAQ,EACR,SAAoC,GACrC,EAAE,0BAA0B,GAAG,mBAAmB,CAYlD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAiB5E;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,SAAS,MAAM,EAAE,CAEtF;AA4FD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIrD"}
|
package/dist/manifest.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MEMORY_INPUT_MANIFEST_VERSION, } from './contracts.js';
|
|
1
|
+
import { MEMORY_INPUT_MANIFEST_VERSION, MEMORY_INPUT_PROJECTION_VERSION, } from './contracts.js';
|
|
2
2
|
const DIGEST_PATTERN = /^[a-f0-9]{64}$/u;
|
|
3
3
|
export function createMemoryInputManifest({ baseMemoryFingerprint, sessions, createdAt = new Date().toISOString(), }) {
|
|
4
4
|
const normalized = normalizeSessions(sessions);
|
|
@@ -70,6 +70,9 @@ function normalizeSessions(value) {
|
|
|
70
70
|
if (seen.has(sessionId))
|
|
71
71
|
throw new Error(`Duplicate memory input session: ${sessionId}`);
|
|
72
72
|
seen.add(sessionId);
|
|
73
|
+
const projection = raw.projection === undefined
|
|
74
|
+
? undefined
|
|
75
|
+
: normalizeProjection(raw.projection, sessionId);
|
|
73
76
|
sessions.push({
|
|
74
77
|
checkpoint: { sessionId, sessionFile, leafId, transcriptDigest },
|
|
75
78
|
metadataPath,
|
|
@@ -77,10 +80,53 @@ function normalizeSessions(value) {
|
|
|
77
80
|
materializedDigest: raw.materializedDigest,
|
|
78
81
|
byteLength,
|
|
79
82
|
redactionCount,
|
|
83
|
+
...(projection === undefined ? {} : { projection }),
|
|
80
84
|
});
|
|
81
85
|
}
|
|
82
86
|
return sessions.sort((left, right) => left.checkpoint.sessionId.localeCompare(right.checkpoint.sessionId));
|
|
83
87
|
}
|
|
88
|
+
function normalizeProjection(value, sessionId) {
|
|
89
|
+
if (!isRecord(value) || value.version !== MEMORY_INPUT_PROJECTION_VERSION) {
|
|
90
|
+
throw new Error(`Invalid memory input projection for ${sessionId}`);
|
|
91
|
+
}
|
|
92
|
+
const relations = ['initial', 'unchanged', 'appended', 'diverged'];
|
|
93
|
+
if (!relations.includes(value.relation)) {
|
|
94
|
+
throw new Error(`Invalid memory input projection relation for ${sessionId}`);
|
|
95
|
+
}
|
|
96
|
+
const includedEntryCount = countField(value, 'includedEntryCount', sessionId);
|
|
97
|
+
const evidenceRecordCount = countField(value, 'evidenceRecordCount', sessionId);
|
|
98
|
+
const removedEntryCount = countField(value, 'removedEntryCount', sessionId);
|
|
99
|
+
const previousCheckpoint = value.previousCheckpoint === undefined
|
|
100
|
+
? undefined
|
|
101
|
+
: normalizeCheckpoint(value.previousCheckpoint, sessionId);
|
|
102
|
+
return {
|
|
103
|
+
version: MEMORY_INPUT_PROJECTION_VERSION,
|
|
104
|
+
relation: value.relation,
|
|
105
|
+
includedEntryCount,
|
|
106
|
+
evidenceRecordCount,
|
|
107
|
+
removedEntryCount,
|
|
108
|
+
...(previousCheckpoint === undefined ? {} : { previousCheckpoint }),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function normalizeCheckpoint(value, sessionId) {
|
|
112
|
+
if (!isRecord(value))
|
|
113
|
+
throw new Error(`Invalid previous memory checkpoint for ${sessionId}`);
|
|
114
|
+
const previousSessionId = stringField(value, 'sessionId');
|
|
115
|
+
const sessionFile = stringField(value, 'sessionFile');
|
|
116
|
+
const leafId = value.leafId === null ? null : stringField(value, 'leafId');
|
|
117
|
+
const transcriptDigest = stringField(value, 'transcriptDigest');
|
|
118
|
+
if (previousSessionId !== sessionId || !DIGEST_PATTERN.test(transcriptDigest)) {
|
|
119
|
+
throw new Error(`Invalid previous memory checkpoint for ${sessionId}`);
|
|
120
|
+
}
|
|
121
|
+
return { sessionId: previousSessionId, sessionFile, leafId, transcriptDigest };
|
|
122
|
+
}
|
|
123
|
+
function countField(record, field, sessionId) {
|
|
124
|
+
const value = record[field];
|
|
125
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {
|
|
126
|
+
throw new Error(`Invalid memory input projection count for ${sessionId}`);
|
|
127
|
+
}
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
84
130
|
export function isSafeInputPath(path) {
|
|
85
131
|
if (!path || path.startsWith('/') || path.includes('\\') || path.includes('//'))
|
|
86
132
|
return false;
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|