mneme-ai 2.145.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.
- package/dist/commands/gateway.d.ts +13 -0
- package/dist/commands/gateway.d.ts.map +1 -0
- package/dist/commands/gateway.js +89 -0
- package/dist/commands/gateway.js.map +1 -0
- package/dist/commands/mycelium.d.ts +13 -0
- package/dist/commands/mycelium.d.ts.map +1 -0
- package/dist/commands/mycelium.js +116 -0
- package/dist/commands/mycelium.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme gateway` (v2.146.0) — THE INTENT GATEWAY. Type free natural language
|
|
3
|
+
* (any language, EN/Thai); the Gateway picks the right Mneme command, compiles a
|
|
4
|
+
* runnable invocation, or asks to clarify when it's unsure. Users never memorize
|
|
5
|
+
* a command.
|
|
6
|
+
*
|
|
7
|
+
* mneme gateway "stop all the bots, something feels off"
|
|
8
|
+
* mneme gateway "ดูแลเรื่องงบ 5 หมื่น ห้ามโพสต์ด่าใคร ปล่อยบอทเลย"
|
|
9
|
+
* mneme gateway bench # the signed before→after accuracy benchmark
|
|
10
|
+
*/
|
|
11
|
+
import type { Command } from "commander";
|
|
12
|
+
export declare function registerGatewayCommands(program: Command): void;
|
|
13
|
+
//# sourceMappingURL=gateway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/commands/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4C9D"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme gateway` (v2.146.0) — THE INTENT GATEWAY. Type free natural language
|
|
3
|
+
* (any language, EN/Thai); the Gateway picks the right Mneme command, compiles a
|
|
4
|
+
* runnable invocation, or asks to clarify when it's unsure. Users never memorize
|
|
5
|
+
* a command.
|
|
6
|
+
*
|
|
7
|
+
* mneme gateway "stop all the bots, something feels off"
|
|
8
|
+
* mneme gateway "ดูแลเรื่องงบ 5 หมื่น ห้ามโพสต์ด่าใคร ปล่อยบอทเลย"
|
|
9
|
+
* mneme gateway bench # the signed before→after accuracy benchmark
|
|
10
|
+
*/
|
|
11
|
+
import { intentGateway as gw, notary } from "@mneme-ai/core";
|
|
12
|
+
function out(s) { process.stdout.write(s + "\n"); }
|
|
13
|
+
export function registerGatewayCommands(program) {
|
|
14
|
+
const g = program
|
|
15
|
+
.command("gateway")
|
|
16
|
+
.alias("interpret")
|
|
17
|
+
.argument("[text...]", "free natural language — any language")
|
|
18
|
+
.description("🧭 INTENT GATEWAY — type free natural language (any language, EN/Thai); Mneme picks the RIGHT command for the best result, compiles a runnable invocation, or asks to clarify when unsure (never a confident misfire). You never memorize a command. Curated bilingual concept-map + IDF catalog fallback + abstention; measured (see `mneme gateway bench`).")
|
|
19
|
+
.option("--json", "JSON output (signed)")
|
|
20
|
+
.action((text, opts) => {
|
|
21
|
+
const q = Array.isArray(text) ? text.join(" ") : String(text ?? "");
|
|
22
|
+
if (!q.trim()) {
|
|
23
|
+
out("usage: mneme gateway \"<what you want, in your own words>\"");
|
|
24
|
+
process.exitCode = 2;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const r = gw.route(q);
|
|
28
|
+
let receipt = null;
|
|
29
|
+
try {
|
|
30
|
+
receipt = notary.issueReceipt(process.cwd(), { kind: "claim-verdict", subject: `gateway:${r.verdict}`, payload: { verdict: r.verdict, command: r.command, confidence: r.confidence }, includePayload: true });
|
|
31
|
+
}
|
|
32
|
+
catch { /* */ }
|
|
33
|
+
if (opts.json) {
|
|
34
|
+
out(JSON.stringify({ ...r, signed: receipt }, null, 2));
|
|
35
|
+
process.exitCode = r.verdict === "ROUTED" ? 0 : 2;
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (r.verdict === "ROUTED") {
|
|
39
|
+
out(`🟢 ${r.command} (confidence ${(r.confidence * 100).toFixed(0)}%)`);
|
|
40
|
+
if (r.invocation && r.invocation !== r.command)
|
|
41
|
+
out(` → run: ${r.invocation}`);
|
|
42
|
+
const e = r.entities;
|
|
43
|
+
const ent = [];
|
|
44
|
+
if (e.budget)
|
|
45
|
+
ent.push(`budget=${e.budget}`);
|
|
46
|
+
if (e.forbidden?.length)
|
|
47
|
+
ent.push(`forbidden=${e.forbidden.join(",")}`);
|
|
48
|
+
if (e.scope?.length)
|
|
49
|
+
ent.push(`scope=${e.scope.join(",")}`);
|
|
50
|
+
if (ent.length)
|
|
51
|
+
out(` detected: ${ent.join(" · ")}`);
|
|
52
|
+
}
|
|
53
|
+
else if (r.verdict === "CLARIFY") {
|
|
54
|
+
out(`❔ Not sure — did you mean one of these?`);
|
|
55
|
+
for (const c of r.candidates)
|
|
56
|
+
out(` • ${c.command} (${(c.score).toFixed(2)})`);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
out(`❔ I couldn't map that to a Mneme command — try rephrasing, or 'mneme gateway bench' / 'mneme boot' to see what's possible.`);
|
|
60
|
+
}
|
|
61
|
+
process.exitCode = r.verdict === "ROUTED" ? 0 : 2;
|
|
62
|
+
});
|
|
63
|
+
g.command("bench")
|
|
64
|
+
.description("the signed before→after accuracy benchmark (new Gateway vs the old keyword router) over a labeled EN+Thai corpus.")
|
|
65
|
+
.option("--json", "JSON output")
|
|
66
|
+
.action((opts) => {
|
|
67
|
+
const b = gw.benchmark();
|
|
68
|
+
let receipt = null;
|
|
69
|
+
try {
|
|
70
|
+
receipt = notary.issueReceipt(process.cwd(), { kind: "reasoning-trace", subject: `gateway.bench:${(b.newAcc * 100).toFixed(0)}pct`, payload: { newAcc: b.newAcc, oldAcc: b.oldAcc, n: b.n }, includePayload: true });
|
|
71
|
+
}
|
|
72
|
+
catch { /* */ }
|
|
73
|
+
if (opts.json) {
|
|
74
|
+
out(JSON.stringify({ ...b, signed: receipt }, null, 2));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
out(`🧭 INTENT GATEWAY — accuracy on ${b.n} labeled EN+Thai queries:`);
|
|
78
|
+
out(` NEW gateway: ${b.newTop1}/${b.n} top-1 = ${(b.newAcc * 100).toFixed(0)}%`);
|
|
79
|
+
out(` OLD keyword: ${b.oldTop1}/${b.n} top-1 = ${(b.oldAcc * 100).toFixed(0)}%`);
|
|
80
|
+
out(` abstained (asked to clarify): ${b.abstained}`);
|
|
81
|
+
if (b.newMisses.length) {
|
|
82
|
+
out(" remaining misses:");
|
|
83
|
+
for (const m of b.newMisses)
|
|
84
|
+
out(` ${m}`);
|
|
85
|
+
}
|
|
86
|
+
out(` ${receipt ? "✓ signed · " : ""}measured + re-runnable; 100% NL routing is impossible — the target is high top-1 + abstain on the rest.`);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/commands/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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
|
@@ -98,6 +98,8 @@ import { registerHauntCommands } from "./commands/haunt.js";
|
|
|
98
98
|
import { registerCrucibleCommands } from "./commands/crucible.js";
|
|
99
99
|
import { registerDriftCommands } from "./commands/drift.js";
|
|
100
100
|
import { registerGovernCommands } from "./commands/govern.js";
|
|
101
|
+
import { registerGatewayCommands } from "./commands/gateway.js";
|
|
102
|
+
import { registerMyceliumCommands } from "./commands/mycelium.js";
|
|
101
103
|
import { attachRegretOracle } from "./commands/regret.js";
|
|
102
104
|
import { registerTrustCommands } from "./commands/trust.js";
|
|
103
105
|
import { registerNuclearCommands } from "./commands/nuclear-cli.js";
|
|
@@ -4749,6 +4751,8 @@ export async function run(argv) {
|
|
|
4749
4751
|
registerCrucibleCommands(program);
|
|
4750
4752
|
registerDriftCommands(program);
|
|
4751
4753
|
registerGovernCommands(program);
|
|
4754
|
+
registerGatewayCommands(program);
|
|
4755
|
+
registerMyceliumCommands(program);
|
|
4752
4756
|
// ─── Trust calibrator (v1.31.0) -- per-subsystem precision/recall/band
|
|
4753
4757
|
registerTrustCommands(program);
|
|
4754
4758
|
// ─── Wisdom reactor (v1.33.0) -- five nuclear-physics formulas as Mneme metrics
|