mneme-ai 2.146.0 → 2.147.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 mycelium` (v2.147.0) — the Sovereign Data Flywheel. Share signed,
3
+ * content-free lesson digests across Mneme nodes so the whole network gets
4
+ * smarter — with NO central data store. Local data never leaves; only hashes +
5
+ * DP-noised counts do.
6
+ *
7
+ * mneme mycelium bundle --out lessons.bundle.json # signed, content-free, DP-noised
8
+ * mneme mycelium merge --bundle peer.bundle.json # CRDT-merge a peer's lessons
9
+ * mneme mycelium status # mesh size + worked/failed split
10
+ */
11
+ import type { Command } from "commander";
12
+ export declare function registerMyceliumCommands(program: Command): void;
13
+ //# sourceMappingURL=mycelium.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mycelium.d.ts","sourceRoot":"","sources":["../../src/commands/mycelium.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2C/D"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * `mneme mycelium` (v2.147.0) — the Sovereign Data Flywheel. Share signed,
3
+ * content-free lesson digests across Mneme nodes so the whole network gets
4
+ * smarter — with NO central data store. Local data never leaves; only hashes +
5
+ * DP-noised counts do.
6
+ *
7
+ * mneme mycelium bundle --out lessons.bundle.json # signed, content-free, DP-noised
8
+ * mneme mycelium merge --bundle peer.bundle.json # CRDT-merge a peer's lessons
9
+ * mneme mycelium status # mesh size + worked/failed split
10
+ */
11
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
12
+ import { join, dirname } from "node:path";
13
+ import { mycelium as myc, notary } from "@mneme-ai/core";
14
+ function out(s) { process.stdout.write(s + "\n"); }
15
+ const MESH = ".mneme/mycelium/mesh.json";
16
+ /** Best-effort: harvest local outcomes from the regret + nkl ledgers (content stays local). */
17
+ function localOutcomes(cwd) {
18
+ const o = [];
19
+ try {
20
+ const rp = join(cwd, ".mneme", "regret", "outcomes.jsonl");
21
+ if (existsSync(rp))
22
+ for (const l of readFileSync(rp, "utf8").split("\n")) {
23
+ if (!l.trim())
24
+ continue;
25
+ try {
26
+ const j = JSON.parse(l);
27
+ o.push({ topic: (j.features || []).join(" "), approach: (j.features || []).join(","), kind: j.regretted ? "failed" : "worked" });
28
+ }
29
+ catch { /* */ }
30
+ }
31
+ }
32
+ catch { /* */ }
33
+ return o;
34
+ }
35
+ function readMesh(cwd) { try {
36
+ const p = join(cwd, MESH);
37
+ if (existsSync(p)) {
38
+ const j = JSON.parse(readFileSync(p, "utf8"));
39
+ return Array.isArray(j.lessons) ? j.lessons : [];
40
+ }
41
+ }
42
+ catch { /* */ } return []; }
43
+ function writeMesh(cwd, lessons) { try {
44
+ const p = join(cwd, MESH);
45
+ if (!existsSync(dirname(p)))
46
+ mkdirSync(dirname(p), { recursive: true });
47
+ writeFileSync(p, JSON.stringify({ v: 1, lessons }, null, 2));
48
+ }
49
+ catch { /* */ } }
50
+ export function registerMyceliumCommands(program) {
51
+ const m = program
52
+ .command("mycelium")
53
+ .description("🍄 MYCELIUM — the Sovereign Data Flywheel: share SIGNED, content-free lesson digests (hashes + DP-noised counts, never raw code/secrets) across Mneme nodes so the whole network gets smarter with NO central data store. Captures what WORKED and what FAILED (negative knowledge). The privacy-preserving flywheel only a local-first system can run.");
54
+ m.command("bundle")
55
+ .description("build a signed, content-free, DP-noised bundle of local lessons to share with peers.")
56
+ .option("--out <file>", "write the bundle JSON here (else stdout)")
57
+ .option("--epsilon <n>", "differential-privacy epsilon (default 1)", (v) => parseFloat(v))
58
+ .action((opts) => {
59
+ const cwd = process.cwd();
60
+ const lessons = myc.extractLessons(localOutcomes(cwd), "node");
61
+ const b = myc.buildBundle(lessons, { epsilon: opts.epsilon ?? 1, sample: () => 0 });
62
+ let receipt = null;
63
+ try {
64
+ receipt = notary.issueReceipt(cwd, { kind: "memory-capsule", subject: `mycelium.bundle:${b.lessons.length}`, payload: { count: b.lessons.length, epsilon: b.epsilon }, includePayload: true });
65
+ }
66
+ catch { /* */ }
67
+ const bundle = { ...b, signed: receipt };
68
+ if (opts.out) {
69
+ try {
70
+ writeFileSync(opts.out, JSON.stringify(bundle, null, 2));
71
+ out(`🍄 wrote ${b.lessons.length} content-free lessons → ${opts.out} (signed, DP ε=${b.epsilon})`);
72
+ }
73
+ catch {
74
+ out("✗ write failed");
75
+ process.exitCode = 1;
76
+ }
77
+ }
78
+ else
79
+ out(JSON.stringify(bundle, null, 2));
80
+ });
81
+ m.command("merge")
82
+ .description("CRDT-merge a peer's lesson bundle into the local mesh (signature-verified; forged dropped). Commutative + idempotent.")
83
+ .requiredOption("--bundle <file>", "peer bundle JSON")
84
+ .action((opts) => {
85
+ const cwd = process.cwd();
86
+ if (!existsSync(opts.bundle)) {
87
+ out("✗ bundle not found");
88
+ process.exitCode = 2;
89
+ return;
90
+ }
91
+ let incoming = [];
92
+ try {
93
+ const j = JSON.parse(readFileSync(opts.bundle, "utf8"));
94
+ incoming = Array.isArray(j.lessons) ? j.lessons : [];
95
+ }
96
+ catch {
97
+ out("✗ bad bundle JSON");
98
+ process.exitCode = 2;
99
+ return;
100
+ }
101
+ const r = myc.mergeBundles(readMesh(cwd), incoming);
102
+ writeMesh(cwd, r.merged);
103
+ out(`🍄 merged — +${r.added} new · ~${r.updated} updated · ${r.dropped} dropped · mesh now ${r.merged.length} lessons`);
104
+ });
105
+ m.command("status")
106
+ .description("mesh size + worked/failed split + topics covered.")
107
+ .action(() => {
108
+ const mesh = readMesh(process.cwd());
109
+ const worked = mesh.filter((l) => l.kind === "worked").length;
110
+ const failed = mesh.filter((l) => l.kind === "failed").length;
111
+ const topics = new Set(mesh.map((l) => l.topicHash)).size;
112
+ out(`🍄 MYCELIUM mesh — ${mesh.length} lessons · ✅ ${worked} worked · ❌ ${failed} failed (negative knowledge) · ${topics} topics`);
113
+ out(" content-free + signed; the network compounds without a central data store.");
114
+ });
115
+ }
116
+ //# sourceMappingURL=mycelium.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mycelium.js","sourceRoot":"","sources":["../../src/commands/mycelium.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEzD,SAAS,GAAG,CAAC,CAAS,IAAU,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,MAAM,IAAI,GAAG,2BAA2B,CAAC;AAEzC,+FAA+F;AAC/F,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,CAAC,GAAuB,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC3D,IAAI,UAAU,CAAC,EAAE,CAAC;YAAE,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAAC,IAAI,CAAC;oBAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;IAC3R,CAAC;IAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACjB,OAAO,CAAC,CAAC;AACX,CAAC;AACD,SAAS,QAAQ,CAAC,GAAW,IAAkB,IAAI,CAAC;IAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACtO,SAAS,SAAS,CAAC,GAAW,EAAE,OAAqB,IAAU,IAAI,CAAC;IAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE1P,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,CAAC,GAAG,OAAO;SACd,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,yVAAyV,CAAC,CAAC;IAE1W,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;SAChB,WAAW,CAAC,sFAAsF,CAAC;SACnG,MAAM,CAAC,cAAc,EAAE,0CAA0C,CAAC;SAClE,MAAM,CAAC,eAAe,EAAE,0CAA0C,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACzF,MAAM,CAAC,CAAC,IAAwC,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACpF,IAAI,OAAO,GAAY,IAAI,CAAC;QAC5B,IAAI,CAAC;YAAC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QACvN,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC;gBAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,2BAA2B,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YAAC,CAAC;QAAC,CAAC;;YACzO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEL,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;SACf,WAAW,CAAC,uHAAuH,CAAC;SACpI,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;SACrD,MAAM,CAAC,CAAC,IAAwB,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC1F,IAAI,QAAQ,GAAiB,EAAE,CAAC;QAChC,IAAI,CAAC;YAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACxL,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpD,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACzB,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC;IAC1H,CAAC,CAAC,CAAC;IAEL,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;SAChB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,GAAG,CAAC,sBAAsB,IAAI,CAAC,MAAM,gBAAgB,MAAM,eAAe,MAAM,kCAAkC,MAAM,SAAS,CAAC,CAAC;QACnI,GAAG,CAAC,+EAA+E,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuKA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAukNvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwKA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwkNvD"}
package/dist/index.js CHANGED
@@ -99,6 +99,7 @@ import { registerCrucibleCommands } from "./commands/crucible.js";
99
99
  import { registerDriftCommands } from "./commands/drift.js";
100
100
  import { registerGovernCommands } from "./commands/govern.js";
101
101
  import { registerGatewayCommands } from "./commands/gateway.js";
102
+ import { registerMyceliumCommands } from "./commands/mycelium.js";
102
103
  import { attachRegretOracle } from "./commands/regret.js";
103
104
  import { registerTrustCommands } from "./commands/trust.js";
104
105
  import { registerNuclearCommands } from "./commands/nuclear-cli.js";
@@ -4751,6 +4752,7 @@ export async function run(argv) {
4751
4752
  registerDriftCommands(program);
4752
4753
  registerGovernCommands(program);
4753
4754
  registerGatewayCommands(program);
4755
+ registerMyceliumCommands(program);
4754
4756
  // ─── Trust calibrator (v1.31.0) -- per-subsystem precision/recall/band
4755
4757
  registerTrustCommands(program);
4756
4758
  // ─── Wisdom reactor (v1.33.0) -- five nuclear-physics formulas as Mneme metrics