mneme-ai 2.128.0 → 2.129.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.
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `mneme settlement` (v2.129.0) — the Context Transaction Settlement Ledger:
3
+ * a signed, hash-chained, offline-auditable record of every AI↔local context
4
+ * exchange (what was blinded, what changed, whether it passed local verify, the
5
+ * tokens metered). The honest "Stripe of AI Context / settlement layer".
6
+ *
7
+ * mneme settlement record --tx '{"kind":"channel-op","namesHidden":3,"localVerified":"pass","tokensSent":40,"tokensSaved":600}'
8
+ * mneme settlement verify
9
+ * mneme settlement statement --price-per-1k 0.003 --fee-pct 0.10
10
+ */
11
+ import type { Command } from "commander";
12
+ export declare function registerSettlementCommands(program: Command): void;
13
+ //# sourceMappingURL=settlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../../src/commands/settlement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8CjE"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * `mneme settlement` (v2.129.0) — the Context Transaction Settlement Ledger:
3
+ * a signed, hash-chained, offline-auditable record of every AI↔local context
4
+ * exchange (what was blinded, what changed, whether it passed local verify, the
5
+ * tokens metered). The honest "Stripe of AI Context / settlement layer".
6
+ *
7
+ * mneme settlement record --tx '{"kind":"channel-op","namesHidden":3,"localVerified":"pass","tokensSent":40,"tokensSaved":600}'
8
+ * mneme settlement verify
9
+ * mneme settlement statement --price-per-1k 0.003 --fee-pct 0.10
10
+ */
11
+ import { existsSync, readFileSync, appendFileSync, mkdirSync } from "node:fs";
12
+ import { join, dirname } from "node:path";
13
+ import { settlement, notary } from "@mneme-ai/core";
14
+ const LEDGER = ".mneme/settlement/ledger.jsonl";
15
+ function out(s) { process.stdout.write(s + "\n"); }
16
+ function outJson(o) { process.stdout.write(JSON.stringify(o, null, 2) + "\n"); }
17
+ function loadRecords(cwd) {
18
+ try {
19
+ const p = join(cwd, LEDGER);
20
+ if (!existsSync(p))
21
+ return [];
22
+ return readFileSync(p, "utf8").split(/\r?\n/).filter(Boolean).map((l) => JSON.parse(l));
23
+ }
24
+ catch {
25
+ return [];
26
+ }
27
+ }
28
+ export function registerSettlementCommands(program) {
29
+ const s = program.command("settlement").description("💳 CONTEXT TRANSACTION SETTLEMENT LEDGER — a signed, hash-chained, offline-auditable record of every AI↔local context exchange (blinded-proof + local-verify-proof + token metering). The honest 'Stripe of AI Context' settlement/audit layer.");
30
+ s.command("record")
31
+ .description("Append one context transaction to the chained ledger (links to the previous record's hash).")
32
+ .requiredOption("--tx <json>", "the transaction: {kind, sentHash?, namesHidden?, secretsRemoved?, localVerified?, tokensSent?, tokensSaved?, note?}")
33
+ .option("--json", "JSON output.")
34
+ .action((opts) => {
35
+ const cwd = process.cwd();
36
+ let txIn;
37
+ try {
38
+ txIn = JSON.parse(opts.tx);
39
+ }
40
+ catch (e) {
41
+ out(`✗ invalid --tx JSON: ${e.message}`);
42
+ process.exitCode = 1;
43
+ return;
44
+ }
45
+ const records = loadRecords(cwd);
46
+ const prev = records.length ? records[records.length - 1].chainHash : "0".repeat(64);
47
+ const rec = settlement.recordTx(prev, txIn, records.length + 1);
48
+ let receipt = null;
49
+ try {
50
+ receipt = notary.issueReceipt(cwd, { kind: "protocol-hop", subject: `settlement:${rec.tx.seq}`, payload: { chainHash: rec.chainHash, seq: rec.tx.seq }, includePayload: true });
51
+ }
52
+ catch { /* */ }
53
+ try {
54
+ const p = join(cwd, LEDGER);
55
+ if (!existsSync(dirname(p)))
56
+ mkdirSync(dirname(p), { recursive: true });
57
+ appendFileSync(p, JSON.stringify(rec) + "\n");
58
+ }
59
+ catch (e) {
60
+ out(`✗ append failed: ${e.message}`);
61
+ process.exitCode = 1;
62
+ return;
63
+ }
64
+ if (opts.json) {
65
+ outJson({ record: rec, signed: receipt });
66
+ return;
67
+ }
68
+ out(`💳 tx#${rec.tx.seq} ${rec.tx.kind} recorded · chain ${rec.chainHash.slice(0, 12)}… · sent ~${rec.tx.tokensSent} tok, saved ~${rec.tx.tokensSaved} tok${receipt ? " · signed" : ""}`);
69
+ });
70
+ s.command("verify")
71
+ .description("Recompute the chain offline + report tamper (returns the first broken seq). Exit 2 if broken.")
72
+ .option("--json", "JSON output.")
73
+ .action((opts) => {
74
+ const cwd = process.cwd();
75
+ const v = settlement.verifyChain(loadRecords(cwd));
76
+ if (opts.json) {
77
+ outJson(v);
78
+ return;
79
+ }
80
+ out(v.ok ? `✓ chain intact — ${v.length} transaction(s) verify offline` : `🛑 chain BROKEN at seq ${v.firstBrokenSeq}: ${v.note}`);
81
+ if (!v.ok)
82
+ process.exitCode = 2;
83
+ });
84
+ s.command("statement")
85
+ .description("A Visa-style settlement statement: tokens sent vs saved, % blinded, % locally-verified, chain integrity. --price-per-1k + --fee-pct (your numbers) add USD + the value-based fee.")
86
+ .option("--price-per-1k <usd>", "your vendor's price per 1k tokens (USD).", (v) => parseFloat(v))
87
+ .option("--fee-pct <f>", "value-based fee as a fraction of savings, e.g. 0.10 = 10%.", (v) => parseFloat(v))
88
+ .option("--json", "JSON output.")
89
+ .action((opts) => {
90
+ const cwd = process.cwd();
91
+ const st = settlement.settlementStatement(loadRecords(cwd), { pricePer1kUSD: opts.pricePer1k, feePct: opts.feePct });
92
+ if (opts.json) {
93
+ outJson(st);
94
+ return;
95
+ }
96
+ out(`💳 SETTLEMENT STATEMENT — ${st.txCount} context transaction(s)`);
97
+ out(` tokens: ~${st.totalTokensSent.toLocaleString()} sent · ~${st.totalTokensSaved.toLocaleString()} saved`);
98
+ if (typeof st.usdSaved === "number")
99
+ out(` value: $${st.usdSaved.toLocaleString()} saved${typeof st.feeUSD === "number" ? ` · fee @${(opts.feePct * 100)}% = $${st.feeUSD.toLocaleString()}` : ""} (at your rate)`);
100
+ out(` security: ${st.pctBlinded}% blinded · ${st.pctLocallyVerified}% locally-verified`);
101
+ out(` integrity: ${st.integrity.ok ? "✓ chain intact" : "🛑 BROKEN @seq " + st.integrity.firstBrokenSeq}`);
102
+ });
103
+ }
104
+ //# sourceMappingURL=settlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.js","sourceRoot":"","sources":["../../src/commands/settlement.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAyJA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2gNvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA0JA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4gNvD"}
package/dist/index.js CHANGED
@@ -86,6 +86,7 @@ import { registerOutlineCommands } from "./commands/outline.js";
86
86
  import { registerScaffoldCommands } from "./commands/scaffold.js";
87
87
  import { registerBlindCommands } from "./commands/blind.js";
88
88
  import { registerChannelCommands } from "./commands/channel.js";
89
+ import { registerSettlementCommands } from "./commands/settlement.js";
89
90
  import { registerTrustCommands } from "./commands/trust.js";
90
91
  import { registerNuclearCommands } from "./commands/nuclear-cli.js";
91
92
  import { registerOvernightCommand } from "./commands/overnight.js";
@@ -4717,6 +4718,7 @@ export async function run(argv) {
4717
4718
  registerScaffoldCommands(program);
4718
4719
  registerBlindCommands(program);
4719
4720
  registerChannelCommands(program);
4721
+ registerSettlementCommands(program);
4720
4722
  // ─── Trust calibrator (v1.31.0) -- per-subsystem precision/recall/band
4721
4723
  registerTrustCommands(program);
4722
4724
  // ─── Wisdom reactor (v1.33.0) -- five nuclear-physics formulas as Mneme metrics