@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.
- package/dist/ai_handshake.d.ts +17 -0
- package/dist/ai_handshake.d.ts.map +1 -1
- package/dist/honest_mirror/engine.js +18 -4
- package/dist/honest_mirror/engine.js.map +1 -1
- package/dist/honest_receipt/index.d.ts +12 -0
- package/dist/honest_receipt/index.d.ts.map +1 -0
- package/dist/honest_receipt/index.js +10 -0
- package/dist/honest_receipt/index.js.map +1 -0
- package/dist/honest_receipt/receipt.d.ts +42 -0
- package/dist/honest_receipt/receipt.d.ts.map +1 -0
- package/dist/honest_receipt/receipt.js +120 -0
- package/dist/honest_receipt/receipt.js.map +1 -0
- package/dist/honest_receipt/snapshot.d.ts +20 -0
- package/dist/honest_receipt/snapshot.d.ts.map +1 -0
- package/dist/honest_receipt/snapshot.js +193 -0
- package/dist/honest_receipt/snapshot.js.map +1 -0
- package/dist/honest_receipt/types.d.ts +60 -0
- package/dist/honest_receipt/types.d.ts.map +1 -0
- package/dist/honest_receipt/types.js +15 -0
- package/dist/honest_receipt/types.js.map +1 -0
- package/dist/inbox.d.ts +27 -0
- package/dist/inbox.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/pulse.d.ts.map +1 -1
- package/dist/squadron/acgv.d.ts.map +1 -1
- package/dist/squadron/acgv.js +58 -0
- package/dist/squadron/acgv.js.map +1 -1
- package/dist/squadron/acgv_explain.d.ts.map +1 -1
- package/dist/squadron/acgv_explain.js +26 -0
- package/dist/squadron/acgv_explain.js.map +1 -1
- package/dist/squadron/acgv_version_semantic.d.ts +50 -0
- package/dist/squadron/acgv_version_semantic.d.ts.map +1 -0
- package/dist/squadron/acgv_version_semantic.js +123 -0
- package/dist/squadron/acgv_version_semantic.js.map +1 -0
- package/dist/squadron/hyperbole_detector.d.ts.map +1 -1
- package/dist/squadron/hyperbole_detector.js +22 -0
- package/dist/squadron/hyperbole_detector.js.map +1 -1
- package/dist/version_check.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/ai_handshake.d.ts
CHANGED
|
@@ -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,
|
|
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 =
|
|
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 ${
|
|
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"}
|