mneme-ai 3.113.0 → 3.115.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/sdc.d.ts +10 -0
- package/dist/commands/sdc.d.ts.map +1 -0
- package/dist/commands/sdc.js +89 -0
- package/dist/commands/sdc.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme sdc` (v3.114.0) — Syndrome-Decoded Consensus: error-correct a multi-agent
|
|
3
|
+
* trust mesh. Detect + locate + recover poisoned/wrong attestations, or abstain.
|
|
4
|
+
*
|
|
5
|
+
* echo '[{"fact":"x","attestations":[{"agent":"a","value":"T"},{"agent":"b","value":"T"},{"agent":"evil","value":"X"}]}]' | mneme sdc decode -
|
|
6
|
+
* mneme sdc bench # the signed A/B: SDC vs plain majority-vote
|
|
7
|
+
*/
|
|
8
|
+
import type { Command } from "commander";
|
|
9
|
+
export declare function registerSdcCommands(program: Command): void;
|
|
10
|
+
//# sourceMappingURL=sdc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdc.d.ts","sourceRoot":"","sources":["../../src/commands/sdc.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqD1D"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme sdc` (v3.114.0) — Syndrome-Decoded Consensus: error-correct a multi-agent
|
|
3
|
+
* trust mesh. Detect + locate + recover poisoned/wrong attestations, or abstain.
|
|
4
|
+
*
|
|
5
|
+
* echo '[{"fact":"x","attestations":[{"agent":"a","value":"T"},{"agent":"b","value":"T"},{"agent":"evil","value":"X"}]}]' | mneme sdc decode -
|
|
6
|
+
* mneme sdc bench # the signed A/B: SDC vs plain majority-vote
|
|
7
|
+
*/
|
|
8
|
+
import { readFileSync } from "node:fs";
|
|
9
|
+
import { sdc, notary } from "@mneme-ai/core";
|
|
10
|
+
function out(s) { process.stdout.write(s + "\n"); }
|
|
11
|
+
export function registerSdcCommands(program) {
|
|
12
|
+
const s = program
|
|
13
|
+
.command("sdc")
|
|
14
|
+
.description("🧬 SDC — Syndrome-Decoded Consensus: treat a multi-agent trust mesh like a QEC codeword. Detects + LOCATES poisoned/wrong attestations from the syndrome, recovers the consensus truth while errors stay under tolerance, or returns UNRECOVERABLE (abstains, never guesses). Beats plain majority-vote when liars are dense per-fact but a minority across the mesh (measured). The error-correction layer for a fleet of AI agents.");
|
|
15
|
+
s.command("decode")
|
|
16
|
+
.description("decode a mesh of facts+attestations (JSON array, '-' for stdin) → per-fact verdict + located bad agents + earned reliability.")
|
|
17
|
+
.argument("[file]", "JSON file ('-' or omitted = stdin)")
|
|
18
|
+
.option("--json", "JSON output")
|
|
19
|
+
.action((file, opts) => {
|
|
20
|
+
let facts;
|
|
21
|
+
try {
|
|
22
|
+
const raw = !file || file === "-" ? readFileSync(0, "utf8") : readFileSync(file, "utf8");
|
|
23
|
+
facts = JSON.parse(raw);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
out("✗ could not read/parse JSON (expected: [{fact, attestations:[{agent,value}]}])");
|
|
27
|
+
process.exitCode = 2;
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const m = sdc.decodeMesh(facts);
|
|
31
|
+
let receipt = null;
|
|
32
|
+
try {
|
|
33
|
+
receipt = notary.issueReceipt(process.cwd(), { kind: "claim-verdict", subject: `sdc:decode:${m.decoded.length}`, payload: { corrupted: m.corruptedAgents, facts: m.decoded.length }, includePayload: true });
|
|
34
|
+
}
|
|
35
|
+
catch { /* */ }
|
|
36
|
+
if (opts.json) {
|
|
37
|
+
out(JSON.stringify({ ...m, signed: receipt }, null, 2));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
out(`🧬 SDC — ${m.decoded.length} fact(s), ${m.iterations} decode iteration(s)`);
|
|
41
|
+
for (const d of m.decoded)
|
|
42
|
+
out(` ${d.verdict === "UNRECOVERABLE" ? "🛑" : d.verdict === "CORRECTED" ? "🔧" : "✓"} ${d.fact}: ${d.verdict}${d.value !== null ? ` → ${d.value}` : ""}${d.dissenters.length ? ` (dissent: ${d.dissenters.join(",")})` : ""}`);
|
|
43
|
+
if (m.corruptedAgents.length)
|
|
44
|
+
out(` ⚠ located bad agents: ${m.corruptedAgents.join(", ")}`);
|
|
45
|
+
out(` reliability: ${Object.entries(m.reliability).map(([a, r]) => `${a}=${r}`).join(" · ")}`);
|
|
46
|
+
});
|
|
47
|
+
s.command("health")
|
|
48
|
+
.description("Memory Syndrome Health: catch a POISONED or DRIFTED memory cluster before an agent trusts it (the signed A/B — poison detection precision/recall).")
|
|
49
|
+
.option("--json", "JSON output")
|
|
50
|
+
.option("--seed <n>", "scenario seed", "7")
|
|
51
|
+
.action((opts) => {
|
|
52
|
+
const b = sdc.memHealthBench(parseInt(opts.seed ?? "7", 10) || 7);
|
|
53
|
+
let receipt = null;
|
|
54
|
+
try {
|
|
55
|
+
receipt = notary.issueReceipt(process.cwd(), { kind: "reasoning-trace", subject: `sdc.health:r${b.recall}p${b.precision}`, payload: { recall: b.recall, precision: b.precision }, includePayload: true });
|
|
56
|
+
}
|
|
57
|
+
catch { /* */ }
|
|
58
|
+
if (opts.json) {
|
|
59
|
+
out(JSON.stringify({ ...b, signed: receipt }, null, 2));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
out(`🔷 SDC Memory Health — ${b.trials} memories (${b.poisonInjected} poisoned injected):`);
|
|
63
|
+
out(` poison detected: ${b.detected}/${b.poisonInjected} · recall ${(b.recall * 100).toFixed(0)}% · precision ${(b.precision * 100).toFixed(0)}% (${b.falseFlags} false flag)`);
|
|
64
|
+
out(` model-drift caught: ${b.driftCaught ? "yes" : "no"} · clean cluster stays HEALTHY: ${b.cleanStaysHealthy ? "yes" : "no"}`);
|
|
65
|
+
out(` ${receipt ? "✓ signed · " : ""}HONEST: localized outliers → POISONED (flagged); systemic shift → DRIFTED; detects vs a TRUSTED baseline parity commitment.`);
|
|
66
|
+
});
|
|
67
|
+
s.command("bench")
|
|
68
|
+
.description("the signed A/B: Syndrome-Decoded Consensus vs plain majority-vote on a labeled mesh (sustained-liar regime).")
|
|
69
|
+
.option("--json", "JSON output")
|
|
70
|
+
.option("--seed <n>", "scenario seed", "7")
|
|
71
|
+
.action((opts) => {
|
|
72
|
+
const b = sdc.sdcBench(parseInt(opts.seed ?? "7", 10) || 7);
|
|
73
|
+
let receipt = null;
|
|
74
|
+
try {
|
|
75
|
+
receipt = notary.issueReceipt(process.cwd(), { kind: "reasoning-trace", subject: `sdc.bench:${(b.sdcAcc * 100).toFixed(0)}vs${(b.majorityAcc * 100).toFixed(0)}`, payload: { sdcAcc: b.sdcAcc, majorityAcc: b.majorityAcc }, includePayload: true });
|
|
76
|
+
}
|
|
77
|
+
catch { /* */ }
|
|
78
|
+
if (opts.json) {
|
|
79
|
+
out(JSON.stringify({ ...b, signed: receipt }, null, 2));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
out(`🧬 SDC A/B — ${b.facts} labeled facts (sustained-liar regime):`);
|
|
83
|
+
out(` plain majority-vote: ${b.majorityCorrect}/${b.facts} = ${(b.majorityAcc * 100).toFixed(0)}%`);
|
|
84
|
+
out(` Syndrome-Decoded: ${b.sdcCorrect}/${b.facts} = ${(b.sdcAcc * 100).toFixed(0)}% (+${((b.sdcAcc - b.majorityAcc) * 100).toFixed(0)} pts)`);
|
|
85
|
+
out(` byzantine located: precision ${b.byzantinePrecision} · recall ${b.byzantineRecall}`);
|
|
86
|
+
out(` ${receipt ? "✓ signed · " : ""}HONEST: corrects sustained liars who are a global minority; a colluding majority everywhere → UNRECOVERABLE (abstain, never guess).`);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=sdc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdc.js","sourceRoot":"","sources":["../../src/commands/sdc.ts"],"names":[],"mappings":"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"}
|
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":"AAsMA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAymNvD"}
|
package/dist/index.js
CHANGED
|
@@ -128,6 +128,7 @@ import { registerMorphCommands } from "./commands/morph.js";
|
|
|
128
128
|
import { registerMyceliumCommands } from "./commands/mycelium.js";
|
|
129
129
|
import { registerSiegeCommands } from "./commands/siege.js";
|
|
130
130
|
import { registerCanonCommands } from "./commands/canon.js";
|
|
131
|
+
import { registerSdcCommands } from "./commands/sdc.js";
|
|
131
132
|
import { registerMoatCommands } from "./commands/moat.js";
|
|
132
133
|
import { attachRegretOracle } from "./commands/regret.js";
|
|
133
134
|
import { registerTrustCommands } from "./commands/trust.js";
|
|
@@ -4813,6 +4814,7 @@ export async function run(argv) {
|
|
|
4813
4814
|
registerMyceliumCommands(program);
|
|
4814
4815
|
registerSiegeCommands(program);
|
|
4815
4816
|
registerCanonCommands(program);
|
|
4817
|
+
registerSdcCommands(program);
|
|
4816
4818
|
registerMoatCommands(program);
|
|
4817
4819
|
// ─── Trust calibrator (v1.31.0) -- per-subsystem precision/recall/band
|
|
4818
4820
|
registerTrustCommands(program);
|