@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,432 @@
|
|
|
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
|
+
import { createHash, createHmac, timingSafeEqual } from "node:crypto";
|
|
41
|
+
const PROTOCOL_VERSION = 1;
|
|
42
|
+
// ─── canonical / crypto helpers ───────────────────────────────────────
|
|
43
|
+
function canon(v) {
|
|
44
|
+
if (v === null || typeof v !== "object")
|
|
45
|
+
return JSON.stringify(v);
|
|
46
|
+
if (Array.isArray(v))
|
|
47
|
+
return "[" + v.map(canon).join(",") + "]";
|
|
48
|
+
const keys = Object.keys(v).sort();
|
|
49
|
+
return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
|
|
50
|
+
}
|
|
51
|
+
function defaultSecret() {
|
|
52
|
+
return process.env["MNEME_APOSTILLE_SECRET"] || `mneme-apostille-v${PROTOCOL_VERSION}`;
|
|
53
|
+
}
|
|
54
|
+
function hmacHex(body, secret) {
|
|
55
|
+
return createHmac("sha256", secret).update(canon(body)).digest("hex");
|
|
56
|
+
}
|
|
57
|
+
function sha256Hex(s) {
|
|
58
|
+
return createHash("sha256").update(s, "utf8").digest("hex");
|
|
59
|
+
}
|
|
60
|
+
function safeEqHex(a, b) {
|
|
61
|
+
try {
|
|
62
|
+
return timingSafeEqual(Buffer.from(a, "hex"), Buffer.from(b, "hex"));
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** Pairwise merkle root over an array of hex strings. Deterministic. */
|
|
69
|
+
function merkleRoot(hexes) {
|
|
70
|
+
if (hexes.length === 0)
|
|
71
|
+
return "0".repeat(64);
|
|
72
|
+
let level = hexes.map((h) => Uint8Array.from(Buffer.from(h, "hex")));
|
|
73
|
+
while (level.length > 1) {
|
|
74
|
+
const next = [];
|
|
75
|
+
for (let i = 0; i < level.length; i += 2) {
|
|
76
|
+
const a = level[i];
|
|
77
|
+
const b = i + 1 < level.length ? level[i + 1] : level[i];
|
|
78
|
+
const digest = createHash("sha256").update(Buffer.concat([Buffer.from(a), Buffer.from(b)])).digest();
|
|
79
|
+
next.push(Uint8Array.from(digest));
|
|
80
|
+
}
|
|
81
|
+
level = next;
|
|
82
|
+
}
|
|
83
|
+
return Buffer.from(level[0]).toString("hex");
|
|
84
|
+
}
|
|
85
|
+
function clampString(s, fallback = "") {
|
|
86
|
+
return typeof s === "string" ? s : fallback;
|
|
87
|
+
}
|
|
88
|
+
function clampNumber(n, fallback = 0) {
|
|
89
|
+
return typeof n === "number" && Number.isFinite(n) && n >= 0 ? Math.floor(n) : fallback;
|
|
90
|
+
}
|
|
91
|
+
function clampArray(a) {
|
|
92
|
+
return Array.isArray(a) ? a.filter((x) => typeof x === "string") : [];
|
|
93
|
+
}
|
|
94
|
+
// ─── COMPLIANCE CONTROL REGISTRY (6 frameworks, ~50 controls) ─────────
|
|
95
|
+
/**
|
|
96
|
+
* Map an AI call's characteristics to the controls in each compliance framework.
|
|
97
|
+
* Caller MAY extend by passing a custom mapper; built-in mapper handles the
|
|
98
|
+
* 80% of cases (file access + tool call + outcome class + vaccine trigger).
|
|
99
|
+
*/
|
|
100
|
+
const CONTROL_REGISTRY = {
|
|
101
|
+
SOC2: [
|
|
102
|
+
{ control: "CC8.1", description: "Change management — AI-generated code must be reviewed", triggers: (r) => r.filesTouched.length > 0 },
|
|
103
|
+
{ control: "CC6.1", description: "Logical access — AI must operate under user's authz", triggers: () => true },
|
|
104
|
+
{ control: "CC7.2", description: "System monitoring — AI calls logged", triggers: () => true },
|
|
105
|
+
{ control: "CC4.1", description: "Risk assessment — vaccines triggered indicates risk", triggers: (r) => r.vaccinesTriggered.length > 0 },
|
|
106
|
+
],
|
|
107
|
+
ISO_27001: [
|
|
108
|
+
{ control: "A.5.7", description: "Threat intelligence — vaccine triggers feed threat list", triggers: (r) => r.vaccinesTriggered.length > 0 },
|
|
109
|
+
{ control: "A.8.16", description: "Monitoring activities — AI calls in scope", triggers: () => true },
|
|
110
|
+
{ control: "A.8.28", description: "Secure coding — apoptosis/guard rejection logged", triggers: (r) => r.outcomeClass.startsWith("blocked") },
|
|
111
|
+
],
|
|
112
|
+
EU_AI_ACT: [
|
|
113
|
+
{ control: "Art.9", description: "Risk management — high-risk system AI calls", triggers: (r) => r.outcomeClass.startsWith("blocked") || r.vaccinesTriggered.length > 0 },
|
|
114
|
+
{ control: "Art.10", description: "Data governance — file accesses logged", triggers: (r) => r.filesTouched.length > 0 },
|
|
115
|
+
{ control: "Art.12", description: "Record-keeping — every AI call captured", triggers: () => true },
|
|
116
|
+
{ control: "Art.13", description: "Transparency — vendor + model + prompt recorded", triggers: () => true },
|
|
117
|
+
{ control: "Art.14", description: "Human oversight — outcomeClass=rejected_by_human supports", triggers: (r) => r.outcomeClass === "rejected_by_human" || r.outcomeClass === "merged" },
|
|
118
|
+
{ control: "Art.15", description: "Accuracy + robustness — vaccines + truth-block flags", triggers: (r) => r.vaccinesTriggered.length > 0 || r.outcomeClass === "blocked_by_truth" },
|
|
119
|
+
],
|
|
120
|
+
GDPR: [
|
|
121
|
+
{ control: "Art.22", description: "Automated decision-making — every AI decision recorded", triggers: () => true },
|
|
122
|
+
{ control: "Art.30", description: "Records of processing — receipt = record", triggers: () => true },
|
|
123
|
+
{ control: "Art.32", description: "Security of processing — HMAC chain", triggers: () => true },
|
|
124
|
+
],
|
|
125
|
+
HIPAA: [
|
|
126
|
+
{ control: "164.312(a)(1)", description: "Access control — file accesses logged", triggers: (r) => r.filesTouched.length > 0 },
|
|
127
|
+
{ control: "164.312(b)", description: "Audit controls — every AI call logged", triggers: () => true },
|
|
128
|
+
{ control: "164.312(c)(1)", description: "Integrity — HMAC chain prevents tampering", triggers: () => true },
|
|
129
|
+
],
|
|
130
|
+
THAI_PDPA: [
|
|
131
|
+
{ control: "S.27", description: "Right to access processing record — receipt = record", triggers: () => true },
|
|
132
|
+
{ control: "S.37", description: "Security measures — HMAC chain", triggers: () => true },
|
|
133
|
+
{ control: "S.40", description: "Data controller liability — vendor + model logged", triggers: () => true },
|
|
134
|
+
],
|
|
135
|
+
};
|
|
136
|
+
export function mapToComplianceControls(receipt) {
|
|
137
|
+
const out = {
|
|
138
|
+
SOC2: [], ISO_27001: [], EU_AI_ACT: [], GDPR: [], HIPAA: [], THAI_PDPA: [],
|
|
139
|
+
};
|
|
140
|
+
for (const [framework, controls] of Object.entries(CONTROL_REGISTRY)) {
|
|
141
|
+
for (const c of controls) {
|
|
142
|
+
try {
|
|
143
|
+
if (c.triggers(receipt))
|
|
144
|
+
out[framework].push(c.control);
|
|
145
|
+
}
|
|
146
|
+
catch { /* defensive — never throw from registry */ }
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return out;
|
|
150
|
+
}
|
|
151
|
+
/** Mint a single HMAC-chained receipt. Defensive at every boundary. */
|
|
152
|
+
export function mintReceipt(input) {
|
|
153
|
+
const tsMs = clampNumber(input.tsMs, Date.now());
|
|
154
|
+
const secret = input.secret ?? defaultSecret();
|
|
155
|
+
const vendor = clampString(input.vendor, "unknown_vendor");
|
|
156
|
+
const modelVersion = clampString(input.modelVersion, "unknown_model");
|
|
157
|
+
const promptSha256 = input.promptSha256
|
|
158
|
+
? clampString(input.promptSha256, "0".repeat(64))
|
|
159
|
+
: (input.promptText ? sha256Hex(input.promptText) : "0".repeat(64));
|
|
160
|
+
const responseSha256 = input.responseSha256
|
|
161
|
+
? clampString(input.responseSha256, "0".repeat(64))
|
|
162
|
+
: (input.responseText ? sha256Hex(input.responseText) : "0".repeat(64));
|
|
163
|
+
const toolsCalled = clampArray(input.toolsCalled);
|
|
164
|
+
const filesTouched = clampArray(input.filesTouched);
|
|
165
|
+
const tokensIn = clampNumber(input.tokensIn, 0);
|
|
166
|
+
const tokensOut = clampNumber(input.tokensOut, 0);
|
|
167
|
+
const costUsdMicros = clampNumber(input.costUsdMicros, 0);
|
|
168
|
+
const vaccinesTriggered = clampArray(input.vaccinesTriggered);
|
|
169
|
+
const outcomeClass = (input.outcomeClass ?? "pending");
|
|
170
|
+
const note = clampString(input.note, "");
|
|
171
|
+
const prevSig = input.prevReceipt ? input.prevReceipt.sig : null;
|
|
172
|
+
const baseForMapping = {
|
|
173
|
+
v: PROTOCOL_VERSION, vendor, modelVersion, promptSha256, responseSha256,
|
|
174
|
+
toolsCalled, filesTouched, tokensIn, tokensOut, costUsdMicros,
|
|
175
|
+
vaccinesTriggered, outcomeClass, note, tsMs,
|
|
176
|
+
};
|
|
177
|
+
const autoControls = mapToComplianceControls(baseForMapping);
|
|
178
|
+
// Merge in caller-supplied extras
|
|
179
|
+
if (input.extraControls) {
|
|
180
|
+
for (const [framework, extras] of Object.entries(input.extraControls)) {
|
|
181
|
+
if (!extras)
|
|
182
|
+
continue;
|
|
183
|
+
const merged = new Set([...(autoControls[framework] ?? []), ...extras.filter((x) => typeof x === "string")]);
|
|
184
|
+
autoControls[framework] = Array.from(merged).sort();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const receiptId = sha256Hex(canon({ vendor, modelVersion, promptSha256, tsMs })).slice(0, 24);
|
|
188
|
+
const bodyForSig = {
|
|
189
|
+
v: PROTOCOL_VERSION,
|
|
190
|
+
receiptId,
|
|
191
|
+
vendor,
|
|
192
|
+
modelVersion,
|
|
193
|
+
promptSha256,
|
|
194
|
+
responseSha256,
|
|
195
|
+
toolsCalled,
|
|
196
|
+
filesTouched,
|
|
197
|
+
tokensIn,
|
|
198
|
+
tokensOut,
|
|
199
|
+
costUsdMicros,
|
|
200
|
+
vaccinesTriggered,
|
|
201
|
+
outcomeClass,
|
|
202
|
+
controls: autoControls,
|
|
203
|
+
note,
|
|
204
|
+
tsMs,
|
|
205
|
+
prevSig,
|
|
206
|
+
};
|
|
207
|
+
const sig = hmacHex(bodyForSig, secret);
|
|
208
|
+
return { ...bodyForSig, sig };
|
|
209
|
+
}
|
|
210
|
+
export function verifyReceipt(r, secret) {
|
|
211
|
+
if (!r || typeof r !== "object")
|
|
212
|
+
return false;
|
|
213
|
+
if (r.v !== PROTOCOL_VERSION)
|
|
214
|
+
return false;
|
|
215
|
+
if (typeof r.sig !== "string" || !/^[0-9a-f]{64}$/.test(r.sig))
|
|
216
|
+
return false;
|
|
217
|
+
const sec = secret ?? defaultSecret();
|
|
218
|
+
const { sig, ...body } = r;
|
|
219
|
+
return safeEqHex(hmacHex(body, sec), sig);
|
|
220
|
+
}
|
|
221
|
+
// ─── LEDGER (append-only, merkle-rooted) ───────────────────────────────
|
|
222
|
+
export function emptyLedger() {
|
|
223
|
+
return { v: PROTOCOL_VERSION, receipts: [], merkleRoot: "0".repeat(64), binderFingerprint: "0".repeat(16) };
|
|
224
|
+
}
|
|
225
|
+
export function appendToLedger(ledger, receipt, secret) {
|
|
226
|
+
if (!verifyReceipt(receipt, secret))
|
|
227
|
+
return ledger; // refuse forged
|
|
228
|
+
// Defensive: chain integrity check before append
|
|
229
|
+
const last = ledger.receipts[ledger.receipts.length - 1] ?? null;
|
|
230
|
+
if (last && receipt.prevSig !== last.sig)
|
|
231
|
+
return ledger; // refuse broken chain
|
|
232
|
+
if (!last && receipt.prevSig !== null)
|
|
233
|
+
return ledger; // first record must have null prevSig
|
|
234
|
+
const receipts = [...ledger.receipts, receipt];
|
|
235
|
+
const root = merkleRoot(receipts.map((r) => r.sig));
|
|
236
|
+
return {
|
|
237
|
+
v: PROTOCOL_VERSION,
|
|
238
|
+
receipts,
|
|
239
|
+
merkleRoot: root,
|
|
240
|
+
binderFingerprint: root.slice(0, 16),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Verify the entire HMAC-chain integrity end-to-end + recompute merkle root.
|
|
245
|
+
* Returns false if ANY receipt is tampered or chain is broken.
|
|
246
|
+
*/
|
|
247
|
+
export function verifyLedger(ledger, secret) {
|
|
248
|
+
if (!ledger || typeof ledger !== "object")
|
|
249
|
+
return false;
|
|
250
|
+
if (!Array.isArray(ledger.receipts))
|
|
251
|
+
return false;
|
|
252
|
+
if (ledger.receipts.length === 0)
|
|
253
|
+
return ledger.merkleRoot === "0".repeat(64);
|
|
254
|
+
let prevSig = null;
|
|
255
|
+
for (const r of ledger.receipts) {
|
|
256
|
+
if (!verifyReceipt(r, secret))
|
|
257
|
+
return false;
|
|
258
|
+
if (r.prevSig !== prevSig)
|
|
259
|
+
return false;
|
|
260
|
+
prevSig = r.sig;
|
|
261
|
+
}
|
|
262
|
+
const expected = merkleRoot(ledger.receipts.map((r) => r.sig));
|
|
263
|
+
if (expected !== ledger.merkleRoot)
|
|
264
|
+
return false;
|
|
265
|
+
if (expected.slice(0, 16) !== ledger.binderFingerprint)
|
|
266
|
+
return false;
|
|
267
|
+
return true;
|
|
268
|
+
}
|
|
269
|
+
export function queryLedger(ledger, filter) {
|
|
270
|
+
const list = ledger.receipts;
|
|
271
|
+
return list.filter((r) => {
|
|
272
|
+
if (filter.framework && (r.controls[filter.framework] ?? []).length === 0)
|
|
273
|
+
return false;
|
|
274
|
+
if (filter.vendor && r.vendor !== filter.vendor)
|
|
275
|
+
return false;
|
|
276
|
+
if (filter.filePath && !r.filesTouched.includes(filter.filePath))
|
|
277
|
+
return false;
|
|
278
|
+
if (filter.outcomeClass && r.outcomeClass !== filter.outcomeClass)
|
|
279
|
+
return false;
|
|
280
|
+
if (filter.vaccineTriggered && !r.vaccinesTriggered.includes(filter.vaccineTriggered))
|
|
281
|
+
return false;
|
|
282
|
+
if (filter.dateRangeMs) {
|
|
283
|
+
if (r.tsMs < filter.dateRangeMs.from || r.tsMs > filter.dateRangeMs.to)
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
if (filter.noteContains && !r.note.toLowerCase().includes(filter.noteContains.toLowerCase()))
|
|
287
|
+
return false;
|
|
288
|
+
return true;
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
export function generateAuditBinder(input, secret) {
|
|
292
|
+
const sec = secret ?? defaultSecret();
|
|
293
|
+
const all = input.dateRangeMs
|
|
294
|
+
? queryLedger(input.ledger, { dateRangeMs: input.dateRangeMs })
|
|
295
|
+
: input.ledger.receipts;
|
|
296
|
+
const inScope = input.framework
|
|
297
|
+
? all.filter((r) => (r.controls[input.framework] ?? []).length > 0)
|
|
298
|
+
: all;
|
|
299
|
+
const summary = {
|
|
300
|
+
SOC2: { receipts: 0, controls: new Set() },
|
|
301
|
+
ISO_27001: { receipts: 0, controls: new Set() },
|
|
302
|
+
EU_AI_ACT: { receipts: 0, controls: new Set() },
|
|
303
|
+
GDPR: { receipts: 0, controls: new Set() },
|
|
304
|
+
HIPAA: { receipts: 0, controls: new Set() },
|
|
305
|
+
THAI_PDPA: { receipts: 0, controls: new Set() },
|
|
306
|
+
};
|
|
307
|
+
let totalCost = 0;
|
|
308
|
+
for (const r of inScope) {
|
|
309
|
+
totalCost += r.costUsdMicros;
|
|
310
|
+
for (const fw of Object.keys(summary)) {
|
|
311
|
+
const ctrls = r.controls[fw] ?? [];
|
|
312
|
+
if (ctrls.length > 0) {
|
|
313
|
+
summary[fw].receipts += 1;
|
|
314
|
+
for (const c of ctrls)
|
|
315
|
+
summary[fw].controls.add(c);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
const totalControls = Object.values(summary).reduce((acc, s) => acc + s.controls.size, 0);
|
|
320
|
+
const lines = [];
|
|
321
|
+
lines.push(`# 🛡 Mneme APOSTILLE — AI Accountability Audit Binder`);
|
|
322
|
+
lines.push(``);
|
|
323
|
+
lines.push(`**Organisation**: ${input.organisationName ?? "(unspecified)"}`);
|
|
324
|
+
lines.push(`**Prepared by**: ${input.preparedBy ?? "Mneme APOSTILLE engine v" + PROTOCOL_VERSION}`);
|
|
325
|
+
lines.push(`**Framework**: ${input.framework ?? "ALL"}`);
|
|
326
|
+
if (input.dateRangeMs) {
|
|
327
|
+
lines.push(`**Date range**: ${new Date(input.dateRangeMs.from).toISOString()} → ${new Date(input.dateRangeMs.to).toISOString()}`);
|
|
328
|
+
}
|
|
329
|
+
lines.push(`**Binder fingerprint**: \`${input.ledger.binderFingerprint}\` (auditor: verify ledger merkle root matches)`);
|
|
330
|
+
lines.push(`**Receipts in scope**: ${inScope.length} of ${input.ledger.receipts.length} total`);
|
|
331
|
+
lines.push(`**Total cost**: \$${(totalCost / 1_000_000).toFixed(2)} USD`);
|
|
332
|
+
lines.push(`**Distinct controls exercised**: ${totalControls}`);
|
|
333
|
+
lines.push(``);
|
|
334
|
+
lines.push(`## Coverage by framework`);
|
|
335
|
+
lines.push(``);
|
|
336
|
+
lines.push(`| Framework | Receipts | Distinct Controls |`);
|
|
337
|
+
lines.push(`|---|---|---|`);
|
|
338
|
+
for (const fw of Object.keys(summary)) {
|
|
339
|
+
lines.push(`| ${fw} | ${summary[fw].receipts} | ${summary[fw].controls.size} |`);
|
|
340
|
+
}
|
|
341
|
+
lines.push(``);
|
|
342
|
+
lines.push(`## Receipts (chronological)`);
|
|
343
|
+
lines.push(``);
|
|
344
|
+
for (const r of inScope) {
|
|
345
|
+
lines.push(`### ${new Date(r.tsMs).toISOString()} · \`${r.receiptId}\``);
|
|
346
|
+
lines.push(`- **vendor**: ${r.vendor} / ${r.modelVersion}`);
|
|
347
|
+
lines.push(`- **prompt**: \`${r.promptSha256.slice(0, 16)}…\``);
|
|
348
|
+
lines.push(`- **response**: \`${r.responseSha256.slice(0, 16)}…\``);
|
|
349
|
+
lines.push(`- **tools**: ${r.toolsCalled.length === 0 ? "(none)" : r.toolsCalled.join(", ")}`);
|
|
350
|
+
lines.push(`- **files**: ${r.filesTouched.length === 0 ? "(none)" : r.filesTouched.join(", ")}`);
|
|
351
|
+
lines.push(`- **tokens**: ${r.tokensIn} in / ${r.tokensOut} out`);
|
|
352
|
+
lines.push(`- **cost**: \$${(r.costUsdMicros / 1_000_000).toFixed(4)}`);
|
|
353
|
+
lines.push(`- **vaccines**: ${r.vaccinesTriggered.length === 0 ? "(none)" : r.vaccinesTriggered.join(", ")}`);
|
|
354
|
+
lines.push(`- **outcome**: \`${r.outcomeClass}\``);
|
|
355
|
+
if (r.note)
|
|
356
|
+
lines.push(`- **note**: ${r.note}`);
|
|
357
|
+
for (const fw of Object.keys(r.controls)) {
|
|
358
|
+
const ctrls = r.controls[fw];
|
|
359
|
+
if (ctrls.length === 0)
|
|
360
|
+
continue;
|
|
361
|
+
lines.push(`- **${fw}**: ${ctrls.join(", ")}`);
|
|
362
|
+
}
|
|
363
|
+
lines.push(``);
|
|
364
|
+
}
|
|
365
|
+
lines.push(`---`);
|
|
366
|
+
lines.push(`**End of binder.** Verify integrity: hash this document SHA-256 + compare to sig below.`);
|
|
367
|
+
const markdown = lines.join("\n");
|
|
368
|
+
const body = {
|
|
369
|
+
v: PROTOCOL_VERSION,
|
|
370
|
+
markdown,
|
|
371
|
+
fingerprint: input.ledger.binderFingerprint,
|
|
372
|
+
totalReceiptsInScope: inScope.length,
|
|
373
|
+
totalControlsExercised: totalControls,
|
|
374
|
+
totalCostUsdMicros: totalCost,
|
|
375
|
+
frameworkSummary: Object.fromEntries(Object.entries(summary)
|
|
376
|
+
.map(([k, v]) => [k, { receipts: v.receipts, controls: Array.from(v.controls).sort() }])),
|
|
377
|
+
};
|
|
378
|
+
const sig = hmacHex(body, sec);
|
|
379
|
+
return {
|
|
380
|
+
v: PROTOCOL_VERSION,
|
|
381
|
+
markdown,
|
|
382
|
+
fingerprint: input.ledger.binderFingerprint,
|
|
383
|
+
totalReceiptsInScope: inScope.length,
|
|
384
|
+
totalControlsExercised: totalControls,
|
|
385
|
+
totalCostUsdMicros: totalCost,
|
|
386
|
+
frameworkSummary: summary,
|
|
387
|
+
sig,
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
export function computeApostilleStats(ledger) {
|
|
391
|
+
const vendors = new Set();
|
|
392
|
+
const models = new Set();
|
|
393
|
+
let cost = 0, tokens = 0, vacHits = 0;
|
|
394
|
+
let oldest = null, newest = null;
|
|
395
|
+
const outcomes = {
|
|
396
|
+
merged: 0, reverted: 0, blocked_by_guard: 0, blocked_by_apoptosis: 0,
|
|
397
|
+
blocked_by_truth: 0, pending: 0, rejected_by_human: 0,
|
|
398
|
+
};
|
|
399
|
+
for (const r of ledger.receipts) {
|
|
400
|
+
vendors.add(r.vendor);
|
|
401
|
+
models.add(`${r.vendor}::${r.modelVersion}`);
|
|
402
|
+
cost += r.costUsdMicros;
|
|
403
|
+
tokens += r.tokensIn + r.tokensOut;
|
|
404
|
+
vacHits += r.vaccinesTriggered.length;
|
|
405
|
+
outcomes[r.outcomeClass] = (outcomes[r.outcomeClass] ?? 0) + 1;
|
|
406
|
+
if (oldest === null || r.tsMs < oldest)
|
|
407
|
+
oldest = r.tsMs;
|
|
408
|
+
if (newest === null || r.tsMs > newest)
|
|
409
|
+
newest = r.tsMs;
|
|
410
|
+
}
|
|
411
|
+
return {
|
|
412
|
+
totalReceipts: ledger.receipts.length,
|
|
413
|
+
uniqueVendors: vendors.size,
|
|
414
|
+
uniqueModels: models.size,
|
|
415
|
+
totalCostUsdMicros: cost,
|
|
416
|
+
totalTokens: tokens,
|
|
417
|
+
outcomeBreakdown: outcomes,
|
|
418
|
+
vaccineHits: vacHits,
|
|
419
|
+
oldestReceiptMs: oldest,
|
|
420
|
+
newestReceiptMs: newest,
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
export function formatApostilleLine(s) {
|
|
424
|
+
const cost = (s.totalCostUsdMicros / 1_000_000).toFixed(2);
|
|
425
|
+
return `🛡 APOSTILLE · ${s.totalReceipts} receipts · ${s.uniqueVendors} vendors · ${s.uniqueModels} models · \$${cost} · ${s.vaccineHits} vaccine hits`;
|
|
426
|
+
}
|
|
427
|
+
export const APOSTILLE_TUNABLES = Object.freeze({
|
|
428
|
+
PROTOCOL_VERSION,
|
|
429
|
+
FRAMEWORKS_COUNT: 6,
|
|
430
|
+
FRAMEWORK_LIST: ["SOC2", "ISO_27001", "EU_AI_ACT", "GDPR", "HIPAA", "THAI_PDPA"],
|
|
431
|
+
});
|
|
432
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/apostille/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.33 B4 REGRESSION — SLEEP + DREAMSPACE must tick for active devs.
|
|
3
|
+
*
|
|
4
|
+
* Pre-v2.19.33: required wall-clock idle 30/60min. Active dev = NEVER tick.
|
|
5
|
+
* Post-v2.19.33: fires on branch switch / commit cycle / 30+min no-commit gap.
|
|
6
|
+
*
|
|
7
|
+
* A/B comparison: same simulated 8-hour active-dev workday, two schedules.
|
|
8
|
+
* LEGACY (pre-fix): sleep ticks 0, dreamspace ticks 0
|
|
9
|
+
* ACTIVE_DEV (post-fix): sleep ticks ≥3, dreamspace ticks ≥3
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=b4_context_shift.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"b4_context_shift.test.d.ts","sourceRoot":"","sources":["../../src/autonomic_scheduler/b4_context_shift.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|