@mneme-ai/core 2.35.0 → 2.36.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 (37) hide show
  1. package/dist/ai_handshake.d.ts +17 -0
  2. package/dist/ai_handshake.d.ts.map +1 -1
  3. package/dist/honest_receipt/index.d.ts +12 -0
  4. package/dist/honest_receipt/index.d.ts.map +1 -0
  5. package/dist/honest_receipt/index.js +10 -0
  6. package/dist/honest_receipt/index.js.map +1 -0
  7. package/dist/honest_receipt/receipt.d.ts +42 -0
  8. package/dist/honest_receipt/receipt.d.ts.map +1 -0
  9. package/dist/honest_receipt/receipt.js +120 -0
  10. package/dist/honest_receipt/receipt.js.map +1 -0
  11. package/dist/honest_receipt/snapshot.d.ts +20 -0
  12. package/dist/honest_receipt/snapshot.d.ts.map +1 -0
  13. package/dist/honest_receipt/snapshot.js +193 -0
  14. package/dist/honest_receipt/snapshot.js.map +1 -0
  15. package/dist/honest_receipt/types.d.ts +60 -0
  16. package/dist/honest_receipt/types.d.ts.map +1 -0
  17. package/dist/honest_receipt/types.js +15 -0
  18. package/dist/honest_receipt/types.js.map +1 -0
  19. package/dist/inbox.d.ts +27 -0
  20. package/dist/inbox.d.ts.map +1 -1
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +9 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/pulse.d.ts.map +1 -1
  26. package/dist/squadron/acgv.d.ts.map +1 -1
  27. package/dist/squadron/acgv.js +58 -0
  28. package/dist/squadron/acgv.js.map +1 -1
  29. package/dist/squadron/acgv_explain.d.ts.map +1 -1
  30. package/dist/squadron/acgv_explain.js +26 -0
  31. package/dist/squadron/acgv_explain.js.map +1 -1
  32. package/dist/squadron/acgv_version_semantic.d.ts +50 -0
  33. package/dist/squadron/acgv_version_semantic.d.ts.map +1 -0
  34. package/dist/squadron/acgv_version_semantic.js +123 -0
  35. package/dist/squadron/acgv_version_semantic.js.map +1 -0
  36. package/dist/version_check.d.ts.map +1 -1
  37. package/package.json +1 -1
@@ -85,6 +85,23 @@ export declare function listHandshakes(repoRoot: string, vendor?: string): {
85
85
  pid?: number;
86
86
  model?: string;
87
87
  }[];
88
+ /**
89
+ * v2.35.0 — R7 fix. Verify the HMAC chain of cli-activity.jsonl. Walks
90
+ * every row, recomputes hmac vs `prev`, and reports the first index
91
+ * where the chain breaks. Rows missing `hmac` are treated as the
92
+ * legacy genesis prefix (allowed; chain starts at first hmac'd row).
93
+ *
94
+ * Returns:
95
+ * { ok: true, lines: N } — full chain verifies
96
+ * { ok: false, brokenAt: I, reason } — chain breaks at row I
97
+ * { ok: true, lines: 0 } — file missing (clean repo)
98
+ */
99
+ export declare function verifyCliActivity(repoRoot: string): {
100
+ ok: boolean;
101
+ lines: number;
102
+ brokenAt?: number;
103
+ reason?: string;
104
+ };
88
105
  /** List recent CLI activity (for diagnostics + soul-render). */
89
106
  export declare function listCliActivity(repoRoot: string, opts?: {
90
107
  vendor?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ai_handshake.d.ts","sourceRoot":"","sources":["../src/ai_handshake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAgBH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,GAAG,aAAa,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;mEACmE;AACnE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiE5F;AAQD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQtE;AAyBD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAiD/G;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAyC9F;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAgBxJ;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,eAAe,EAAE,CAerH;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAcxF"}
1
+ {"version":3,"file":"ai_handshake.d.ts","sourceRoot":"","sources":["../src/ai_handshake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAgBH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,GAAG,aAAa,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;mEACmE;AACnE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiE5F;AAQD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQtE;AAyBD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAiD/G;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CA+D9F;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAgBxJ;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA6BtH;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,eAAe,EAAE,CAerH;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAcxF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * v2.36.0 — HONEST RECEIPT public surface.
3
+ *
4
+ * Every CLI invocation can emit an HMAC-signed receipt of what
5
+ * ACTUALLY ran (install path + version + code path + latency).
6
+ * Closes audit-card bugs #4 / #16 / #19 / #22 at once.
7
+ */
8
+ export type { CodePath, InstallSnapshot, LatencyReport, HonestReceipt, } from "./types.js";
9
+ export { snapshotInstall, safeWhich } from "./snapshot.js";
10
+ export { buildReceipt, verifyReceipt, appendReceipt, readLedger, aggregateLatency, shortHash, } from "./receipt.js";
11
+ export type { BuildReceiptInput, LatencyStats } from "./receipt.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/honest_receipt/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EACV,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,GACxD,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EACL,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EACtD,gBAAgB,EAAE,SAAS,GAC5B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * v2.36.0 — HONEST RECEIPT public surface.
3
+ *
4
+ * Every CLI invocation can emit an HMAC-signed receipt of what
5
+ * ACTUALLY ran (install path + version + code path + latency).
6
+ * Closes audit-card bugs #4 / #16 / #19 / #22 at once.
7
+ */
8
+ export { snapshotInstall, safeWhich } from "./snapshot.js";
9
+ export { buildReceipt, verifyReceipt, appendReceipt, readLedger, aggregateLatency, shortHash, } from "./receipt.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/honest_receipt/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EACL,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EACtD,gBAAgB,EAAE,SAAS,GAC5B,MAAM,cAAc,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * v2.36.0 — Build + verify HONEST RECEIPTs.
3
+ *
4
+ * Pure functions over already-snapshotted data. The CLI calls
5
+ * snapshotInstall() + measures latency itself, then assembles a
6
+ * receipt via buildReceipt(). HMAC chain not required (each receipt
7
+ * is standalone); we just HMAC-sign the canonical body so the
8
+ * receipt is tamper-evident.
9
+ */
10
+ import type { HonestReceipt, InstallSnapshot, LatencyReport } from "./types.js";
11
+ export interface BuildReceiptInput {
12
+ cmd: string;
13
+ args: string[];
14
+ install: InstallSnapshot;
15
+ latency: LatencyReport;
16
+ }
17
+ export declare function buildReceipt(input: BuildReceiptInput): HonestReceipt;
18
+ export declare function verifyReceipt(receipt: HonestReceipt): {
19
+ ok: boolean;
20
+ reason?: string;
21
+ };
22
+ /** Append receipt to ledger (best-effort; never throws). */
23
+ export declare function appendReceipt(repoRoot: string, receipt: HonestReceipt): {
24
+ ok: boolean;
25
+ path: string;
26
+ };
27
+ export declare function readLedger(repoRoot: string, limit?: number): HonestReceipt[];
28
+ /** Aggregate latency stats from the ledger (median + p95 + path histogram). */
29
+ export interface LatencyStats {
30
+ count: number;
31
+ medianMs: number;
32
+ p95Ms: number;
33
+ meanMs: number;
34
+ byPath: Record<string, {
35
+ count: number;
36
+ medianMs: number;
37
+ }>;
38
+ }
39
+ export declare function aggregateLatency(receipts: HonestReceipt[]): LatencyStats;
40
+ /** Tiny convenience: hash some text for IDs/keys. */
41
+ export declare function shortHash(s: string): string;
42
+ //# sourceMappingURL=receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../../src/honest_receipt/receipt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAahF,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;CACxB;AAQD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,aAAa,CAYpE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAStF;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAUrG;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,aAAa,EAAE,CAWzE;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAeD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,YAAY,CAcxE;AAED,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3C"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * v2.36.0 — Build + verify HONEST RECEIPTs.
3
+ *
4
+ * Pure functions over already-snapshotted data. The CLI calls
5
+ * snapshotInstall() + measures latency itself, then assembles a
6
+ * receipt via buildReceipt(). HMAC chain not required (each receipt
7
+ * is standalone); we just HMAC-sign the canonical body so the
8
+ * receipt is tamper-evident.
9
+ */
10
+ import { createHash, createHmac } from "node:crypto";
11
+ import { existsSync, mkdirSync, appendFileSync, readFileSync } from "node:fs";
12
+ import { join } from "node:path";
13
+ const HMAC_KEY = process.env["MNEME_HONEST_RECEIPT_KEY"] ?? "mneme-honest-receipt-v1";
14
+ function canon(v) {
15
+ if (v === null || typeof v !== "object")
16
+ return JSON.stringify(v);
17
+ if (Array.isArray(v))
18
+ return "[" + v.map(canon).join(",") + "]";
19
+ const keys = Object.keys(v).sort();
20
+ return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
21
+ }
22
+ function sha(s) { return createHash("sha256").update(s).digest("hex"); }
23
+ function hmacOf(s) { return createHmac("sha256", HMAC_KEY).update(s).digest("hex"); }
24
+ /** Sanitize args — strip anything that looks like a secret. */
25
+ function sanitizeArgs(args) {
26
+ const SECRET_RX = /(AKIA[0-9A-Z]{16}|ghp_[A-Za-z0-9]{20,}|sk-[A-Za-z0-9_-]{20,}|Bearer\s+[A-Za-z0-9._-]+)/gi;
27
+ return args.map((a) => a.replace(SECRET_RX, "<redacted>"));
28
+ }
29
+ export function buildReceipt(input) {
30
+ const at = new Date().toISOString();
31
+ const body = {
32
+ spec: { name: "MNEME-HONEST-RECEIPT", version: "1.0" },
33
+ cmd: input.cmd,
34
+ args: sanitizeArgs(input.args),
35
+ install: input.install,
36
+ latency: input.latency,
37
+ at,
38
+ };
39
+ const hmac = hmacOf(canon(body));
40
+ return { ...body, hmac };
41
+ }
42
+ export function verifyReceipt(receipt) {
43
+ try {
44
+ const { hmac, ...body } = receipt;
45
+ const expected = hmacOf(canon(body));
46
+ if (expected !== hmac)
47
+ return { ok: false, reason: "hmac mismatch" };
48
+ return { ok: true };
49
+ }
50
+ catch (e) {
51
+ return { ok: false, reason: `verify error: ${e.message}` };
52
+ }
53
+ }
54
+ /** Append receipt to ledger (best-effort; never throws). */
55
+ export function appendReceipt(repoRoot, receipt) {
56
+ const dir = join(repoRoot, ".mneme", "honest_receipt");
57
+ const path = join(dir, "ledger.jsonl");
58
+ try {
59
+ if (!existsSync(dir))
60
+ mkdirSync(dir, { recursive: true });
61
+ appendFileSync(path, JSON.stringify(receipt) + "\n");
62
+ return { ok: true, path };
63
+ }
64
+ catch {
65
+ return { ok: false, path };
66
+ }
67
+ }
68
+ export function readLedger(repoRoot, limit = 100) {
69
+ const p = join(repoRoot, ".mneme", "honest_receipt", "ledger.jsonl");
70
+ if (!existsSync(p))
71
+ return [];
72
+ try {
73
+ const lines = readFileSync(p, "utf8").split("\n").filter(Boolean).slice(-limit);
74
+ const out = [];
75
+ for (const ln of lines) {
76
+ try {
77
+ out.push(JSON.parse(ln));
78
+ }
79
+ catch { /* skip */ }
80
+ }
81
+ return out;
82
+ }
83
+ catch {
84
+ return [];
85
+ }
86
+ }
87
+ function median(xs) {
88
+ if (xs.length === 0)
89
+ return 0;
90
+ const sorted = xs.slice().sort((a, b) => a - b);
91
+ const mid = Math.floor(sorted.length / 2);
92
+ return sorted.length % 2 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2;
93
+ }
94
+ function percentile(xs, p) {
95
+ if (xs.length === 0)
96
+ return 0;
97
+ const sorted = xs.slice().sort((a, b) => a - b);
98
+ const idx = Math.min(sorted.length - 1, Math.floor(p * sorted.length));
99
+ return sorted[idx];
100
+ }
101
+ export function aggregateLatency(receipts) {
102
+ const all = receipts.map((r) => r.latency.totalMs);
103
+ const byPath = {};
104
+ for (const r of receipts) {
105
+ const p = r.latency.codePath;
106
+ (byPath[p] ??= []).push(r.latency.totalMs);
107
+ }
108
+ return {
109
+ count: all.length,
110
+ medianMs: Math.round(median(all)),
111
+ p95Ms: Math.round(percentile(all, 0.95)),
112
+ meanMs: all.length === 0 ? 0 : Math.round(all.reduce((s, n) => s + n, 0) / all.length),
113
+ byPath: Object.fromEntries(Object.entries(byPath).map(([k, xs]) => [k, { count: xs.length, medianMs: Math.round(median(xs)) }])),
114
+ };
115
+ }
116
+ /** Tiny convenience: hash some text for IDs/keys. */
117
+ export function shortHash(s) {
118
+ return sha(s).slice(0, 12);
119
+ }
120
+ //# sourceMappingURL=receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/honest_receipt/receipt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,yBAAyB,CAAC;AAEtF,SAAS,KAAK,CAAC,CAAU;IACvB,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAA4B,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAE,CAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACnH,CAAC;AACD,SAAS,GAAG,CAAC,CAAS,IAAY,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxF,SAAS,MAAM,CAAC,CAAS,IAAY,OAAO,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AASrG,+DAA+D;AAC/D,SAAS,YAAY,CAAC,IAAc;IAClC,MAAM,SAAS,GAAG,0FAA0F,CAAC;IAC7G,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,EAAE,IAAI,EAAE,sBAA+B,EAAE,OAAO,EAAE,KAAc,EAAE;QACxE,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,EAAE;KACH,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACrE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAkB,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;IACxE,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAsB;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,KAAK,GAAG,GAAG;IACtD,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACrE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QAChF,MAAM,GAAG,GAAoB,EAAE,CAAC;QAChC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAkB,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAWD,SAAS,MAAM,CAAC,EAAY;IAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAE,GAAG,MAAM,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,CAAC;AAClF,CAAC;AACD,SAAS,UAAU,CAAC,EAAY,EAAE,CAAS;IACzC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,OAAO,MAAM,CAAC,GAAG,CAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAyB;IACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAA6B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC7B,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,MAAM;QACjB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;QACtF,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACjI,CAAC;AACJ,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * v2.36.0 — Install + latency snapshot for HONEST RECEIPT.
3
+ *
4
+ * Every function defensively wrapped: any fs/spawn failure returns a
5
+ * partial-but-honest snapshot rather than throwing. The receipt is
6
+ * MORE useful when partial — "I couldn't read /usr/lib/node_modules"
7
+ * is itself a finding.
8
+ */
9
+ import type { InstallSnapshot } from "./types.js";
10
+ declare function safeWhich(cmd: string): string | null;
11
+ /**
12
+ * Walk every known npm prefix (DOCTOR ORGAN style) + find every
13
+ * mneme-ai install. Returns the snapshot.
14
+ *
15
+ * Defensive: each prefix probe is wrapped in try/catch; a single bad
16
+ * prefix never breaks the rest.
17
+ */
18
+ export declare function snapshotInstall(): InstallSnapshot;
19
+ export { safeWhich };
20
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/honest_receipt/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AASlD,iBAAS,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB7C;AASD;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,eAAe,CA6DjD;AAyDD,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * v2.36.0 — Install + latency snapshot for HONEST RECEIPT.
3
+ *
4
+ * Every function defensively wrapped: any fs/spawn failure returns a
5
+ * partial-but-honest snapshot rather than throwing. The receipt is
6
+ * MORE useful when partial — "I couldn't read /usr/lib/node_modules"
7
+ * is itself a finding.
8
+ */
9
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
10
+ import { join, dirname, resolve } from "node:path";
11
+ import { spawnSync } from "node:child_process";
12
+ function safeReadJson(path) {
13
+ try {
14
+ if (!existsSync(path))
15
+ return null;
16
+ return JSON.parse(readFileSync(path, "utf8"));
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ function safeWhich(cmd) {
23
+ try {
24
+ // Cross-platform `which`/`where` via Node's PATH walk.
25
+ const pathEnv = process.env["PATH"] ?? process.env["Path"] ?? "";
26
+ const pathSep = process.platform === "win32" ? ";" : ":";
27
+ const exts = process.platform === "win32"
28
+ ? (process.env["PATHEXT"] ?? ".CMD;.EXE;.BAT").split(";")
29
+ : [""];
30
+ for (const dir of pathEnv.split(pathSep)) {
31
+ for (const ext of exts) {
32
+ const candidate = join(dir, cmd + ext);
33
+ try {
34
+ if (existsSync(candidate)) {
35
+ const s = statSync(candidate);
36
+ if (s.isFile())
37
+ return candidate;
38
+ }
39
+ }
40
+ catch { /* skip unreadable */ }
41
+ }
42
+ }
43
+ return null;
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ function safeReadVersion(pkgJsonPath) {
50
+ const obj = safeReadJson(pkgJsonPath);
51
+ if (!obj)
52
+ return null;
53
+ if (typeof obj.version === "string")
54
+ return obj.version;
55
+ return null;
56
+ }
57
+ /**
58
+ * Walk every known npm prefix (DOCTOR ORGAN style) + find every
59
+ * mneme-ai install. Returns the snapshot.
60
+ *
61
+ * Defensive: each prefix probe is wrapped in try/catch; a single bad
62
+ * prefix never breaks the rest.
63
+ */
64
+ export function snapshotInstall() {
65
+ const binPath = process.argv[1] ?? "";
66
+ const pathEntries = ((process.env["PATH"] ?? process.env["Path"] ?? "").split(process.platform === "win32" ? ";" : ":")).filter(Boolean);
67
+ // The "primary" install — derived from the bin shim's path.
68
+ let primaryPackagePath = null;
69
+ let primaryVersion = null;
70
+ try {
71
+ // Bin shim is usually $PREFIX/bin/mneme.js or $PREFIX/node_modules/.bin/mneme
72
+ // Walk up looking for a package.json with name === "mneme-ai"
73
+ let dir = dirname(resolve(binPath));
74
+ for (let i = 0; i < 6; i++) {
75
+ const candidate = join(dir, "package.json");
76
+ const pkg = safeReadJson(candidate);
77
+ if (pkg?.name === "mneme-ai") {
78
+ primaryPackagePath = candidate;
79
+ primaryVersion = safeReadVersion(candidate);
80
+ break;
81
+ }
82
+ // Also try ../node_modules/mneme-ai/package.json
83
+ const npmCandidate = join(dir, "node_modules", "mneme-ai", "package.json");
84
+ const npmPkg = safeReadJson(npmCandidate);
85
+ if (npmPkg?.name === "mneme-ai") {
86
+ primaryPackagePath = npmCandidate;
87
+ primaryVersion = safeReadVersion(npmCandidate);
88
+ break;
89
+ }
90
+ const parent = dirname(dir);
91
+ if (parent === dir)
92
+ break;
93
+ dir = parent;
94
+ }
95
+ }
96
+ catch { /* swallow */ }
97
+ // Multi-install probe: walk candidate npm prefixes + collect every
98
+ // mneme-ai install. Mirrors DOCTOR ORGAN prefixes.
99
+ const otherInstalls = [];
100
+ const candidatePrefixes = collectCandidatePrefixes();
101
+ for (const prefix of candidatePrefixes) {
102
+ try {
103
+ const candidate = join(prefix, "node_modules", "mneme-ai", "package.json");
104
+ if (!existsSync(candidate))
105
+ continue;
106
+ const ver = safeReadVersion(candidate);
107
+ if (primaryPackagePath && resolve(candidate) === resolve(primaryPackagePath))
108
+ continue;
109
+ otherInstalls.push({ path: candidate, version: ver });
110
+ }
111
+ catch { /* skip */ }
112
+ }
113
+ // Multi-version detection.
114
+ const versionSet = new Set();
115
+ if (primaryVersion)
116
+ versionSet.add(primaryVersion);
117
+ for (const o of otherInstalls)
118
+ if (o.version)
119
+ versionSet.add(o.version);
120
+ const multiVersionDetected = versionSet.size > 1;
121
+ return {
122
+ binPath,
123
+ packagePath: primaryPackagePath,
124
+ packageVersion: primaryVersion,
125
+ otherInstalls,
126
+ pathEntries,
127
+ multiVersionDetected,
128
+ };
129
+ }
130
+ function collectCandidatePrefixes() {
131
+ const out = new Set();
132
+ // 1) `npm config get prefix`
133
+ try {
134
+ const r = spawnSync("npm", ["config", "get", "prefix"], { encoding: "utf8", timeout: 3000 });
135
+ const p = (r.stdout ?? "").trim();
136
+ if (p)
137
+ out.add(p);
138
+ }
139
+ catch { /* skip */ }
140
+ // 2) Per-platform conventional locations
141
+ if (process.platform === "win32") {
142
+ const userProfile = process.env["USERPROFILE"] ?? "";
143
+ const appData = process.env["APPDATA"] ?? "";
144
+ const prog = process.env["ProgramFiles"] ?? "C:\\Program Files";
145
+ if (userProfile) {
146
+ out.add(join(userProfile, "AppData", "Roaming", "npm"));
147
+ out.add(join(userProfile, "AppData", "Local", "nvm"));
148
+ }
149
+ if (appData)
150
+ out.add(join(appData, "npm"));
151
+ out.add(join(prog, "nodejs"));
152
+ out.add("C:\\nvm4w\\nodejs");
153
+ // Walk every NVM4W version dir + add.
154
+ try {
155
+ const nvm4w = "C:\\nvm4w";
156
+ if (existsSync(nvm4w)) {
157
+ for (const v of readdirSync(nvm4w)) {
158
+ if (/^v?\d/.test(v))
159
+ out.add(join(nvm4w, v));
160
+ }
161
+ }
162
+ }
163
+ catch { /* skip */ }
164
+ }
165
+ else {
166
+ const home = process.env["HOME"] ?? "";
167
+ if (home) {
168
+ out.add(join(home, ".npm-global"));
169
+ out.add(join(home, ".nvm", "versions", "node"));
170
+ }
171
+ out.add("/usr/local");
172
+ out.add("/usr");
173
+ out.add("/opt/homebrew");
174
+ }
175
+ // 3) Anything currently on PATH that's a node-install-shaped dir.
176
+ for (const p of (process.env["PATH"] ?? "").split(process.platform === "win32" ? ";" : ":")) {
177
+ if (!p)
178
+ continue;
179
+ if (/node|nvm|npm/i.test(p)) {
180
+ // The bin dir is usually inside the prefix; walk one level up.
181
+ try {
182
+ const parent = dirname(p);
183
+ out.add(parent);
184
+ out.add(p);
185
+ }
186
+ catch { /* skip */ }
187
+ }
188
+ }
189
+ return Array.from(out);
190
+ }
191
+ void safeWhich; // exported below for tests
192
+ export { safeWhich };
193
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/honest_receipt/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * v2.36.0 — HONEST RECEIPT types.
3
+ *
4
+ * The wild idea closing audit-card bugs #4 / #16 / #19 / #22 at once:
5
+ * every Mneme CLI invocation can emit an HMAC-signed receipt of what
6
+ * ACTUALLY ran — install path, resolved version, code path (UDS-fast /
7
+ * full-cli / cached), observed latency. Turns "Mneme says 12ms" into
8
+ * "Mneme PROVED it took 12ms via this receipt".
9
+ *
10
+ * Composes with the BUG IMMUNITY pattern: every marketing claim about
11
+ * speed / install path / version can be re-verified by reading a
12
+ * receipt off disk. Defeats the marketing-drift class structurally.
13
+ */
14
+ export type CodePath = "uds-fast" | "named-pipe" | "full-cli" | "cached" | "fallback" | "unknown";
15
+ export interface InstallSnapshot {
16
+ /** Resolved path of the bin shim that ran. */
17
+ binPath: string;
18
+ /** Resolved path of mneme-ai/package.json (the install root). */
19
+ packagePath: string | null;
20
+ /** Version read from packagePath. */
21
+ packageVersion: string | null;
22
+ /** Other npm prefixes also containing mneme-ai (multi-install warning). */
23
+ otherInstalls: Array<{
24
+ path: string;
25
+ version: string | null;
26
+ }>;
27
+ /** PATH entries we walked to resolve `mneme`. */
28
+ pathEntries: string[];
29
+ /** True if multiple distinct versions are installed (ambiguity warning). */
30
+ multiVersionDetected: boolean;
31
+ }
32
+ export interface LatencyReport {
33
+ /** Wall-clock ms from CLI invocation to first byte of output. */
34
+ totalMs: number;
35
+ /** ms spent in fast-path attempt (UDS / named-pipe). */
36
+ fastPathMs: number;
37
+ /** ms spent in full Node module load (when fast-path missed). */
38
+ fullLoadMs: number;
39
+ /** Which path was actually taken. */
40
+ codePath: CodePath;
41
+ /** Why fast-path was taken / skipped. */
42
+ pathReason: string;
43
+ }
44
+ export interface HonestReceipt {
45
+ spec: {
46
+ name: "MNEME-HONEST-RECEIPT";
47
+ version: "1.0";
48
+ };
49
+ /** Command that ran. */
50
+ cmd: string;
51
+ /** Args (sanitized — no PII). */
52
+ args: string[];
53
+ install: InstallSnapshot;
54
+ latency: LatencyReport;
55
+ /** ISO timestamp. */
56
+ at: string;
57
+ /** HMAC-signed envelope. */
58
+ hmac: string;
59
+ }
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/honest_receipt/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,QAAQ,GAChB,UAAU,GACV,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qCAAqC;IACrC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2EAA2E;IAC3E,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC/D,iDAAiD;IACjD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,4EAA4E;IAC5E,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAC;QAAC,OAAO,EAAE,KAAK,CAAA;KAAE,CAAC;IACvD,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IACvB,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * v2.36.0 — HONEST RECEIPT types.
3
+ *
4
+ * The wild idea closing audit-card bugs #4 / #16 / #19 / #22 at once:
5
+ * every Mneme CLI invocation can emit an HMAC-signed receipt of what
6
+ * ACTUALLY ran — install path, resolved version, code path (UDS-fast /
7
+ * full-cli / cached), observed latency. Turns "Mneme says 12ms" into
8
+ * "Mneme PROVED it took 12ms via this receipt".
9
+ *
10
+ * Composes with the BUG IMMUNITY pattern: every marketing claim about
11
+ * speed / install path / version can be re-verified by reading a
12
+ * receipt off disk. Defeats the marketing-drift class structurally.
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/honest_receipt/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
package/dist/inbox.d.ts CHANGED
@@ -97,6 +97,33 @@ export declare function clearInbox(repoRoot: string, which: "sent" | "all" | {
97
97
  }): number;
98
98
  /** v1.26.3 -- count of unsent messages, cheap (one file read). */
99
99
  export declare function countUnsent(repoRoot: string): number;
100
+ /**
101
+ * v2.34.0 — NEW1 fix: SINGLE SOURCE OF TRUTH for the pulse/CLI inbox
102
+ * count. Same filter pulse.ts applies (skip sent entries + skip stale
103
+ * version banners whose advertised "you're on vX.Y.Z" no longer matches
104
+ * the current installed version). Both pulse and `mneme inbox` CLI MUST
105
+ * call this helper so their counts agree forever.
106
+ *
107
+ * Pre-v2.34: pulse counted `sent === false` + stale-version filter;
108
+ * `mneme inbox` CLI applied DIFFERENT filtering. Result: pulse said
109
+ * "1 unread" while CLI said "Inbox is empty".
110
+ *
111
+ * Post-v2.34: both use `countUnsentDisplayable(repoRoot, currentVer)`.
112
+ * Pinned regression test asserts equality.
113
+ */
114
+ export declare function countUnsentDisplayable(repoRoot: string, currentVer?: string): number;
115
+ /**
116
+ * Strict predicate: is this message both UNSENT and CURRENTLY DISPLAYABLE?
117
+ * Currently displayable = not flagged as a stale-version banner whose
118
+ * advertised target version no longer matches `currentVer`.
119
+ */
120
+ export declare function isDisplayableUnsent(m: InboxMessage, currentVer?: string): boolean;
121
+ /**
122
+ * v2.34.0 — readable list of displayable unsent messages. Same filter
123
+ * as countUnsentDisplayable. CLI uses this so its display matches the
124
+ * pulse counter.
125
+ */
126
+ export declare function listDisplayableUnsent(repoRoot: string, currentVer?: string): InboxMessage[];
100
127
  /** Read all messages currently in the inbox (sent + unsent). */
101
128
  export declare function readInbox(repoRoot: string): InboxMessage[];
102
129
  /** Read up to N unsent messages, sorted by priority desc + createdAt asc.
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../src/inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AASH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC;IACxB,4FAA4F;IAC5F,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,IAAI,EAAE,OAAO,CAAC;IACd,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAC/D;AAWD;uEACuE;AACvE,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACrE,YAAY,CAgCd;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAczE;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EACtE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,OAAO,CAAA;CAAO,GAClC,YAAY,GAAG,IAAI,CAQrB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,MAAM,CAuBxE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GAChD,MAAM,CAuBR;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAe1D;AAED;mEACmE;AACnE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,YAAY,EAAE,CAqBrE;AAqBD;qEACqE;AACrE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAWhE;AAED;mDACmD;AACnD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,mCAAmC;AACnC,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAM1D"}
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../src/inbox.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -389,6 +389,7 @@ export * as citizenCourt from "./citizen_court/index.js";
389
389
  export * as mnemnet from "./mnemnet/index.js";
390
390
  export * as pulsecost from "./pulsecost/index.js";
391
391
  export * as coercion from "./coercion/index.js";
392
+ export * as honestReceipt from "./honest_receipt/index.js";
392
393
  export * as flywheel from "./flywheel/index.js";
393
394
  export * as dimensionalOracle from "./dimensional_oracle/index.js";
394
395
  export * as challengerLibrarian from "./challenger_librarian/index.js";