@mneme-ai/core 2.35.0 → 2.37.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 (42) 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_mirror/engine.js +18 -4
  4. package/dist/honest_mirror/engine.js.map +1 -1
  5. package/dist/honest_receipt/index.d.ts +12 -0
  6. package/dist/honest_receipt/index.d.ts.map +1 -0
  7. package/dist/honest_receipt/index.js +10 -0
  8. package/dist/honest_receipt/index.js.map +1 -0
  9. package/dist/honest_receipt/receipt.d.ts +42 -0
  10. package/dist/honest_receipt/receipt.d.ts.map +1 -0
  11. package/dist/honest_receipt/receipt.js +120 -0
  12. package/dist/honest_receipt/receipt.js.map +1 -0
  13. package/dist/honest_receipt/snapshot.d.ts +20 -0
  14. package/dist/honest_receipt/snapshot.d.ts.map +1 -0
  15. package/dist/honest_receipt/snapshot.js +193 -0
  16. package/dist/honest_receipt/snapshot.js.map +1 -0
  17. package/dist/honest_receipt/types.d.ts +60 -0
  18. package/dist/honest_receipt/types.d.ts.map +1 -0
  19. package/dist/honest_receipt/types.js +15 -0
  20. package/dist/honest_receipt/types.js.map +1 -0
  21. package/dist/inbox.d.ts +27 -0
  22. package/dist/inbox.d.ts.map +1 -1
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +9 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/pulse.d.ts.map +1 -1
  28. package/dist/squadron/acgv.d.ts.map +1 -1
  29. package/dist/squadron/acgv.js +58 -0
  30. package/dist/squadron/acgv.js.map +1 -1
  31. package/dist/squadron/acgv_explain.d.ts.map +1 -1
  32. package/dist/squadron/acgv_explain.js +26 -0
  33. package/dist/squadron/acgv_explain.js.map +1 -1
  34. package/dist/squadron/acgv_version_semantic.d.ts +50 -0
  35. package/dist/squadron/acgv_version_semantic.d.ts.map +1 -0
  36. package/dist/squadron/acgv_version_semantic.js +123 -0
  37. package/dist/squadron/acgv_version_semantic.js.map +1 -0
  38. package/dist/squadron/hyperbole_detector.d.ts.map +1 -1
  39. package/dist/squadron/hyperbole_detector.js +22 -0
  40. package/dist/squadron/hyperbole_detector.js.map +1 -1
  41. package/dist/version_check.d.ts.map +1 -1
  42. 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"}
@@ -110,19 +110,33 @@ export async function runCalibration(repoRoot, opts, replay, embed) {
110
110
  const finishedAt = new Date().toISOString();
111
111
  const totalMs = Date.now() - t0;
112
112
  // Overall verdict.
113
+ // v2.37.0 — mock-vendor filter. Mock vendor adapters return
114
+ // deterministic placeholder text that CAN'T match real commit
115
+ // diffs, so their meanCalibrationDelta is structurally ~60% over-
116
+ // confident by construction. Including them in the traffic-light
117
+ // computation produces a spurious 🔴 RED on every fresh install
118
+ // that only has mock vendors available (no API keys configured).
119
+ // Same filter TRUTH GATE probe.honest_mirror.recent_calibration
120
+ // applies. Mock vendors still appear in perVendor for completeness
121
+ // but don't drive the headline.
122
+ const realVendors = perVendor.filter((v) => !v.vendor.startsWith("mock") && !v.vendor.includes("@mock"));
123
+ const scoringVendors = realVendors.length > 0 ? realVendors : perVendor; // fall back so we always have a verdict
113
124
  let trafficLight;
114
- const maxAbsDelta = perVendor.reduce((m, v) => Math.max(m, Math.abs(v.meanCalibrationDelta)), 0);
125
+ const maxAbsDelta = scoringVendors.reduce((m, v) => Math.max(m, Math.abs(v.meanCalibrationDelta)), 0);
115
126
  if (maxAbsDelta < 0.10)
116
127
  trafficLight = "green";
117
128
  else if (maxAbsDelta < 0.25)
118
129
  trafficLight = "yellow";
119
130
  else
120
131
  trafficLight = "red";
132
+ const mockNote = realVendors.length === 0 && perVendor.length > 0
133
+ ? " (mock-only run — no real vendor signal; production calibration requires API keys)"
134
+ : "";
121
135
  const headline = trafficLight === "green"
122
- ? `🟢 HONEST MIRROR — all ${perVendor.length} vendors well-calibrated against ${pairs.length} natural artifacts`
136
+ ? `🟢 HONEST MIRROR — all ${perVendor.length} vendors well-calibrated against ${pairs.length} natural artifacts${mockNote}`
123
137
  : trafficLight === "yellow"
124
- ? `🟡 HONEST MIRROR — calibration drift up to ${(maxAbsDelta * 100).toFixed(0)}% across ${perVendor.length} vendors`
125
- : `🔴 HONEST MIRROR — significant calibration miss: max ${(maxAbsDelta * 100).toFixed(0)}% drift`;
138
+ ? `🟡 HONEST MIRROR — calibration drift up to ${(maxAbsDelta * 100).toFixed(0)}% across ${scoringVendors.length} real vendor(s)${mockNote}`
139
+ : `🔴 HONEST MIRROR — significant calibration miss: max ${(maxAbsDelta * 100).toFixed(0)}% drift${mockNote}`;
126
140
  const body = {
127
141
  spec: { name: "MNEME-HONEST-MIRROR", version: "1.0" },
128
142
  startedAt, finishedAt, totalMs,
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/honest_mirror/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/honest_mirror/engine.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
@@ -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"}