@loomwork/ui-lineage 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +8 -0
  3. package/README.md +471 -2
  4. package/dist/conformance.d.ts +4 -0
  5. package/dist/conformance.d.ts.map +1 -0
  6. package/dist/conformance.js +143 -0
  7. package/dist/conformance.js.map +1 -0
  8. package/dist/derive.d.ts +15 -0
  9. package/dist/derive.d.ts.map +1 -0
  10. package/dist/derive.js +35 -0
  11. package/dist/derive.js.map +1 -0
  12. package/dist/esm/conformance.js +140 -0
  13. package/dist/esm/conformance.js.map +1 -0
  14. package/dist/esm/derive.js +29 -0
  15. package/dist/esm/derive.js.map +1 -0
  16. package/dist/esm/events.js +101 -0
  17. package/dist/esm/events.js.map +1 -0
  18. package/dist/esm/index.js +12 -0
  19. package/dist/esm/index.js.map +1 -0
  20. package/dist/esm/lineage.js +1376 -0
  21. package/dist/esm/lineage.js.map +1 -0
  22. package/dist/esm/retention.js +73 -0
  23. package/dist/esm/retention.js.map +1 -0
  24. package/dist/esm/rootsFor.js +49 -0
  25. package/dist/esm/rootsFor.js.map +1 -0
  26. package/dist/esm/seen.js +733 -0
  27. package/dist/esm/seen.js.map +1 -0
  28. package/dist/esm/seenCrypto.js +197 -0
  29. package/dist/esm/seenCrypto.js.map +1 -0
  30. package/dist/esm/seenGc.js +122 -0
  31. package/dist/esm/seenGc.js.map +1 -0
  32. package/dist/esm/state.js +185 -0
  33. package/dist/esm/state.js.map +1 -0
  34. package/dist/esm/store.js +172 -0
  35. package/dist/esm/store.js.map +1 -0
  36. package/dist/events.d.ts +781 -0
  37. package/dist/events.d.ts.map +1 -0
  38. package/dist/events.js +106 -0
  39. package/dist/events.js.map +1 -0
  40. package/dist/index.d.ts +23 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +60 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/lineage.d.ts +394 -0
  45. package/dist/lineage.d.ts.map +1 -0
  46. package/dist/lineage.js +1383 -0
  47. package/dist/lineage.js.map +1 -0
  48. package/dist/retention.d.ts +45 -0
  49. package/dist/retention.d.ts.map +1 -0
  50. package/dist/retention.js +78 -0
  51. package/dist/retention.js.map +1 -0
  52. package/dist/rootsFor.d.ts +33 -0
  53. package/dist/rootsFor.d.ts.map +1 -0
  54. package/dist/rootsFor.js +52 -0
  55. package/dist/rootsFor.js.map +1 -0
  56. package/dist/seen.d.ts +375 -0
  57. package/dist/seen.d.ts.map +1 -0
  58. package/dist/seen.js +739 -0
  59. package/dist/seen.js.map +1 -0
  60. package/dist/seenCrypto.d.ts +72 -0
  61. package/dist/seenCrypto.d.ts.map +1 -0
  62. package/dist/seenCrypto.js +210 -0
  63. package/dist/seenCrypto.js.map +1 -0
  64. package/dist/seenGc.d.ts +73 -0
  65. package/dist/seenGc.d.ts.map +1 -0
  66. package/dist/seenGc.js +126 -0
  67. package/dist/seenGc.js.map +1 -0
  68. package/dist/state.d.ts +66 -0
  69. package/dist/state.d.ts.map +1 -0
  70. package/dist/state.js +190 -0
  71. package/dist/state.js.map +1 -0
  72. package/dist/store.d.ts +93 -0
  73. package/dist/store.d.ts.map +1 -0
  74. package/dist/store.js +177 -0
  75. package/dist/store.js.map +1 -0
  76. package/package.json +60 -3
  77. package/src/conformance.ts +148 -0
  78. package/src/derive.ts +57 -0
  79. package/src/events.ts +125 -0
  80. package/src/index.ts +79 -0
  81. package/src/lineage.ts +1655 -0
  82. package/src/retention.ts +118 -0
  83. package/src/rootsFor.ts +75 -0
  84. package/src/seen.ts +965 -0
  85. package/src/seenCrypto.ts +271 -0
  86. package/src/seenGc.ts +233 -0
  87. package/src/state.ts +268 -0
  88. package/src/store.ts +274 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seen.js","sourceRoot":"","sources":["../src/seen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import type { Finding } from "@loomwork/ui-core";
2
+ /**
3
+ * Key material for one (experience, viewer) subject. Destroying a key is the erasure primitive, so a
4
+ * production store must really delete it (KMS/HSM), and `durable: false` stores lose every viewer's
5
+ * record on restart (indistinguishable from erasure).
6
+ */
7
+ export interface SeenKeyStore {
8
+ /**
9
+ * The subject's 32-byte key, created on first use. MUST reject for a destroyed subject (never
10
+ * resurrect). Create-if-absent MUST be ATOMIC: two concurrent calls for one new subject return the
11
+ * SAME key (a durable implementation needs a conditional insert / compare-and-set, not
12
+ * read-then-write), or one writer's records are sealed under a key that is then lost.
13
+ */
14
+ getOrCreate(subjectId: string): Promise<Uint8Array>;
15
+ /**
16
+ * The key, or `null` if it never existed OR was destroyed. AFTER `destroy` an implementation MUST
17
+ * NOT serve the key from ANY layer, including an in-process cache warmed by an earlier `get`: a
18
+ * cache that outlives `destroy` makes erasure a lie on that process. (`SeenLog.record` re-reads
19
+ * the key just before it appends, so a destroyed key is observed there.)
20
+ */
21
+ get(subjectId: string): Promise<Uint8Array | null>;
22
+ /** Irreversibly destroy the key. Idempotent; a no-op for an absent subject (which stays destroyed). */
23
+ destroy(subjectId: string): Promise<void>;
24
+ readonly durable?: boolean;
25
+ }
26
+ /** Reference in-memory key store (tests / ephemeral apps): NOT durable. */
27
+ export declare class InMemorySeenKeyStore implements SeenKeyStore {
28
+ readonly durable = false;
29
+ private readonly keys;
30
+ private readonly destroyed;
31
+ getOrCreate(subjectId: string): Promise<Uint8Array>;
32
+ get(subjectId: string): Promise<Uint8Array | null>;
33
+ destroy(subjectId: string): Promise<void>;
34
+ }
35
+ /** The subject (unit of erasure) of a stream key. */
36
+ export declare const seenKeySubject: (streamKey: string) => string;
37
+ export interface DerivedSeenKeys {
38
+ readonly enc: Buffer;
39
+ readonly mac: Buffer;
40
+ }
41
+ /** Separate encryption and MAC keys from the stored data key (HKDF-SHA256). Throws on a malformed key. */
42
+ export declare function deriveSeenKeys(master: Uint8Array): DerivedSeenKeys;
43
+ /** The associated data a sealed ref is bound to. */
44
+ export declare const refAad: (experienceId: string, viewerId: string, sequence: number, entryIndex: number) => Buffer;
45
+ /**
46
+ * Plaintext length (bytes) every sealed ref is padded to, so the ciphertext length does not reveal
47
+ * the value's size (the `bytes` of an entry lives only INSIDE the seal). Addresses longer than this
48
+ * round up to the next multiple, which a real content address never needs.
49
+ */
50
+ export declare const SEALED_REF_BLOCK = 256;
51
+ /** Longest content address `sealRef` accepts. Real addresses are sha256-sized; anything longer fails closed so padding never rounds up (a length leak). */
52
+ export declare const MAX_SEALED_ADDRESS_CHARS = 128;
53
+ /** The plaintext inside a sealed ref: the content ref and the value's measured size, padded to a constant length. */
54
+ export declare function sealRef(enc: Buffer, aad: Buffer, ref: {
55
+ readonly __loomContent: string;
56
+ }, bytes: number): string;
57
+ /** AES-256-GCM: `base64url(0x01 | iv | ciphertext | tag)`. A fresh random IV per call. */
58
+ export declare function sealText(enc: Buffer, aad: Buffer, plaintext: string): string;
59
+ /** The plaintext, or `undefined` for ANY failure (wrong key, wrong AAD, tampering, malformed): fail closed. */
60
+ export declare function openText(enc: Buffer, aad: Buffer, sealed: unknown): string | undefined;
61
+ /** `undefined` for any failure; otherwise the ref and size sealed by {@link sealRef}. */
62
+ export declare function openRef(enc: Buffer, aad: Buffer, sealed: unknown): {
63
+ readonly ref: {
64
+ readonly __loomContent: string;
65
+ };
66
+ readonly bytes: number;
67
+ } | undefined;
68
+ /** Keyed digest: an unkeyed hash of a manifest would let anyone confirm a guessed value. */
69
+ export declare const keyedDigest: (mac: Buffer, text: string) => string;
70
+ /** The `SeenKeyStore` conformance kit: findings (a test asserts none), never throws. */
71
+ export declare function checkSeenKeyStoreConformance(make: () => SeenKeyStore | Promise<SeenKeyStore>): Promise<Finding[]>;
72
+ //# sourceMappingURL=seenCrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seenCrypto.d.ts","sourceRoot":"","sources":["../src/seenCrypto.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAWjD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD;;;;;OAKG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACnD,uGAAuG;IACvG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,2EAA2E;AAC3E,qBAAa,oBAAqB,YAAW,YAAY;IACvD,QAAQ,CAAC,OAAO,SAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAEzC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUnD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIlD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKhD;AAED,qDAAqD;AACrD,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,KAAG,MAAqC,CAAC;AAEzF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,0GAA0G;AAC1G,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,CAMlE;AAED,oDAAoD;AACpD,eAAO,MAAM,MAAM,GACjB,cAAc,MAAM,EACpB,UAAU,MAAM,EAChB,UAAU,MAAM,EAChB,YAAY,MAAM,KACjB,MAGA,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,2JAA2J;AAC3J,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,qHAAqH;AACrH,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE;IAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EACvC,KAAK,EAAE,MAAM,GACZ,MAAM,CASR;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED,+GAA+G;AAC/G,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CActF;AAED,yFAAyF;AACzF,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,GACd;IAAE,QAAQ,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAkB1F;AAED,4FAA4F;AAC5F,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,MAAM,MAAM,KAAG,MACQ,CAAC;AAEjE,wFAAwF;AACxF,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,GAC/C,OAAO,CAAC,OAAO,EAAE,CAAC,CA8FpB"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keyedDigest = exports.MAX_SEALED_ADDRESS_CHARS = exports.SEALED_REF_BLOCK = exports.refAad = exports.seenKeySubject = exports.InMemorySeenKeyStore = void 0;
4
+ exports.deriveSeenKeys = deriveSeenKeys;
5
+ exports.sealRef = sealRef;
6
+ exports.sealText = sealText;
7
+ exports.openText = openText;
8
+ exports.openRef = openRef;
9
+ exports.checkSeenKeyStoreConformance = checkSeenKeyStoreConformance;
10
+ const node_crypto_1 = require("node:crypto");
11
+ /** Reference in-memory key store (tests / ephemeral apps): NOT durable. */
12
+ class InMemorySeenKeyStore {
13
+ durable = false;
14
+ keys = new Map();
15
+ destroyed = new Set();
16
+ async getOrCreate(subjectId) {
17
+ if (this.destroyed.has(subjectId))
18
+ throw new Error(`the key for "${subjectId}" was destroyed; it cannot be recreated`);
19
+ let key = this.keys.get(subjectId);
20
+ if (key === undefined) {
21
+ key = new Uint8Array((0, node_crypto_1.randomBytes)(32));
22
+ this.keys.set(subjectId, key);
23
+ }
24
+ return new Uint8Array(key); // a copy: a caller cannot mutate (or retain a handle on) the stored key
25
+ }
26
+ async get(subjectId) {
27
+ const key = this.keys.get(subjectId);
28
+ return key === undefined ? null : new Uint8Array(key);
29
+ }
30
+ async destroy(subjectId) {
31
+ this.keys.get(subjectId)?.fill(0); // zeroize, then forget
32
+ this.keys.delete(subjectId);
33
+ this.destroyed.add(subjectId);
34
+ }
35
+ }
36
+ exports.InMemorySeenKeyStore = InMemorySeenKeyStore;
37
+ /** The subject (unit of erasure) of a stream key. */
38
+ const seenKeySubject = (streamKey) => `loom-ui/seen/${streamKey}`;
39
+ exports.seenKeySubject = seenKeySubject;
40
+ /** Separate encryption and MAC keys from the stored data key (HKDF-SHA256). Throws on a malformed key. */
41
+ function deriveSeenKeys(master) {
42
+ if (!(master instanceof Uint8Array) || master.length !== 32)
43
+ throw new Error("a seen data key must be 32 bytes");
44
+ const d = (info) => Buffer.from((0, node_crypto_1.hkdfSync)("sha256", master, Buffer.alloc(0), `loom-ui/seen/${info}/v1`, 32));
45
+ return { enc: d("enc"), mac: d("mac") };
46
+ }
47
+ /** The associated data a sealed ref is bound to. */
48
+ const refAad = (experienceId, viewerId, sequence, entryIndex) => Buffer.from(JSON.stringify(["loom-ui/seen/ref/v1", experienceId, viewerId, sequence, entryIndex]));
49
+ exports.refAad = refAad;
50
+ /**
51
+ * Plaintext length (bytes) every sealed ref is padded to, so the ciphertext length does not reveal
52
+ * the value's size (the `bytes` of an entry lives only INSIDE the seal). Addresses longer than this
53
+ * round up to the next multiple, which a real content address never needs.
54
+ */
55
+ exports.SEALED_REF_BLOCK = 256;
56
+ /** Longest content address `sealRef` accepts. Real addresses are sha256-sized; anything longer fails closed so padding never rounds up (a length leak). */
57
+ exports.MAX_SEALED_ADDRESS_CHARS = 128;
58
+ /** The plaintext inside a sealed ref: the content ref and the value's measured size, padded to a constant length. */
59
+ function sealRef(enc, aad, ref, bytes) {
60
+ if (ref.__loomContent.length > exports.MAX_SEALED_ADDRESS_CHARS)
61
+ throw new Error(`sealRef: a content address over ${exports.MAX_SEALED_ADDRESS_CHARS} characters is refused`);
62
+ const body = JSON.stringify({ r: ref, b: bytes });
63
+ const len = Buffer.byteLength(body, "utf-8");
64
+ const padded = Math.ceil(len / exports.SEALED_REF_BLOCK) * exports.SEALED_REF_BLOCK;
65
+ return sealText(enc, aad, body + " ".repeat(padded - len));
66
+ }
67
+ /** AES-256-GCM: `base64url(0x01 | iv | ciphertext | tag)`. A fresh random IV per call. */
68
+ function sealText(enc, aad, plaintext) {
69
+ const iv = (0, node_crypto_1.randomBytes)(12);
70
+ const c = (0, node_crypto_1.createCipheriv)("aes-256-gcm", enc, iv);
71
+ c.setAAD(aad);
72
+ const ct = Buffer.concat([c.update(Buffer.from(plaintext, "utf-8")), c.final()]);
73
+ return Buffer.concat([Buffer.from([1]), iv, ct, c.getAuthTag()]).toString("base64url");
74
+ }
75
+ /** The plaintext, or `undefined` for ANY failure (wrong key, wrong AAD, tampering, malformed): fail closed. */
76
+ function openText(enc, aad, sealed) {
77
+ try {
78
+ if (typeof sealed !== "string")
79
+ return undefined;
80
+ const raw = Buffer.from(sealed, "base64url");
81
+ if (raw.length < 1 + 12 + 16 || raw[0] !== 1)
82
+ return undefined;
83
+ const d = (0, node_crypto_1.createDecipheriv)("aes-256-gcm", enc, raw.subarray(1, 13));
84
+ d.setAAD(aad);
85
+ d.setAuthTag(raw.subarray(raw.length - 16));
86
+ return Buffer.concat([d.update(raw.subarray(13, raw.length - 16)), d.final()]).toString("utf-8");
87
+ }
88
+ catch {
89
+ return undefined;
90
+ }
91
+ }
92
+ /** `undefined` for any failure; otherwise the ref and size sealed by {@link sealRef}. */
93
+ function openRef(enc, aad, sealed) {
94
+ const text = openText(enc, aad, sealed);
95
+ if (text === undefined)
96
+ return undefined;
97
+ try {
98
+ const v = JSON.parse(text);
99
+ const addr = v?.r?.__loomContent;
100
+ if (typeof addr !== "string" ||
101
+ addr.length === 0 ||
102
+ addr.length > 256 ||
103
+ !Number.isSafeInteger(v.b) ||
104
+ v.b < 0)
105
+ return undefined;
106
+ return { ref: { __loomContent: addr }, bytes: v.b };
107
+ }
108
+ catch {
109
+ return undefined;
110
+ }
111
+ }
112
+ /** Keyed digest: an unkeyed hash of a manifest would let anyone confirm a guessed value. */
113
+ const keyedDigest = (mac, text) => `hmac:${(0, node_crypto_1.createHmac)("sha256", mac).update(text).digest("hex")}`;
114
+ exports.keyedDigest = keyedDigest;
115
+ /** The `SeenKeyStore` conformance kit: findings (a test asserts none), never throws. */
116
+ async function checkSeenKeyStoreConformance(make) {
117
+ const findings = [];
118
+ const fail = (code, message) => findings.push({ code, severity: "error", message });
119
+ const store = await make();
120
+ const same = (a, b) => a !== null && b !== null && Buffer.compare(Buffer.from(a), Buffer.from(b)) === 0;
121
+ const cases = [
122
+ [
123
+ "an unknown subject has no key",
124
+ async () => {
125
+ if ((await store.get("k-none")) !== null)
126
+ fail("get-unknown", "get of an unknown subject was not null");
127
+ },
128
+ ],
129
+ [
130
+ "getOrCreate yields a stable 32-byte key",
131
+ async () => {
132
+ const a = await store.getOrCreate("k-a");
133
+ if (a.length !== 32)
134
+ fail("key-length", `a key is ${a.length} bytes, not 32`);
135
+ if (!same(a, await store.getOrCreate("k-a")) || !same(a, await store.get("k-a")))
136
+ fail("key-stable", "getOrCreate/get did not return one key for one subject");
137
+ },
138
+ ],
139
+ [
140
+ "subjects get independent keys",
141
+ async () => {
142
+ if (same(await store.getOrCreate("k-1"), await store.getOrCreate("k-2")))
143
+ fail("key-distinct", "two subjects share a key");
144
+ },
145
+ ],
146
+ [
147
+ "destroy erases and never resurrects",
148
+ async () => {
149
+ await store.getOrCreate("k-d");
150
+ await store.destroy("k-d");
151
+ if ((await store.get("k-d")) !== null)
152
+ fail("destroy-get", "get after destroy was not null");
153
+ let recreated = false;
154
+ try {
155
+ await store.getOrCreate("k-d");
156
+ recreated = true;
157
+ }
158
+ catch {
159
+ /* required */
160
+ }
161
+ if (recreated)
162
+ fail("destroy-resurrect", "getOrCreate after destroy created a new key");
163
+ },
164
+ ],
165
+ [
166
+ "get after destroy is null even after a prior get (no cache outlives destroy)",
167
+ async () => {
168
+ await store.getOrCreate("k-w");
169
+ await store.get("k-w"); // warm any cache
170
+ await store.get("k-w");
171
+ await store.destroy("k-w");
172
+ if ((await store.get("k-w")) !== null)
173
+ fail("destroy-cache", "get after destroy served a key from a warm cache");
174
+ },
175
+ ],
176
+ [
177
+ "concurrent getOrCreate of one new subject returns one key",
178
+ async () => {
179
+ const [a, b, c] = await Promise.all([
180
+ store.getOrCreate("k-race"),
181
+ store.getOrCreate("k-race"),
182
+ store.getOrCreate("k-race"),
183
+ ]);
184
+ if (!same(a, b) || !same(b, c))
185
+ fail("create-race", "concurrent getOrCreate returned different keys (create is not atomic)");
186
+ if (!same(a, await store.get("k-race")))
187
+ fail("create-race", "the stored key is not the one concurrent callers received");
188
+ },
189
+ ],
190
+ [
191
+ "destroy is idempotent and works on an absent subject",
192
+ async () => {
193
+ await store.destroy("k-d");
194
+ await store.destroy("k-never");
195
+ if ((await store.get("k-never")) !== null)
196
+ fail("destroy-absent", "an absent subject has a key");
197
+ },
198
+ ],
199
+ ];
200
+ for (const [name, run] of cases) {
201
+ try {
202
+ await run();
203
+ }
204
+ catch (err) {
205
+ fail("store-threw", `${name}: ${err instanceof Error ? err.message : String(err)}`);
206
+ }
207
+ }
208
+ return findings;
209
+ }
210
+ //# sourceMappingURL=seenCrypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seenCrypto.js","sourceRoot":"","sources":["../src/seenCrypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import type { PinsExtra } from "./lineage";
2
+ import type { RetentionPolicy } from "./retention";
3
+ import { type SeenLog, type SeenRefusal, type SeenUnreadable } from "./seen";
4
+ export interface SeenGcOptions {
5
+ /** Blobs touched within this many ms before the pass began are never swept. MUST exceed one `record()`'s duration. */
6
+ readonly graceMs: number;
7
+ /**
8
+ * You assert EVERY blob in the log's ContentStore is either rooted by the lineage / the seen logs
9
+ * or named by `extraRoots`. The collector deletes what it cannot find a root for: pointing it at a
10
+ * store that also holds anything else would destroy that data. A literal `true`, so it is a decision.
11
+ */
12
+ readonly ownsContentStore: true;
13
+ /** Addresses this collector cannot see but must keep (other users of the same ContentStore). */
14
+ readonly extraRoots?: () => AsyncIterable<string> | Iterable<string>;
15
+ /**
16
+ * Reclaim old LINEAGE versions in the same pass. Absent (the default), every artifact any version
17
+ * ever cited is rooted (`Lineage.forEachContentRef`), so this collector reclaims only the seen
18
+ * log's value blobs. With a policy, the lineage half of the root set is `Lineage.pins(policy)` plus
19
+ * the versions the live views still name, so versions the policy dropped (and not a viewer's) stop
20
+ * being rooted and are swept. Use this when ONE collector owns the whole store; use
21
+ * `Lineage.pins` + loom's `sweepUnpinnedContent` when loom's sweep owns it and pass it
22
+ * `collectSeenRoots(log)` as `extra`. Never run both against the same store with different roots.
23
+ */
24
+ readonly lineageRetention?: RetentionPolicy;
25
+ /** Refuse (before deleting anything) if more than this many distinct addresses are live. Default 5,000,000. */
26
+ readonly maxMarked?: number;
27
+ /** Blobs per `listPage`. Default 500. */
28
+ readonly pageSize?: number;
29
+ /**
30
+ * Proceed although some live-window stream / record / sealed ref could not be read. OPT-IN MEANS
31
+ * "I ACCEPT SWEEPING WHAT THOSE CITE": their blobs are unrooted and WILL be deleted once past the
32
+ * grace period (for a rolling upgrade, finish the upgrade and rerun instead). Default: refuse.
33
+ * A viewer whose key is ABSENT (erased) is not unreadable: that is the intended shred path.
34
+ */
35
+ readonly allowUnreadable?: boolean;
36
+ }
37
+ export interface SeenGcReport {
38
+ /** Distinct live addresses found. */
39
+ readonly marked: number;
40
+ /** Blobs older than the cutoff that were examined. */
41
+ readonly scanned: number;
42
+ /** Blobs deleted. */
43
+ readonly deleted: number;
44
+ /** Unrooted blobs spared because they were touched at or after the cutoff (in grace). */
45
+ readonly spared: number;
46
+ readonly cutoffMs: number;
47
+ /** What could not be read (non-zero only with `allowUnreadable: true`). */
48
+ readonly unreadable: SeenUnreadable;
49
+ }
50
+ export type SeenGcResult = {
51
+ readonly ok: true;
52
+ readonly report: SeenGcReport;
53
+ } | {
54
+ readonly ok: false;
55
+ readonly refusal: SeenRefusal;
56
+ };
57
+ /** Run one collection pass over `log`'s content store. See the header for the contract. */
58
+ export declare function collectSeenGarbage(log: SeenLog, opts: SeenGcOptions): Promise<SeenGcResult>;
59
+ /**
60
+ * The seen log's share of a shared content store's root set, for `Lineage.pins(policy, extra)`:
61
+ * the sealed value blobs of every live view and the (experience, version) each live view reads.
62
+ *
63
+ * roots: () => lineage.pins(policy, await collectSeenRoots(seenLog)) // sweepUnpinnedContent
64
+ *
65
+ * With `reclaimOrphans: { completeScan: true }` loom erases EVERYTHING in the store no root names, so
66
+ * the roots must come from every user of it (this seen log, other lineages, loom's executions). THROWS
67
+ * if anything in the live window could not be read (a root set that silently omits what it could not
68
+ * open would delete it): fix or finish the upgrade, or pass `allowUnreadable: true` to accept that.
69
+ */
70
+ export declare function collectSeenRoots(log: SeenLog, opts?: {
71
+ readonly allowUnreadable?: boolean;
72
+ }): Promise<Required<Pick<PinsExtra, "keepVersions" | "keepAddresses">>>;
73
+ //# sourceMappingURL=seenGc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seenGc.d.ts","sourceRoot":"","sources":["../src/seenGc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAuB,MAAM,QAAQ,CAAC;AA+BlG,MAAM,WAAW,aAAa;IAC5B,sHAAsH;IACtH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAChC,gGAAgG;IAChG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrE;;;;;;;;OAQG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,eAAe,CAAC;IAC5C,+GAA+G;IAC/G,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;CACrC;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAY1D,2FAA2F;AAC3F,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA0GjG;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,OAAO,EACZ,IAAI,GAAE;IAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CActE"}
package/dist/seenGc.js ADDED
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.collectSeenGarbage = collectSeenGarbage;
4
+ exports.collectSeenRoots = collectSeenRoots;
5
+ const seen_1 = require("./seen");
6
+ const no = (code, message) => ({
7
+ ok: false,
8
+ refusal: {
9
+ kind: "refused",
10
+ finding: { code, severity: "error", message },
11
+ code,
12
+ message,
13
+ },
14
+ });
15
+ /** Run one collection pass over `log`'s content store. See the header for the contract. */
16
+ async function collectSeenGarbage(log, opts) {
17
+ if (opts?.ownsContentStore !== true)
18
+ return no("gc-ownership-unasserted", "ownsContentStore: true is required: the sweep deletes unrooted blobs");
19
+ if (!Number.isFinite(opts.graceMs) || opts.graceMs < 0)
20
+ return no("gc-grace-invalid", "graceMs must be a non-negative number of milliseconds");
21
+ const maxMarked = opts.maxMarked ?? 5_000_000;
22
+ const pageSize = opts.pageSize ?? 500;
23
+ if (!Number.isSafeInteger(maxMarked) ||
24
+ maxMarked < 1 ||
25
+ !Number.isSafeInteger(pageSize) ||
26
+ pageSize < 1)
27
+ return no("gc-options-invalid", "maxMarked and pageSize must be positive integers");
28
+ const content = log.contentStore;
29
+ if (content.listPage === undefined ||
30
+ content.deleteIfUntouchedSince === undefined ||
31
+ content.touchClock === undefined)
32
+ return no("gc-content-store-unsupported", "the ContentStore must implement listPage, deleteIfUntouchedSince and touchClock (SPI 1.3.0): without a touch time a young blob cannot be told from an orphan");
33
+ const marked = new Set();
34
+ const visit = (address) => {
35
+ marked.add(address);
36
+ if (marked.size > maxMarked)
37
+ throw new Error("maxMarked exceeded");
38
+ };
39
+ let cutoffMs;
40
+ let unreadable = {
41
+ streams: 0,
42
+ records: 0,
43
+ refs: 0,
44
+ examples: { streams: [], records: [], refs: [] },
45
+ };
46
+ try {
47
+ // The clock is read BEFORE marking: anything touched after this instant is spared, so a blob
48
+ // written while we mark (whose manifest we may have read too early to see) survives.
49
+ cutoffMs = (await content.touchClock()) - opts.graceMs;
50
+ const versions = new Map();
51
+ unreadable = await log.forEachLiveRef(visit, (experienceId, versionHash) => versions.set(`${experienceId}\u0000${versionHash}`, { experienceId, versionHash }));
52
+ if (opts.lineageRetention === undefined)
53
+ await log.lineageOf.forEachContentRef(visit);
54
+ else
55
+ for await (const a of log.lineageOf.pins(opts.lineageRetention, {
56
+ keepVersions: versions.values(),
57
+ }))
58
+ visit(a);
59
+ if (opts.extraRoots !== undefined)
60
+ for await (const a of opts.extraRoots())
61
+ visit(a);
62
+ }
63
+ catch (err) {
64
+ return no("gc-roots-unavailable", `the root set could not be established (nothing was deleted): ${err instanceof Error ? err.message : String(err)}`);
65
+ }
66
+ if (unreadable.streams + unreadable.records + unreadable.refs > 0 &&
67
+ opts.allowUnreadable !== true)
68
+ return no("gc-unreadable-record", `${unreadable.streams} stream(s), ${unreadable.records} record(s) and ${unreadable.refs} sealed ref(s) in the live window could not be read, so what they cite is unrooted (nothing was deleted). Fix or finish the upgrade and rerun, or pass allowUnreadable: true to sweep it. Offenders (first ${seen_1.UNREADABLE_EXAMPLES} per kind): streams [${unreadable.examples.streams.join(", ")}], records [${unreadable.examples.records.join(", ")}], refs [${unreadable.examples.refs.join(", ")}]`);
69
+ let scanned = 0;
70
+ let deleted = 0;
71
+ let spared = 0;
72
+ try {
73
+ let cursor;
74
+ for (;;) {
75
+ const page = await content.listPage({
76
+ ...(cursor !== undefined && { cursor }),
77
+ limit: pageSize,
78
+ });
79
+ for (const entry of page.entries) {
80
+ if (marked.has(entry.address))
81
+ continue;
82
+ // 0 = unknown touch time (never orphan-eligible); at/after the cutoff = young or just touched
83
+ if (entry.touchedAt === 0 || !(entry.touchedAt < cutoffMs)) {
84
+ spared += 1;
85
+ continue;
86
+ }
87
+ scanned += 1;
88
+ if (await content.deleteIfUntouchedSince({ __loomContent: entry.address }, cutoffMs))
89
+ deleted += 1;
90
+ else
91
+ spared += 1; // touched between the listing and the delete
92
+ }
93
+ if (page.nextCursor === undefined || page.nextCursor === cursor)
94
+ break;
95
+ cursor = page.nextCursor;
96
+ }
97
+ }
98
+ catch (err) {
99
+ return no("gc-sweep-interrupted", `the sweep stopped after deleting ${deleted} blobs (safe to rerun): ${err instanceof Error ? err.message : String(err)}`);
100
+ }
101
+ return {
102
+ ok: true,
103
+ report: { marked: marked.size, scanned, deleted, spared, cutoffMs, unreadable },
104
+ };
105
+ }
106
+ /**
107
+ * The seen log's share of a shared content store's root set, for `Lineage.pins(policy, extra)`:
108
+ * the sealed value blobs of every live view and the (experience, version) each live view reads.
109
+ *
110
+ * roots: () => lineage.pins(policy, await collectSeenRoots(seenLog)) // sweepUnpinnedContent
111
+ *
112
+ * With `reclaimOrphans: { completeScan: true }` loom erases EVERYTHING in the store no root names, so
113
+ * the roots must come from every user of it (this seen log, other lineages, loom's executions). THROWS
114
+ * if anything in the live window could not be read (a root set that silently omits what it could not
115
+ * open would delete it): fix or finish the upgrade, or pass `allowUnreadable: true` to accept that.
116
+ */
117
+ async function collectSeenRoots(log, opts = {}) {
118
+ const addresses = new Set();
119
+ const versions = new Map();
120
+ const unreadable = await log.forEachLiveRef((a) => addresses.add(a), (experienceId, versionHash) => versions.set(`${experienceId}\u0000${versionHash}`, { experienceId, versionHash }));
121
+ const n = unreadable.streams + unreadable.records + unreadable.refs;
122
+ if (n > 0 && opts.allowUnreadable !== true)
123
+ throw new Error(`collectSeenRoots: ${n} stream(s)/record(s)/sealed ref(s) in the live window could not be read, so what they cite would be unrooted (examples: ${[...unreadable.examples.streams, ...unreadable.examples.records, ...unreadable.examples.refs].slice(0, seen_1.UNREADABLE_EXAMPLES).join(", ")}). Nothing was collected; pass allowUnreadable: true to sweep it anyway`);
124
+ return { keepVersions: [...versions.values()], keepAddresses: [...addresses] };
125
+ }
126
+ //# sourceMappingURL=seenGc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seenGc.js","sourceRoot":"","sources":["../src/seenGc.ts"],"names":[],"mappings":"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"}