mneme-ai 2.120.0 → 2.122.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,17 @@
1
+ /**
2
+ * `mneme bequest` (v2.122.0) — the Second Brain that is INHERITED.
3
+ *
4
+ * Turns Mneme's key-person-risk DETECTION (atrophy) into knowledge SURVIVAL:
5
+ * capture a departing expert's knowledge as a signed Succession Capsule, let a
6
+ * successor claim + verify it (transfer-integrity proof), and report the org's
7
+ * inheritance completeness + ORPHANED knowledge (knowledge with no living heir)
8
+ * — the number a CRO turns into dollars.
9
+ *
10
+ * mneme bequest status [--cost-per-orphan N] [--budget N] # org inheritance health + who to assign
11
+ * mneme bequest capture --holder <email> [--reason "..."] # mint a signed succession capsule
12
+ * mneme bequest list # stored capsules
13
+ * mneme bequest claim --capsule <id> --heir <email> # successor verifies + signs receipt
14
+ */
15
+ import type { Command } from "commander";
16
+ export declare function registerBequestCommands(program: Command): void;
17
+ //# sourceMappingURL=bequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bequest.d.ts","sourceRoot":"","sources":["../../src/commands/bequest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkDzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiH9D"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * `mneme bequest` (v2.122.0) — the Second Brain that is INHERITED.
3
+ *
4
+ * Turns Mneme's key-person-risk DETECTION (atrophy) into knowledge SURVIVAL:
5
+ * capture a departing expert's knowledge as a signed Succession Capsule, let a
6
+ * successor claim + verify it (transfer-integrity proof), and report the org's
7
+ * inheritance completeness + ORPHANED knowledge (knowledge with no living heir)
8
+ * — the number a CRO turns into dollars.
9
+ *
10
+ * mneme bequest status [--cost-per-orphan N] [--budget N] # org inheritance health + who to assign
11
+ * mneme bequest capture --holder <email> [--reason "..."] # mint a signed succession capsule
12
+ * mneme bequest list # stored capsules
13
+ * mneme bequest claim --capsule <id> --heir <email> # successor verifies + signs receipt
14
+ */
15
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync } from "node:fs";
16
+ import { join } from "node:path";
17
+ import { git, store, people, bequest, notary } from "@mneme-ai/core";
18
+ import { dbPath } from "../paths.js";
19
+ const DIR = ".mneme/bequest";
20
+ function out(s) { process.stdout.write(s + "\n"); }
21
+ function outJson(o) { process.stdout.write(JSON.stringify(o, null, 2) + "\n"); }
22
+ function usd(n) { return "$" + n.toLocaleString("en-US", { maximumFractionDigits: 2 }); }
23
+ function sign(cwd, subject, payload) {
24
+ try {
25
+ return notary.issueReceipt(cwd, { kind: "memory-capsule", subject, payload, includePayload: true });
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ async function openStore(cwd) {
32
+ if (!(await git.isGitRepo(cwd)))
33
+ return { error: "Not in a git repo." };
34
+ const meta = await git.getRepoMeta(cwd);
35
+ const s = new store.MnemeStore(dbPath(meta.rootPath));
36
+ if (s.countCommits() === 0) {
37
+ s.close();
38
+ return { error: "Memory is empty. Run `mneme index` first." };
39
+ }
40
+ return { s, root: meta.rootPath };
41
+ }
42
+ /** Build inheritance knowledge units from the real atrophy report: every
43
+ * non-safe file is a unit; its holders are the file's knowers with their
44
+ * Ebbinghaus knowledge score as fluency; mass = total touches (work invested). */
45
+ function unitsFromAtrophy(s) {
46
+ const r = people.atrophy(s);
47
+ const units = r.atRiskFiles
48
+ .filter((f) => f.tier !== "safe")
49
+ .map((f) => ({
50
+ id: f.filePath,
51
+ mass: f.totalTouches,
52
+ holders: f.allKnowers.map((k) => ({ id: k.email, fluency: k.knowledge })),
53
+ }));
54
+ // candidates = anyone who knows ≥1 of the at-risk files; they can inherit those.
55
+ const byAuthor = new Map();
56
+ for (const f of r.atRiskFiles) {
57
+ if (f.tier === "safe")
58
+ continue;
59
+ for (const k of f.allKnowers) {
60
+ if (!byAuthor.has(k.email))
61
+ byAuthor.set(k.email, new Set());
62
+ byAuthor.get(k.email).add(f.filePath);
63
+ }
64
+ }
65
+ const candidates = [...byAuthor.entries()].map(([id, set]) => ({ id, canCover: [...set] }));
66
+ return { units, candidates };
67
+ }
68
+ export function registerBequestCommands(program) {
69
+ const bq = program.command("bequest").alias("inherit")
70
+ .description("🧬 SECOND BRAIN INHERITANCE — capture a departing expert's knowledge as a SIGNED capsule, let a successor verify it, and report org inheritance completeness + ORPHANED knowledge (knowledge with no living heir). The survival layer on top of key-person-risk detection.");
71
+ // ── status: org inheritance health (the CRO headline) ──
72
+ bq.command("status")
73
+ .description("Org inheritance health: completeness, ORPHANED knowledge mass (no living heir), top orphans, and the minimum set of heirs to assign. --cost-per-orphan gives a labelled exposure estimate.")
74
+ .option("--cost-per-orphan <usd>", "your est. cost to re-derive one orphaned unit's knowledge (USD).", (v) => parseFloat(v))
75
+ .option("--budget <n>", "max heirs to assign in the cover plan.", (v) => parseInt(v, 10), 5)
76
+ .option("--threshold <f>", "survival below this = orphaned (0..1).", (v) => parseFloat(v), 0.5)
77
+ .option("--json", "JSON output.")
78
+ .action(async (opts) => {
79
+ const cwd = process.cwd();
80
+ const o = await openStore(cwd);
81
+ if ("error" in o) {
82
+ out(`✗ ${o.error}`);
83
+ process.exitCode = 1;
84
+ return;
85
+ }
86
+ try {
87
+ const { units, candidates } = unitsFromAtrophy(o.s);
88
+ const rep = bequest.inheritanceReport(units, { orphanThreshold: opts.threshold ?? 0.5 });
89
+ const atRisk = rep.orphans.map((u) => ({ id: u.id, mass: u.mass }));
90
+ const plan = bequest.minHeirCover(atRisk, candidates, opts.budget ?? 5);
91
+ const exposure = typeof opts.costPerOrphan === "number" ? rep.orphans.length * opts.costPerOrphan : undefined;
92
+ const receipt = sign(cwd, "bequest:status", { completeness: rep.completeness, orphanedMass: rep.orphanedMass, orphanCount: rep.orphans.length });
93
+ if (opts.json) {
94
+ outJson({ ...rep, coverPlan: plan, exposureUSD: exposure, basis: "survival = 1−∏(1−fluency) over git-derived knowledge holders (Ebbinghaus); orphaned = knowledge below the survival threshold; exposure = YOUR cost × orphan count — labelled, not a forecast", signed: receipt });
95
+ return;
96
+ }
97
+ out(`🧬 INHERITANCE HEALTH — completeness ${(rep.completeness * 100).toFixed(0)}% · ${rep.orphans.length} orphaned unit(s) of ${rep.unitCount} at-risk · orphaned mass ${rep.orphanedMass} / ${rep.totalMass}`);
98
+ for (const u of rep.orphans.slice(0, 8))
99
+ out(` • ORPHAN ${u.id} — survival ${(u.survival * 100).toFixed(0)}% (${u.heirs} holder${u.heirs === 1 ? "" : "s"}, mass ${u.mass})`);
100
+ if (plan.chosen.length > 0)
101
+ out(` 👥 assign ${plan.chosen.length} heir(s) to cover ${(plan.coverageFraction * 100).toFixed(0)}% of orphaned mass: ${plan.chosen.join(", ")}`);
102
+ if (exposure !== undefined)
103
+ out(` 💸 exposure estimate: ${usd(exposure)} (your ${usd(opts.costPerOrphan)}/orphan × ${rep.orphans.length} — labelled, not a forecast)`);
104
+ if (receipt)
105
+ out(` ✓ signed`);
106
+ }
107
+ finally {
108
+ o.s.close();
109
+ }
110
+ });
111
+ // ── capture: mint a signed succession capsule for a departing holder ──
112
+ bq.command("capture")
113
+ .description("Mint a SIGNED succession capsule from a holder's at-risk knowledge (the files they know + the current content hash). Hand the capsule id to a successor.")
114
+ .requiredOption("--holder <email>", "the departing/at-risk holder's email.")
115
+ .option("--reason <text>", "why this knowledge matters / handoff context.", "")
116
+ .option("--json", "JSON output.")
117
+ .action(async (opts) => {
118
+ const cwd = process.cwd();
119
+ const o = await openStore(cwd);
120
+ if ("error" in o) {
121
+ out(`✗ ${o.error}`);
122
+ process.exitCode = 1;
123
+ return;
124
+ }
125
+ try {
126
+ const { units } = unitsFromAtrophy(o.s);
127
+ // the holder's units = files they are a knower of; attach current content.
128
+ const held = units
129
+ .filter((u) => u.holders.some((h) => h.id === opts.holder))
130
+ .map((u) => {
131
+ const fp = join(o.root, u.id);
132
+ let content = u.id;
133
+ try {
134
+ if (existsSync(fp))
135
+ content = readFileSync(fp, "utf8");
136
+ }
137
+ catch { /* */ }
138
+ return { ...u, content };
139
+ });
140
+ if (held.length === 0) {
141
+ out(`✗ no at-risk knowledge units held by ${opts.holder} (they may not be a knower of any non-safe file).`);
142
+ process.exitCode = 1;
143
+ return;
144
+ }
145
+ const cap = bequest.mintCapsule({ holderId: opts.holder, units: held, reasoning: opts.reason ?? "" });
146
+ const receipt = sign(cwd, `bequest:capsule:${cap.capsuleId}`, { capsuleId: cap.capsuleId, bodyHash: cap.bodyHash, holderId: cap.holderId, units: cap.units.length });
147
+ try {
148
+ if (!existsSync(join(cwd, DIR)))
149
+ mkdirSync(join(cwd, DIR), { recursive: true });
150
+ writeFileSync(join(cwd, DIR, `${cap.capsuleId}.json`), JSON.stringify({ capsule: cap, signed: receipt }, null, 2));
151
+ }
152
+ catch { /* */ }
153
+ if (opts.json) {
154
+ outJson({ capsule: cap, signed: receipt });
155
+ return;
156
+ }
157
+ out(`🧬 succession capsule minted: ${cap.capsuleId} (holder ${cap.holderId}, ${cap.units.length} unit(s), signed)`);
158
+ out(` units: ${cap.units.map((u) => u.id).join(", ")}`);
159
+ out(` hand off: a successor runs mneme bequest claim --capsule ${cap.capsuleId} --heir <their-email>`);
160
+ }
161
+ finally {
162
+ o.s.close();
163
+ }
164
+ });
165
+ // ── list: stored capsules ──
166
+ bq.command("list")
167
+ .description("List stored succession capsules.")
168
+ .option("--json", "JSON output.")
169
+ .action((opts) => {
170
+ const cwd = process.cwd();
171
+ const dir = join(cwd, DIR);
172
+ const files = existsSync(dir) ? readdirSync(dir).filter((f) => f.endsWith(".json")) : [];
173
+ const rows = files.map((f) => { try {
174
+ const j = JSON.parse(readFileSync(join(dir, f), "utf8"));
175
+ return { capsuleId: j.capsule?.capsuleId, holderId: j.capsule?.holderId, units: j.capsule?.units?.length ?? 0 };
176
+ }
177
+ catch {
178
+ return { capsuleId: f, holderId: "?", units: 0 };
179
+ } });
180
+ if (opts.json) {
181
+ outJson(rows);
182
+ return;
183
+ }
184
+ if (rows.length === 0) {
185
+ out("(no succession capsules — run `mneme bequest capture --holder <email>`)");
186
+ return;
187
+ }
188
+ out(`🧬 ${rows.length} succession capsule(s):`);
189
+ for (const r of rows)
190
+ out(` • ${r.capsuleId} — holder ${r.holderId}, ${r.units} unit(s)`);
191
+ });
192
+ // ── claim: successor verifies the capsule against the current material ──
193
+ bq.command("claim")
194
+ .description("A successor claims a capsule: Mneme re-reads each unit's current content and verifies it matches the signed capsule (transfer-integrity proof), then signs an heir receipt. Drift ⇒ the expert's knowledge changed; re-capture.")
195
+ .requiredOption("--capsule <id>", "the capsule id to inherit.")
196
+ .requiredOption("--heir <email>", "the successor's email.")
197
+ .option("--json", "JSON output.")
198
+ .action(async (opts) => {
199
+ const cwd = process.cwd();
200
+ const o = await openStore(cwd);
201
+ if ("error" in o) {
202
+ out(`✗ ${o.error}`);
203
+ process.exitCode = 1;
204
+ return;
205
+ }
206
+ try {
207
+ const p = join(cwd, DIR, `${opts.capsule}.json`);
208
+ if (!existsSync(p)) {
209
+ out(`✗ capsule ${opts.capsule} not found (run \`mneme bequest list\`).`);
210
+ process.exitCode = 1;
211
+ return;
212
+ }
213
+ const stored = JSON.parse(readFileSync(p, "utf8"));
214
+ const cap = stored.capsule;
215
+ // re-read each unit's current content and hash it the same way mintCapsule did.
216
+ const provided = {};
217
+ const { createHash } = await import("node:crypto");
218
+ for (const u of cap.units) {
219
+ const fp = join(o.root, u.id);
220
+ let content = u.id;
221
+ try {
222
+ if (existsSync(fp))
223
+ content = readFileSync(fp, "utf8");
224
+ }
225
+ catch { /* */ }
226
+ provided[u.id] = createHash("sha256").update(content, "utf8").digest("hex");
227
+ }
228
+ const verdict = bequest.verifyInheritance(cap, opts.heir, provided);
229
+ const receipt = sign(cwd, `bequest:heir:${opts.capsule}:${opts.heir}`, { capsuleId: verdict.capsuleId, heirId: verdict.heirId, ok: verdict.ok, coverageByMass: verdict.coverageByMass });
230
+ if (opts.json) {
231
+ outJson({ verdict, signed: receipt });
232
+ return;
233
+ }
234
+ if (verdict.ok) {
235
+ out(`✅ ${opts.heir} inherited capsule ${opts.capsule} — ${(verdict.coverageByMass * 100).toFixed(0)}% mass coverage, all units intact. Signed heir receipt issued.`);
236
+ out(` note: ${verdict.note}`);
237
+ }
238
+ else {
239
+ out(`⚠ partial/failed inheritance — ${verdict.missing.length} unit(s) drifted since capture: ${verdict.missing.join(", ")}`);
240
+ out(` the expert's knowledge changed; re-capture with \`mneme bequest capture --holder ${cap.holderId}\`.`);
241
+ process.exitCode = 2;
242
+ }
243
+ }
244
+ finally {
245
+ o.s.close();
246
+ }
247
+ });
248
+ }
249
+ //# sourceMappingURL=bequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bequest.js","sourceRoot":"","sources":["../../src/commands/bequest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoJA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsgNvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqJA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAugNvD"}
package/dist/index.js CHANGED
@@ -81,6 +81,7 @@ import { registerSavingsCommands } from "./commands/savings.js";
81
81
  import { registerMapCommands } from "./commands/map.js";
82
82
  import { registerEgressCommands } from "./commands/egress.js";
83
83
  import { registerExecCommands } from "./commands/exec.js";
84
+ import { registerBequestCommands } from "./commands/bequest.js";
84
85
  import { registerTrustCommands } from "./commands/trust.js";
85
86
  import { registerNuclearCommands } from "./commands/nuclear-cli.js";
86
87
  import { registerOvernightCommand } from "./commands/overnight.js";
@@ -4707,6 +4708,7 @@ export async function run(argv) {
4707
4708
  registerMapCommands(program);
4708
4709
  registerEgressCommands(program);
4709
4710
  registerExecCommands(program);
4711
+ registerBequestCommands(program);
4710
4712
  // ─── Trust calibrator (v1.31.0) -- per-subsystem precision/recall/band
4711
4713
  registerTrustCommands(program);
4712
4714
  // ─── Wisdom reactor (v1.33.0) -- five nuclear-physics formulas as Mneme metrics