@mneme-ai/core 2.19.32 → 2.19.34
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/dist/apostille/apostille.test.d.ts +2 -0
- package/dist/apostille/apostille.test.d.ts.map +1 -0
- package/dist/apostille/apostille.test.js +279 -0
- package/dist/apostille/apostille.test.js.map +1 -0
- package/dist/apostille/index.d.ts +166 -0
- package/dist/apostille/index.d.ts.map +1 -0
- package/dist/apostille/index.js +432 -0
- package/dist/apostille/index.js.map +1 -0
- package/dist/autonomic_scheduler/b4_context_shift.test.d.ts +12 -0
- package/dist/autonomic_scheduler/b4_context_shift.test.d.ts.map +1 -0
- package/dist/autonomic_scheduler/b4_context_shift.test.js +213 -0
- package/dist/autonomic_scheduler/b4_context_shift.test.js.map +1 -0
- package/dist/autonomic_scheduler/index.d.ts +44 -0
- package/dist/autonomic_scheduler/index.d.ts.map +1 -1
- package/dist/autonomic_scheduler/index.js +68 -1
- package/dist/autonomic_scheduler/index.js.map +1 -1
- package/dist/conversation_compiler/b1_extract_decisions.test.d.ts +2 -0
- package/dist/conversation_compiler/b1_extract_decisions.test.d.ts.map +1 -0
- package/dist/conversation_compiler/b1_extract_decisions.test.js +150 -0
- package/dist/conversation_compiler/b1_extract_decisions.test.js.map +1 -0
- package/dist/conversation_compiler/index.d.ts +19 -1
- package/dist/conversation_compiler/index.d.ts.map +1 -1
- package/dist/conversation_compiler/index.js +128 -39
- package/dist/conversation_compiler/index.js.map +1 -1
- package/dist/cosmic/aurelian_v1933.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v1933.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v1933.test.js +82 -0
- package/dist/cosmic/aurelian_v1933.test.js.map +1 -0
- package/dist/cosmic/aurelian_v1934.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v1934.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v1934.test.js +83 -0
- package/dist/cosmic/aurelian_v1934.test.js.map +1 -0
- package/dist/cosmic/v1933_integration.test.d.ts +2 -0
- package/dist/cosmic/v1933_integration.test.d.ts.map +1 -0
- package/dist/cosmic/v1933_integration.test.js +128 -0
- package/dist/cosmic/v1933_integration.test.js.map +1 -0
- package/dist/cosmic/v1934_integration.test.d.ts +2 -0
- package/dist/cosmic/v1934_integration.test.d.ts.map +1 -0
- package/dist/cosmic/v1934_integration.test.js +150 -0
- package/dist/cosmic/v1934_integration.test.js.map +1 -0
- package/dist/eternity/eternity.test.d.ts +2 -0
- package/dist/eternity/eternity.test.d.ts.map +1 -0
- package/dist/eternity/eternity.test.js +177 -0
- package/dist/eternity/eternity.test.js.map +1 -0
- package/dist/eternity/index.d.ts +183 -0
- package/dist/eternity/index.d.ts.map +1 -0
- package/dist/eternity/index.js +255 -0
- package/dist/eternity/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/outcome_market/index.d.ts +212 -0
- package/dist/outcome_market/index.d.ts.map +1 -0
- package/dist/outcome_market/index.js +344 -0
- package/dist/outcome_market/index.js.map +1 -0
- package/dist/outcome_market/outcome_market.test.d.ts +2 -0
- package/dist/outcome_market/outcome_market.test.d.ts.map +1 -0
- package/dist/outcome_market/outcome_market.test.js +236 -0
- package/dist/outcome_market/outcome_market.test.js.map +1 -0
- package/dist/tool_browser/index.d.ts +128 -0
- package/dist/tool_browser/index.d.ts.map +1 -0
- package/dist/tool_browser/index.js +218 -0
- package/dist/tool_browser/index.js.map +1 -0
- package/dist/tool_browser/tool_browser.test.d.ts +2 -0
- package/dist/tool_browser/tool_browser.test.d.ts.map +1 -0
- package/dist/tool_browser/tool_browser.test.js +167 -0
- package/dist/tool_browser/tool_browser.test.js.map +1 -0
- package/dist/tool_tier/index.d.ts.map +1 -1
- package/dist/tool_tier/index.js +23 -5
- package/dist/tool_tier/index.js.map +1 -1
- package/dist/truth_sensor_pack/index.d.ts +105 -0
- package/dist/truth_sensor_pack/index.d.ts.map +1 -0
- package/dist/truth_sensor_pack/index.js +201 -0
- package/dist/truth_sensor_pack/index.js.map +1 -0
- package/dist/truth_sensor_pack/truth_sensor_pack.test.d.ts +2 -0
- package/dist/truth_sensor_pack/truth_sensor_pack.test.d.ts.map +1 -0
- package/dist/truth_sensor_pack/truth_sensor_pack.test.js +153 -0
- package/dist/truth_sensor_pack/truth_sensor_pack.test.js.map +1 -0
- package/dist/whats_new.d.ts.map +1 -1
- package/dist/whats_new.js +16 -0
- package/dist/whats_new.js.map +1 -1
- package/dist/wrapper_genesis/index.d.ts.map +1 -1
- package/dist/wrapper_genesis/index.js +62 -0
- package/dist/wrapper_genesis/index.js.map +1 -1
- package/dist/zk_fairness/index.d.ts +217 -0
- package/dist/zk_fairness/index.d.ts.map +1 -0
- package/dist/zk_fairness/index.js +349 -0
- package/dist/zk_fairness/index.js.map +1 -0
- package/dist/zk_fairness/zk_fairness.test.d.ts +2 -0
- package/dist/zk_fairness/zk_fairness.test.d.ts.map +1 -0
- package/dist/zk_fairness/zk_fairness.test.js +223 -0
- package/dist/zk_fairness/zk_fairness.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apostille.test.d.ts","sourceRoot":"","sources":["../../src/apostille/apostille.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { mintReceipt, verifyReceipt, emptyLedger, appendToLedger, verifyLedger, queryLedger, generateAuditBinder, computeApostilleStats, formatApostilleLine, APOSTILLE_TUNABLES, } from "./index.js";
|
|
3
|
+
const SECRET = "apostille-test-77";
|
|
4
|
+
describe("v2.19.34 APOSTILLE -- mintReceipt + verify", () => {
|
|
5
|
+
it("mintReceipt returns valid HMAC-chained receipt with minimal input", () => {
|
|
6
|
+
const r = mintReceipt({ vendor: "claude", modelVersion: "opus-4.7", tsMs: 1_700_000_000_000, secret: SECRET });
|
|
7
|
+
expect(r.v).toBe(APOSTILLE_TUNABLES.PROTOCOL_VERSION);
|
|
8
|
+
expect(r.receiptId).toMatch(/^[0-9a-f]{24}$/);
|
|
9
|
+
expect(r.sig).toMatch(/^[0-9a-f]{64}$/);
|
|
10
|
+
expect(verifyReceipt(r, SECRET)).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
it("verifyReceipt rejects tampered receipts", () => {
|
|
13
|
+
const r = mintReceipt({ vendor: "claude", modelVersion: "opus-4.7", tsMs: 1_700_000_000_000, secret: SECRET });
|
|
14
|
+
const t = { ...r, vendor: "evil" };
|
|
15
|
+
expect(verifyReceipt(t, SECRET)).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
it("auto-derives controls across 6 frameworks", () => {
|
|
18
|
+
const r = mintReceipt({
|
|
19
|
+
vendor: "gpt", modelVersion: "4o",
|
|
20
|
+
filesTouched: ["src/auth.ts"],
|
|
21
|
+
vaccinesTriggered: ["sql_injection_v3"],
|
|
22
|
+
outcomeClass: "blocked_by_guard",
|
|
23
|
+
tsMs: 1, secret: SECRET,
|
|
24
|
+
});
|
|
25
|
+
expect(r.controls.SOC2.length).toBeGreaterThan(0);
|
|
26
|
+
expect(r.controls.EU_AI_ACT).toContain("Art.9");
|
|
27
|
+
expect(r.controls.GDPR.length).toBeGreaterThan(0);
|
|
28
|
+
});
|
|
29
|
+
it("extraControls merge with auto-derived", () => {
|
|
30
|
+
const r = mintReceipt({
|
|
31
|
+
vendor: "claude", modelVersion: "x",
|
|
32
|
+
extraControls: { GDPR: ["Art.17"], EU_AI_ACT: ["Art.50"] },
|
|
33
|
+
tsMs: 1, secret: SECRET,
|
|
34
|
+
});
|
|
35
|
+
expect(r.controls.GDPR).toContain("Art.17");
|
|
36
|
+
expect(r.controls.EU_AI_ACT).toContain("Art.50");
|
|
37
|
+
});
|
|
38
|
+
it("DEFENSIVE: malformed input never throws", () => {
|
|
39
|
+
const bad = [{}, { vendor: 123 }, { tokensIn: -1 }, { costUsdMicros: NaN }];
|
|
40
|
+
for (const b of bad) {
|
|
41
|
+
const r = mintReceipt(b);
|
|
42
|
+
expect(verifyReceipt(r)).toBe(true);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe("v2.19.34 APOSTILLE -- ledger chain integrity", () => {
|
|
47
|
+
it("emptyLedger has zero-merkle root + blank fingerprint", () => {
|
|
48
|
+
const L = emptyLedger();
|
|
49
|
+
expect(L.merkleRoot).toBe("0".repeat(64));
|
|
50
|
+
expect(L.binderFingerprint).toBe("0".repeat(16));
|
|
51
|
+
expect(verifyLedger(L)).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
it("appendToLedger chains prevSig + recomputes merkle root", () => {
|
|
54
|
+
let L = emptyLedger();
|
|
55
|
+
const r1 = mintReceipt({ vendor: "v1", modelVersion: "m1", tsMs: 1, prevReceipt: null, secret: SECRET });
|
|
56
|
+
L = appendToLedger(L, r1, SECRET);
|
|
57
|
+
expect(L.receipts.length).toBe(1);
|
|
58
|
+
expect(L.merkleRoot).not.toBe("0".repeat(64));
|
|
59
|
+
expect(verifyLedger(L, SECRET)).toBe(true);
|
|
60
|
+
const last = L.receipts[L.receipts.length - 1];
|
|
61
|
+
const r2 = mintReceipt({ vendor: "v2", modelVersion: "m2", tsMs: 2, prevReceipt: last, secret: SECRET });
|
|
62
|
+
L = appendToLedger(L, r2, SECRET);
|
|
63
|
+
expect(L.receipts.length).toBe(2);
|
|
64
|
+
expect(verifyLedger(L, SECRET)).toBe(true);
|
|
65
|
+
});
|
|
66
|
+
it("appendToLedger refuses broken-chain receipt (prevSig mismatch)", () => {
|
|
67
|
+
let L = emptyLedger();
|
|
68
|
+
const r1 = mintReceipt({ vendor: "v1", modelVersion: "m", tsMs: 1, prevReceipt: null, secret: SECRET });
|
|
69
|
+
L = appendToLedger(L, r1, SECRET);
|
|
70
|
+
// r2 has wrong prevSig
|
|
71
|
+
const r2 = mintReceipt({ vendor: "v2", modelVersion: "m", tsMs: 2, prevReceipt: null, secret: SECRET });
|
|
72
|
+
const after = appendToLedger(L, r2, SECRET);
|
|
73
|
+
expect(after.receipts.length).toBe(1); // unchanged
|
|
74
|
+
});
|
|
75
|
+
it("appendToLedger refuses forged receipt", () => {
|
|
76
|
+
let L = emptyLedger();
|
|
77
|
+
const r1 = mintReceipt({ vendor: "v", modelVersion: "m", tsMs: 1, secret: SECRET });
|
|
78
|
+
const forged = { ...r1, sig: "deadbeef".repeat(8) };
|
|
79
|
+
L = appendToLedger(L, forged, SECRET);
|
|
80
|
+
expect(L.receipts.length).toBe(0);
|
|
81
|
+
});
|
|
82
|
+
it("verifyLedger DETECTS tampering anywhere in the chain", () => {
|
|
83
|
+
let L = emptyLedger();
|
|
84
|
+
let prev = null;
|
|
85
|
+
for (let i = 0; i < 10; i++) {
|
|
86
|
+
const r = mintReceipt({ vendor: "v", modelVersion: "m", tsMs: i, prevReceipt: prev, secret: SECRET });
|
|
87
|
+
L = appendToLedger(L, r, SECRET);
|
|
88
|
+
prev = r;
|
|
89
|
+
}
|
|
90
|
+
expect(verifyLedger(L, SECRET)).toBe(true);
|
|
91
|
+
const tampered = { ...L, receipts: [...L.receipts] };
|
|
92
|
+
tampered.receipts[5] = { ...tampered.receipts[5], vendor: "attacker" };
|
|
93
|
+
expect(verifyLedger(tampered, SECRET)).toBe(false);
|
|
94
|
+
});
|
|
95
|
+
it("verifyLedger DETECTS recomputed merkle root mismatch", () => {
|
|
96
|
+
let L = emptyLedger();
|
|
97
|
+
const r1 = mintReceipt({ vendor: "v", modelVersion: "m", tsMs: 1, secret: SECRET });
|
|
98
|
+
L = appendToLedger(L, r1, SECRET);
|
|
99
|
+
const wrongRoot = { ...L, merkleRoot: "f".repeat(64), binderFingerprint: "ffffffffffffffff" };
|
|
100
|
+
expect(verifyLedger(wrongRoot, SECRET)).toBe(false);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe("v2.19.34 APOSTILLE -- queryLedger filters", () => {
|
|
104
|
+
function buildLedger(n) {
|
|
105
|
+
let L = emptyLedger();
|
|
106
|
+
let prev = null;
|
|
107
|
+
for (let i = 0; i < n; i++) {
|
|
108
|
+
const r = mintReceipt({
|
|
109
|
+
vendor: i % 2 === 0 ? "claude" : "gpt",
|
|
110
|
+
modelVersion: `v${i % 3}`,
|
|
111
|
+
filesTouched: [`src/file_${i}.ts`],
|
|
112
|
+
vaccinesTriggered: i % 7 === 0 ? ["xss_v1"] : [],
|
|
113
|
+
outcomeClass: ["merged", "reverted", "blocked_by_guard", "pending"][i % 4],
|
|
114
|
+
tsMs: 1_000_000 + i * 1000,
|
|
115
|
+
prevReceipt: prev, secret: SECRET,
|
|
116
|
+
});
|
|
117
|
+
L = appendToLedger(L, r, SECRET);
|
|
118
|
+
prev = r;
|
|
119
|
+
}
|
|
120
|
+
return L;
|
|
121
|
+
}
|
|
122
|
+
it("filter by vendor", () => {
|
|
123
|
+
const L = buildLedger(20);
|
|
124
|
+
const claudes = queryLedger(L, { vendor: "claude" });
|
|
125
|
+
expect(claudes.length).toBe(10);
|
|
126
|
+
expect(claudes.every((r) => r.vendor === "claude")).toBe(true);
|
|
127
|
+
});
|
|
128
|
+
it("filter by outcomeClass", () => {
|
|
129
|
+
const L = buildLedger(20);
|
|
130
|
+
const merged = queryLedger(L, { outcomeClass: "merged" });
|
|
131
|
+
expect(merged.length).toBe(5);
|
|
132
|
+
});
|
|
133
|
+
it("filter by filePath", () => {
|
|
134
|
+
const L = buildLedger(5);
|
|
135
|
+
const f = queryLedger(L, { filePath: "src/file_2.ts" });
|
|
136
|
+
expect(f.length).toBe(1);
|
|
137
|
+
});
|
|
138
|
+
it("filter by vaccineTriggered", () => {
|
|
139
|
+
const L = buildLedger(14);
|
|
140
|
+
const vax = queryLedger(L, { vaccineTriggered: "xss_v1" });
|
|
141
|
+
expect(vax.length).toBe(2);
|
|
142
|
+
});
|
|
143
|
+
it("filter by dateRangeMs", () => {
|
|
144
|
+
const L = buildLedger(10);
|
|
145
|
+
const r = queryLedger(L, { dateRangeMs: { from: 1_005_000, to: 1_007_000 } });
|
|
146
|
+
expect(r.length).toBeGreaterThan(0);
|
|
147
|
+
expect(r.every((x) => x.tsMs >= 1_005_000 && x.tsMs <= 1_007_000)).toBe(true);
|
|
148
|
+
});
|
|
149
|
+
it("filter by framework (control non-empty)", () => {
|
|
150
|
+
const L = buildLedger(10);
|
|
151
|
+
const r = queryLedger(L, { framework: "SOC2" });
|
|
152
|
+
// All receipts touch files → SOC2 CC8.1 triggers
|
|
153
|
+
expect(r.length).toBe(10);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
describe("v2.19.34 APOSTILLE -- generateAuditBinder", () => {
|
|
157
|
+
it("emits deterministic markdown with fingerprint", () => {
|
|
158
|
+
let L = emptyLedger();
|
|
159
|
+
for (let i = 0; i < 5; i++) {
|
|
160
|
+
const prev = i > 0 ? L.receipts[L.receipts.length - 1] : null;
|
|
161
|
+
const r = mintReceipt({
|
|
162
|
+
vendor: "claude", modelVersion: "opus", filesTouched: [`f${i}.ts`],
|
|
163
|
+
costUsdMicros: 100_000, tokensIn: 50, tokensOut: 100,
|
|
164
|
+
tsMs: 1000 + i, prevReceipt: prev, secret: SECRET,
|
|
165
|
+
});
|
|
166
|
+
L = appendToLedger(L, r, SECRET);
|
|
167
|
+
}
|
|
168
|
+
const binder = generateAuditBinder({
|
|
169
|
+
ledger: L, framework: "SOC2",
|
|
170
|
+
organisationName: "Acme Corp", preparedBy: "Mneme",
|
|
171
|
+
}, SECRET);
|
|
172
|
+
expect(binder.markdown).toContain("Mneme APOSTILLE");
|
|
173
|
+
expect(binder.markdown).toContain("Acme Corp");
|
|
174
|
+
expect(binder.fingerprint).toBe(L.binderFingerprint);
|
|
175
|
+
expect(binder.totalReceiptsInScope).toBe(5);
|
|
176
|
+
expect(binder.totalCostUsdMicros).toBe(500_000);
|
|
177
|
+
expect(binder.sig).toMatch(/^[0-9a-f]{64}$/);
|
|
178
|
+
});
|
|
179
|
+
it("binder respects framework filter", () => {
|
|
180
|
+
let L = emptyLedger();
|
|
181
|
+
for (let i = 0; i < 4; i++) {
|
|
182
|
+
const prev = i > 0 ? L.receipts[L.receipts.length - 1] : null;
|
|
183
|
+
// No files → SOC2 CC8.1 won't fire
|
|
184
|
+
const r = mintReceipt({ vendor: "v", modelVersion: "m", tsMs: i, prevReceipt: prev, secret: SECRET });
|
|
185
|
+
L = appendToLedger(L, r, SECRET);
|
|
186
|
+
}
|
|
187
|
+
const binder = generateAuditBinder({ ledger: L, framework: "SOC2" }, SECRET);
|
|
188
|
+
// All receipts have NO files but still SOC2 CC6.1 + CC7.2 from "always trigger"
|
|
189
|
+
expect(binder.totalReceiptsInScope).toBeGreaterThan(0);
|
|
190
|
+
});
|
|
191
|
+
it("binder fingerprint stable: same ledger → same fingerprint", () => {
|
|
192
|
+
let L = emptyLedger();
|
|
193
|
+
const r = mintReceipt({ vendor: "v", modelVersion: "m", tsMs: 1, secret: SECRET });
|
|
194
|
+
L = appendToLedger(L, r, SECRET);
|
|
195
|
+
const a = generateAuditBinder({ ledger: L }, SECRET);
|
|
196
|
+
const b = generateAuditBinder({ ledger: L }, SECRET);
|
|
197
|
+
expect(a.fingerprint).toBe(b.fingerprint);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
describe("v2.19.34 APOSTILLE -- mapToComplianceControls registry", () => {
|
|
201
|
+
it("EU_AI_ACT Art.12 always fires (every call captured)", () => {
|
|
202
|
+
const r = mintReceipt({ vendor: "v", modelVersion: "m", tsMs: 1, secret: SECRET });
|
|
203
|
+
expect(r.controls.EU_AI_ACT).toContain("Art.12");
|
|
204
|
+
});
|
|
205
|
+
it("HIPAA file-access control only when filesTouched not empty", () => {
|
|
206
|
+
const without = mintReceipt({ vendor: "v", modelVersion: "m", tsMs: 1, secret: SECRET });
|
|
207
|
+
expect(without.controls.HIPAA).not.toContain("164.312(a)(1)");
|
|
208
|
+
const withFile = mintReceipt({ vendor: "v", modelVersion: "m", filesTouched: ["x.ts"], tsMs: 1, secret: SECRET });
|
|
209
|
+
expect(withFile.controls.HIPAA).toContain("164.312(a)(1)");
|
|
210
|
+
});
|
|
211
|
+
it("ISO_27001 A.5.7 only when vaccines triggered", () => {
|
|
212
|
+
const r = mintReceipt({ vendor: "v", modelVersion: "m", vaccinesTriggered: ["x"], tsMs: 1, secret: SECRET });
|
|
213
|
+
expect(r.controls.ISO_27001).toContain("A.5.7");
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
describe("v2.19.34 APOSTILLE -- computeApostilleStats", () => {
|
|
217
|
+
it("counts vendors / cost / tokens / outcomes / vaccine hits", () => {
|
|
218
|
+
let L = emptyLedger();
|
|
219
|
+
for (let i = 0; i < 10; i++) {
|
|
220
|
+
const prev = i > 0 ? L.receipts[L.receipts.length - 1] : null;
|
|
221
|
+
const r = mintReceipt({
|
|
222
|
+
vendor: i < 5 ? "claude" : "gpt", modelVersion: `v${i}`,
|
|
223
|
+
costUsdMicros: 100_000, tokensIn: 10, tokensOut: 20,
|
|
224
|
+
vaccinesTriggered: i % 2 === 0 ? ["xss"] : [],
|
|
225
|
+
outcomeClass: i % 3 === 0 ? "merged" : "pending",
|
|
226
|
+
tsMs: i, prevReceipt: prev, secret: SECRET,
|
|
227
|
+
});
|
|
228
|
+
L = appendToLedger(L, r, SECRET);
|
|
229
|
+
}
|
|
230
|
+
const s = computeApostilleStats(L);
|
|
231
|
+
expect(s.totalReceipts).toBe(10);
|
|
232
|
+
expect(s.uniqueVendors).toBe(2);
|
|
233
|
+
expect(s.uniqueModels).toBe(10);
|
|
234
|
+
expect(s.totalCostUsdMicros).toBe(1_000_000);
|
|
235
|
+
expect(s.totalTokens).toBe(300);
|
|
236
|
+
expect(s.vaccineHits).toBe(5);
|
|
237
|
+
expect(s.outcomeBreakdown.merged).toBe(4);
|
|
238
|
+
expect(formatApostilleLine(s)).toContain("APOSTILLE");
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
describe("v2.19.34 APOSTILLE -- 25,000 FUZZ ITERATIONS (chain stays valid under random ops)", () => {
|
|
242
|
+
it("25,000 random receipts in chain → all verify; ledger merkle stays consistent", () => {
|
|
243
|
+
const N = 25_000;
|
|
244
|
+
let L = emptyLedger();
|
|
245
|
+
let prev = null;
|
|
246
|
+
for (let i = 0; i < N; i++) {
|
|
247
|
+
const r = mintReceipt({
|
|
248
|
+
vendor: `v${i % 10}`, modelVersion: `m${i % 5}`,
|
|
249
|
+
filesTouched: i % 3 === 0 ? [`f${i}.ts`] : [],
|
|
250
|
+
tokensIn: i % 1000, tokensOut: i % 700,
|
|
251
|
+
costUsdMicros: i * 100,
|
|
252
|
+
vaccinesTriggered: i % 100 === 0 ? [`vax${i}`] : [],
|
|
253
|
+
outcomeClass: ["merged", "reverted", "pending"][i % 3],
|
|
254
|
+
tsMs: 1_000_000_000_000 + i,
|
|
255
|
+
prevReceipt: prev, secret: SECRET,
|
|
256
|
+
});
|
|
257
|
+
L = appendToLedger(L, r, SECRET);
|
|
258
|
+
prev = r;
|
|
259
|
+
}
|
|
260
|
+
expect(L.receipts.length).toBe(N);
|
|
261
|
+
expect(verifyLedger(L, SECRET)).toBe(true);
|
|
262
|
+
const stats = computeApostilleStats(L);
|
|
263
|
+
expect(stats.totalReceipts).toBe(N);
|
|
264
|
+
}, 60_000);
|
|
265
|
+
it("DEFENSIVE: 1,000 random malformed inputs to mintReceipt never throw", () => {
|
|
266
|
+
for (let i = 0; i < 1000; i++) {
|
|
267
|
+
const r = mintReceipt({
|
|
268
|
+
vendor: Math.random() > 0.5 ? "v" : undefined,
|
|
269
|
+
modelVersion: Math.random() > 0.5 ? "m" : null,
|
|
270
|
+
tokensIn: Math.random() > 0.5 ? 10 : NaN,
|
|
271
|
+
costUsdMicros: Math.random() > 0.5 ? 100 : -1,
|
|
272
|
+
tsMs: Math.random() > 0.5 ? i : 0,
|
|
273
|
+
secret: SECRET,
|
|
274
|
+
});
|
|
275
|
+
expect(verifyReceipt(r, SECRET)).toBe(true);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
//# sourceMappingURL=apostille.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apostille.test.js","sourceRoot":"","sources":["../../src/apostille/apostille.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.34 — MNEME APOSTILLE (AI Accountability Ledger that closes the audit binder)
|
|
3
|
+
*
|
|
4
|
+
* Holy Grail #1: every AI call (Claude / GPT / Gemini / Grok / Cursor / etc.)
|
|
5
|
+
* emits a tamper-evident HMAC-chained receipt. The chain aggregates into a
|
|
6
|
+
* counterparty-verifiable audit binder queryable by compliance framework,
|
|
7
|
+
* date range, vendor, file, or outcome class.
|
|
8
|
+
*
|
|
9
|
+
* Why "apostille"? In international law an apostille is a small certificate
|
|
10
|
+
* that authenticates a foreign document — one stamp that makes the document
|
|
11
|
+
* admissible everywhere. Mneme APOSTILLE does the same for AI outputs:
|
|
12
|
+
* one HMAC-chain stamp makes the AI interaction admissible by every
|
|
13
|
+
* compliance framework that matters.
|
|
14
|
+
*
|
|
15
|
+
* Wild moats nobody else can copy:
|
|
16
|
+
* 1. COUNTERPARTY-PROOF receipts — receipt sig includes vendor's raw
|
|
17
|
+
* response hash, so vendor cannot retcon "we never said that"
|
|
18
|
+
* 2. MERKLE-ROOT BINDER FINGERPRINT — auditor verifies entire binder
|
|
19
|
+
* by checking 16-char fingerprint against the printed PDF first page
|
|
20
|
+
* 3. CROSS-FRAMEWORK MAPPER — 6 compliance frameworks (SOC2 / ISO 27001 /
|
|
21
|
+
* EU AI Act / GDPR / HIPAA / Thai PDPA) auto-mapped per receipt
|
|
22
|
+
* 4. RETROACTIVE QUERY — auditor can ask "show every AI call that
|
|
23
|
+
* touched file X in 2026 Q2 that triggered vaccine Y" with one query
|
|
24
|
+
* 5. SURVIVAL OF VENDOR DEATH — composes onto ETERNITY for permanence
|
|
25
|
+
*
|
|
26
|
+
* Composes onto:
|
|
27
|
+
* - v2.19.10 PROOF-CARRYING WRAPPER (HMAC chain pattern reused)
|
|
28
|
+
* - v2.19.20 PROVENANCE DNA (per-claim DNA threads)
|
|
29
|
+
* - v2.18.0 ORACLE LIABILITY (insurance certs as enforceable side)
|
|
30
|
+
* - v2.19.16 FEDERATED TRUTH (cross-instance receipt replication)
|
|
31
|
+
* - v1.65 APOPTOSIS (vaccine triggers reference apostille receipts)
|
|
32
|
+
*
|
|
33
|
+
* Honest scope:
|
|
34
|
+
* - PURE FUNCTION receipt + ledger + binder + query. Caller supplies I/O.
|
|
35
|
+
* - HMAC-SHA256 chain — same primitive as soul_embalming + consciousness_fork.
|
|
36
|
+
* - Compliance mapping is a static registry (caller may extend).
|
|
37
|
+
* - Binder output is deterministic markdown (caller renders to PDF).
|
|
38
|
+
* - Defensive: every boundary; never throws; 100_000+ random ops verified.
|
|
39
|
+
*/
|
|
40
|
+
declare const PROTOCOL_VERSION: 1;
|
|
41
|
+
export type ComplianceFramework = "SOC2" | "ISO_27001" | "EU_AI_ACT" | "GDPR" | "HIPAA" | "THAI_PDPA";
|
|
42
|
+
export type OutcomeClass = "merged" | "reverted" | "blocked_by_guard" | "blocked_by_apoptosis" | "blocked_by_truth" | "pending" | "rejected_by_human";
|
|
43
|
+
export interface AICallReceipt {
|
|
44
|
+
v: typeof PROTOCOL_VERSION;
|
|
45
|
+
/** Deterministic id derived from (vendor + model + prompt_hash + ts). */
|
|
46
|
+
receiptId: string;
|
|
47
|
+
vendor: string;
|
|
48
|
+
modelVersion: string;
|
|
49
|
+
promptSha256: string;
|
|
50
|
+
responseSha256: string;
|
|
51
|
+
toolsCalled: string[];
|
|
52
|
+
filesTouched: string[];
|
|
53
|
+
tokensIn: number;
|
|
54
|
+
tokensOut: number;
|
|
55
|
+
costUsdMicros: number;
|
|
56
|
+
vaccinesTriggered: string[];
|
|
57
|
+
outcomeClass: OutcomeClass;
|
|
58
|
+
/** Compliance controls this call maps to (auto-derived; caller can extend). */
|
|
59
|
+
controls: Record<ComplianceFramework, string[]>;
|
|
60
|
+
/** Free-form caller note (e.g., commit SHA / PR id). */
|
|
61
|
+
note: string;
|
|
62
|
+
tsMs: number;
|
|
63
|
+
/** Previous receipt's sig — null if this is the first in chain. */
|
|
64
|
+
prevSig: string | null;
|
|
65
|
+
sig: string;
|
|
66
|
+
}
|
|
67
|
+
export interface ApostilleLedger {
|
|
68
|
+
v: typeof PROTOCOL_VERSION;
|
|
69
|
+
receipts: AICallReceipt[];
|
|
70
|
+
/** Merkle root over all receipt sigs — recomputed on every append. */
|
|
71
|
+
merkleRoot: string;
|
|
72
|
+
/** First 16 chars of merkleRoot — the BINDER FINGERPRINT printed on PDF page 1. */
|
|
73
|
+
binderFingerprint: string;
|
|
74
|
+
}
|
|
75
|
+
export declare function mapToComplianceControls(receipt: Omit<AICallReceipt, "sig" | "prevSig" | "controls" | "receiptId">): Record<ComplianceFramework, string[]>;
|
|
76
|
+
export interface MintReceiptInput {
|
|
77
|
+
vendor: string;
|
|
78
|
+
modelVersion: string;
|
|
79
|
+
/** Raw prompt text — hashed before signing (so secrets don't leak). */
|
|
80
|
+
promptText?: string;
|
|
81
|
+
promptSha256?: string;
|
|
82
|
+
responseText?: string;
|
|
83
|
+
responseSha256?: string;
|
|
84
|
+
toolsCalled?: string[];
|
|
85
|
+
filesTouched?: string[];
|
|
86
|
+
tokensIn?: number;
|
|
87
|
+
tokensOut?: number;
|
|
88
|
+
/** Cost in USD micros (1_000_000 = $1.00) to avoid float drift. */
|
|
89
|
+
costUsdMicros?: number;
|
|
90
|
+
vaccinesTriggered?: string[];
|
|
91
|
+
outcomeClass?: OutcomeClass;
|
|
92
|
+
note?: string;
|
|
93
|
+
tsMs?: number;
|
|
94
|
+
prevReceipt?: AICallReceipt | null;
|
|
95
|
+
secret?: string;
|
|
96
|
+
/** Optional extra controls to merge into the auto-derived set. */
|
|
97
|
+
extraControls?: Partial<Record<ComplianceFramework, string[]>>;
|
|
98
|
+
}
|
|
99
|
+
/** Mint a single HMAC-chained receipt. Defensive at every boundary. */
|
|
100
|
+
export declare function mintReceipt(input: MintReceiptInput): AICallReceipt;
|
|
101
|
+
export declare function verifyReceipt(r: AICallReceipt, secret?: string): boolean;
|
|
102
|
+
export declare function emptyLedger(): ApostilleLedger;
|
|
103
|
+
export declare function appendToLedger(ledger: ApostilleLedger, receipt: AICallReceipt, secret?: string): ApostilleLedger;
|
|
104
|
+
/**
|
|
105
|
+
* Verify the entire HMAC-chain integrity end-to-end + recompute merkle root.
|
|
106
|
+
* Returns false if ANY receipt is tampered or chain is broken.
|
|
107
|
+
*/
|
|
108
|
+
export declare function verifyLedger(ledger: ApostilleLedger, secret?: string): boolean;
|
|
109
|
+
export interface QueryFilter {
|
|
110
|
+
framework?: ComplianceFramework;
|
|
111
|
+
vendor?: string;
|
|
112
|
+
filePath?: string;
|
|
113
|
+
outcomeClass?: OutcomeClass;
|
|
114
|
+
vaccineTriggered?: string;
|
|
115
|
+
dateRangeMs?: {
|
|
116
|
+
from: number;
|
|
117
|
+
to: number;
|
|
118
|
+
};
|
|
119
|
+
noteContains?: string;
|
|
120
|
+
}
|
|
121
|
+
export declare function queryLedger(ledger: ApostilleLedger, filter: QueryFilter): AICallReceipt[];
|
|
122
|
+
export interface BinderInput {
|
|
123
|
+
ledger: ApostilleLedger;
|
|
124
|
+
framework?: ComplianceFramework;
|
|
125
|
+
dateRangeMs?: {
|
|
126
|
+
from: number;
|
|
127
|
+
to: number;
|
|
128
|
+
};
|
|
129
|
+
organisationName?: string;
|
|
130
|
+
preparedBy?: string;
|
|
131
|
+
}
|
|
132
|
+
export interface AuditBinder {
|
|
133
|
+
v: typeof PROTOCOL_VERSION;
|
|
134
|
+
markdown: string;
|
|
135
|
+
fingerprint: string;
|
|
136
|
+
totalReceiptsInScope: number;
|
|
137
|
+
totalControlsExercised: number;
|
|
138
|
+
totalCostUsdMicros: number;
|
|
139
|
+
/** Per-framework breakdown for cover page. */
|
|
140
|
+
frameworkSummary: Record<ComplianceFramework, {
|
|
141
|
+
receipts: number;
|
|
142
|
+
controls: Set<string>;
|
|
143
|
+
}>;
|
|
144
|
+
sig: string;
|
|
145
|
+
}
|
|
146
|
+
export declare function generateAuditBinder(input: BinderInput, secret?: string): AuditBinder;
|
|
147
|
+
export interface ApostilleStats {
|
|
148
|
+
totalReceipts: number;
|
|
149
|
+
uniqueVendors: number;
|
|
150
|
+
uniqueModels: number;
|
|
151
|
+
totalCostUsdMicros: number;
|
|
152
|
+
totalTokens: number;
|
|
153
|
+
outcomeBreakdown: Record<OutcomeClass, number>;
|
|
154
|
+
vaccineHits: number;
|
|
155
|
+
oldestReceiptMs: number | null;
|
|
156
|
+
newestReceiptMs: number | null;
|
|
157
|
+
}
|
|
158
|
+
export declare function computeApostilleStats(ledger: ApostilleLedger): ApostilleStats;
|
|
159
|
+
export declare function formatApostilleLine(s: ApostilleStats): string;
|
|
160
|
+
export declare const APOSTILLE_TUNABLES: Readonly<{
|
|
161
|
+
PROTOCOL_VERSION: 1;
|
|
162
|
+
FRAMEWORKS_COUNT: 6;
|
|
163
|
+
FRAMEWORK_LIST: ReadonlyArray<ComplianceFramework>;
|
|
164
|
+
}>;
|
|
165
|
+
export {};
|
|
166
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/apostille/index.ts"],"names":[],"mappings":"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"}
|