@mneme-ai/core 2.6.0 → 2.8.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/ai_handshake.d.ts.map +1 -1
- package/dist/ai_handshake.js +9 -11
- package/dist/ai_handshake.js.map +1 -1
- package/dist/antivirus/vaccines.js +8 -8
- package/dist/antivirus/vaccines.js.map +1 -1
- package/dist/birthright/birthright.test.d.ts +2 -0
- package/dist/birthright/birthright.test.d.ts.map +1 -0
- package/dist/birthright/birthright.test.js +102 -0
- package/dist/birthright/birthright.test.js.map +1 -0
- package/dist/birthright/index.d.ts +85 -0
- package/dist/birthright/index.d.ts.map +1 -0
- package/dist/birthright/index.js +132 -0
- package/dist/birthright/index.js.map +1 -0
- package/dist/evolve/evolve.js +7 -7
- package/dist/evolve/evolve.js.map +1 -1
- package/dist/exodus/quantum_cache.js +7 -7
- package/dist/exodus/quantum_cache.js.map +1 -1
- package/dist/forensics/stack-priors.d.ts.map +1 -1
- package/dist/forensics/stack-priors.js +6 -8
- package/dist/forensics/stack-priors.js.map +1 -1
- package/dist/handoff/handoff.test.d.ts +2 -0
- package/dist/handoff/handoff.test.d.ts.map +1 -0
- package/dist/handoff/handoff.test.js +67 -0
- package/dist/handoff/handoff.test.js.map +1 -0
- package/dist/handoff/index.d.ts +86 -0
- package/dist/handoff/index.d.ts.map +1 -0
- package/dist/handoff/index.js +168 -0
- package/dist/handoff/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -1
- package/dist/metron/code_audit.d.ts +55 -0
- package/dist/metron/code_audit.d.ts.map +1 -0
- package/dist/metron/code_audit.js +140 -0
- package/dist/metron/code_audit.js.map +1 -0
- package/dist/metron/code_audit.test.d.ts +2 -0
- package/dist/metron/code_audit.test.d.ts.map +1 -0
- package/dist/metron/code_audit.test.js +81 -0
- package/dist/metron/code_audit.test.js.map +1 -0
- package/dist/metron/index.d.ts +95 -0
- package/dist/metron/index.d.ts.map +1 -0
- package/dist/metron/index.js +393 -0
- package/dist/metron/index.js.map +1 -0
- package/dist/metron/metron.test.d.ts +2 -0
- package/dist/metron/metron.test.d.ts.map +1 -0
- package/dist/metron/metron.test.js +123 -0
- package/dist/metron/metron.test.js.map +1 -0
- package/dist/metron/update_notifier.d.ts +56 -0
- package/dist/metron/update_notifier.d.ts.map +1 -0
- package/dist/metron/update_notifier.js +162 -0
- package/dist/metron/update_notifier.js.map +1 -0
- package/dist/nucleus_daemon.d.ts.map +1 -1
- package/dist/nucleus_daemon.js +14 -14
- package/dist/nucleus_daemon.js.map +1 -1
- package/dist/pulse.js +13 -13
- package/dist/pulse.js.map +1 -1
- package/dist/shadow_consensus/index.d.ts +117 -0
- package/dist/shadow_consensus/index.d.ts.map +1 -0
- package/dist/shadow_consensus/index.js +132 -0
- package/dist/shadow_consensus/index.js.map +1 -0
- package/dist/shadow_consensus/shadow_consensus.test.d.ts +2 -0
- package/dist/shadow_consensus/shadow_consensus.test.d.ts.map +1 -0
- package/dist/shadow_consensus/shadow_consensus.test.js +84 -0
- package/dist/shadow_consensus/shadow_consensus.test.js.map +1 -0
- package/dist/util/best_effort.d.ts +32 -0
- package/dist/util/best_effort.d.ts.map +1 -0
- package/dist/util/best_effort.js +58 -0
- package/dist/util/best_effort.js.map +1 -0
- package/dist/wormhole/auto_wire.d.ts +68 -0
- package/dist/wormhole/auto_wire.d.ts.map +1 -0
- package/dist/wormhole/auto_wire.js +186 -0
- package/dist/wormhole/auto_wire.js.map +1 -0
- package/package.json +1 -1
package/dist/pulse.js
CHANGED
|
@@ -69,7 +69,7 @@ export function collectPulseStatus(repoRoot) {
|
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
catch { /* silent
|
|
72
|
+
catch { /* BE:silent-by-design silent */ }
|
|
73
73
|
// Version. v1.27.3 (HOTFIX): the comparison MUST use the LIVE
|
|
74
74
|
// current version (readMyVersion above), not the `v.current` field
|
|
75
75
|
// from the cache. AND must use semver "latest > current", not just
|
|
@@ -92,7 +92,7 @@ export function collectPulseStatus(repoRoot) {
|
|
|
92
92
|
status.version.updateAvailable = true;
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
catch { /* ignore
|
|
95
|
+
catch { /* BE:silent-by-design ignore */ }
|
|
96
96
|
}
|
|
97
97
|
// Daemon heartbeat
|
|
98
98
|
const hbPath = join(repoRoot, ".mneme/nucleus.heartbeat.json");
|
|
@@ -104,7 +104,7 @@ export function collectPulseStatus(repoRoot) {
|
|
|
104
104
|
const ageMs = hb.lastTick ? Date.now() - Date.parse(hb.lastTick) : Infinity;
|
|
105
105
|
status.daemon.running = ageMs < 5 * 60 * 1000;
|
|
106
106
|
}
|
|
107
|
-
catch { /* ignore
|
|
107
|
+
catch { /* BE:silent-by-design ignore */ }
|
|
108
108
|
}
|
|
109
109
|
// Inbox unsent count + collect:
|
|
110
110
|
// - AUTO-ACTION-flagged messages (v1.26.3, surface as [AUTO-ACTION])
|
|
@@ -133,7 +133,7 @@ export function collectPulseStatus(repoRoot) {
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
|
-
catch { /* skip
|
|
136
|
+
catch { /* BE:silent-by-design skip */ }
|
|
137
137
|
}
|
|
138
138
|
status.inbox.unsent = unsent;
|
|
139
139
|
// Cache for renderPulse via non-enumerable side-channels so the
|
|
@@ -141,7 +141,7 @@ export function collectPulseStatus(repoRoot) {
|
|
|
141
141
|
Object.defineProperty(status.inbox, "_autoActions", { value: inboxAutoActions, enumerable: false });
|
|
142
142
|
Object.defineProperty(status.inbox, "_priority", { value: inboxPriority, enumerable: false });
|
|
143
143
|
}
|
|
144
|
-
catch { /* ignore
|
|
144
|
+
catch { /* BE:silent-by-design ignore */ }
|
|
145
145
|
}
|
|
146
146
|
// Antivirus
|
|
147
147
|
const avStatsPath = join(repoRoot, ".mneme/antivirus/stats.json");
|
|
@@ -150,7 +150,7 @@ export function collectPulseStatus(repoRoot) {
|
|
|
150
150
|
const s = JSON.parse(readFileSync(avStatsPath, "utf8"));
|
|
151
151
|
status.antivirus.totalInfectionsCaught = s.totalInfectionsCaught ?? 0;
|
|
152
152
|
}
|
|
153
|
-
catch { /* ignore
|
|
153
|
+
catch { /* BE:silent-by-design ignore */ }
|
|
154
154
|
}
|
|
155
155
|
const avPharm = join(repoRoot, ".mneme/antivirus/pharmacopoeia.json");
|
|
156
156
|
if (existsSync(avPharm)) {
|
|
@@ -159,7 +159,7 @@ export function collectPulseStatus(repoRoot) {
|
|
|
159
159
|
status.antivirus.activeVaccines = p.vaccines?.length ?? 0;
|
|
160
160
|
status.antivirus.uncertified = (p.vaccines ?? []).filter((v) => v.efficacy?.f1 == null).length;
|
|
161
161
|
}
|
|
162
|
-
catch { /* ignore
|
|
162
|
+
catch { /* BE:silent-by-design ignore */ }
|
|
163
163
|
}
|
|
164
164
|
// Retrieval lab
|
|
165
165
|
const lbPath = join(repoRoot, ".mneme/retrieval/leaderboard.json");
|
|
@@ -169,7 +169,7 @@ export function collectPulseStatus(repoRoot) {
|
|
|
169
169
|
status.retrieval.totalTrials = lb.totalTrials ?? 0;
|
|
170
170
|
status.retrieval.activeConfig = lb.active ?? null;
|
|
171
171
|
}
|
|
172
|
-
catch { /* ignore
|
|
172
|
+
catch { /* BE:silent-by-design ignore */ }
|
|
173
173
|
}
|
|
174
174
|
// Build notable[] from the gathered state.
|
|
175
175
|
// v1.27.3 (HOTFIX): belt-and-suspenders. Even if upstream logic
|
|
@@ -272,7 +272,7 @@ export function renderPulse(status, opts = {}) {
|
|
|
272
272
|
const hci = computeHci(opts.repoRoot);
|
|
273
273
|
hciSuffix = ` hci=${hci.score}/100[${hci.band}]`;
|
|
274
274
|
}
|
|
275
|
-
catch { /* */ }
|
|
275
|
+
catch { /* BE:silent-by-design */ }
|
|
276
276
|
}
|
|
277
277
|
// v1.30.0 -- show the embedder tier on the pulse line so the user can
|
|
278
278
|
// tell at a glance whether their "memory layer" is real semantic search
|
|
@@ -417,7 +417,7 @@ export function hasAutoBootMarker(homeDir, repoRoot) {
|
|
|
417
417
|
if (existsSync(serviceMarkerPath(homeDir)))
|
|
418
418
|
return true;
|
|
419
419
|
}
|
|
420
|
-
catch { /* */ }
|
|
420
|
+
catch { /* BE:silent-by-design */ }
|
|
421
421
|
// Repo-local fallback marker.
|
|
422
422
|
if (repoRoot) {
|
|
423
423
|
try {
|
|
@@ -425,7 +425,7 @@ export function hasAutoBootMarker(homeDir, repoRoot) {
|
|
|
425
425
|
if (existsSync(repoMarker))
|
|
426
426
|
return true;
|
|
427
427
|
}
|
|
428
|
-
catch { /* */ }
|
|
428
|
+
catch { /* BE:silent-by-design */ }
|
|
429
429
|
}
|
|
430
430
|
return false;
|
|
431
431
|
}
|
|
@@ -442,7 +442,7 @@ function writeAutoBootMarker(detail, homeDir, repoRoot) {
|
|
|
442
442
|
return true;
|
|
443
443
|
}
|
|
444
444
|
}
|
|
445
|
-
catch { /* fall through to repo-local fallback
|
|
445
|
+
catch { /* BE:silent-by-design fall through to repo-local fallback */ }
|
|
446
446
|
// Fallback: repo-local marker so we don't re-attempt every prompt
|
|
447
447
|
// when home is unwritable (sandboxed envs, locked-down corp boxes).
|
|
448
448
|
if (repoRoot) {
|
|
@@ -485,7 +485,7 @@ function spawnDetachedSilent(args) {
|
|
|
485
485
|
child.on("error", () => { });
|
|
486
486
|
child.unref();
|
|
487
487
|
}
|
|
488
|
-
catch { /* swallow
|
|
488
|
+
catch { /* BE:silent-by-design swallow */ }
|
|
489
489
|
};
|
|
490
490
|
try {
|
|
491
491
|
const cmd = mnemeCmdName();
|
package/dist/pulse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pulse.js","sourceRoot":"","sources":["../src/pulse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pulse.js","sourceRoot":"","sources":["../src/pulse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAsB,MAAM,uBAAuB,CAAC;AACzH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AA+BtE;uDACuD;AACvD,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;QAC3E,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;QAC3C,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QACpB,SAAS,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;QAC1E,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE;QACjD,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,oEAAoE;IACpE,oEAAoE;IACpE,oEAAoE;IACpE,yCAAyC;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtF,CAAC;QACD,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAE9C,8DAA8D;IAC9D,mEAAmE;IACnE,mEAAmE;IACnE,kEAAkE;IAClE,yCAAyC;IACzC,EAAE;IACF,mEAAmE;IACnE,+DAA+D;IAC/D,kEAAkE;IAClE,iEAAiE;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAA0C,CAAC;YAC3F,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;YACzC,IACE,CAAC,CAAC,MAAM;gBACR,MAAM,CAAC,OAAO,CAAC,OAAO;gBACtB,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS;gBACpC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAC1C,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;YACxC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAChD,CAAC;IAED,mBAAmB;IACnB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;IAC/D,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAA8C,CAAC;YACjG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC;YAC/C,kDAAkD;YAClD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5E,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAChD,CAAC;IAED,gCAAgC;IAChC,uEAAuE;IACvE,iEAAiE;IACjE,kEAAkE;IAClE,oEAAoE;IACpE,iEAAiE;IACjE,6BAA6B;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAqG,EAAE,CAAC;IAC9H,MAAM,aAAa,GAAwF,EAAE,CAAC;IAC9G,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjF,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAmK,CAAC;oBAC3L,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;wBAC1B,MAAM,EAAE,CAAC;wBACT,IAAI,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;4BAC7E,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC5H,CAAC;6BAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;4BACnF,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;wBACnG,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,gCAAgC,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7B,gEAAgE;YAChE,qEAAqE;YACrE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YACpG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAChG,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAChD,CAAC;IAED,YAAY;IACZ,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAuC,CAAC;YAC9F,MAAM,CAAC,SAAS,CAAC,qBAAqB,GAAG,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,qCAAqC,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAuE,CAAC;YAC1H,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;YAC1D,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC;QACjG,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,mCAAmC,CAAC,CAAC;IACnE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAA8C,CAAC;YACjG,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAChD,CAAC;IAED,2CAA2C;IAC3C,gEAAgE;IAChE,mEAAmE;IACnE,gEAAgE;IAChE,2DAA2D;IAC3D,8DAA8D;IAC9D,IACE,MAAM,CAAC,OAAO,CAAC,eAAe;QAC9B,MAAM,CAAC,OAAO,CAAC,MAAM;QACrB,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS;QACpC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvD,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,4BAA4B,MAAM,CAAC,OAAO,CAAC,OAAO,iFAAiF;YACxK,UAAU,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;SACrF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,MAAM,wBAAwB,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,qDAAqD;SACxJ,CAAC,CAAC;IACL,CAAC;IACD,6DAA6D;IAC7D,iEAAiE;IACjE,iEAAiE;IACjE,6BAA6B;IAC7B,MAAM,iBAAiB,GAAI,MAAM,CAAC,KAA6G,CAAC,SAAS,IAAI,EAAE,CAAC;IAChK,KAAK,MAAM,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC;QAC7E,qEAAqE;QACrE,iEAAiE;QACjE,wEAAwE;QACxE,+DAA+D;QAC/D,MAAM,SAAS,GAAG,yBAAyB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK;YACL,IAAI,EAAE,GAAG,QAAQ,KAAK,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE;SAClF,CAAC,CAAC;IACL,CAAC;IACD,yEAAyE;IACzE,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,wBAAwB,GAAI,MAAM,CAAC,KAA6H,CAAC,YAAY,IAAI,EAAE,CAAC;IAC1L,KAAK,MAAM,EAAE,IAAI,wBAAwB,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,yBAAyB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;YACvD,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QAC5E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,qBAAqB,MAAM,CAAC,SAAS,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,0EAA0E;YACjL,UAAU,EAAE,EAAE,IAAI,EAAE,gCAAgC,EAAE,IAAI,EAAE,EAAE,EAAE;SACjE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;+DAQ+D;AAC/D,MAAM,UAAU,WAAW,CAAC,MAAmB,EAAE,OAAgE,EAAE;IACjH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;IACnC,IAAI,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,mEAAmE;IACnE,oEAAoE;IACpE,mEAAmE;IACnE,+DAA+D;IAC/D,+CAA+C;IAC/C,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAC7B,MAAM,CAAC,OAAO,CAAC,MAAM;QACrB,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS;QACpC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CACxD,CAAC;IACF,MAAM,UAAU,GAAG,oBAAoB;QACrC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG;QAClE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC;IAC1C,iEAAiE;IACjE,gEAAgE;IAChE,sEAAsE;IACtE,4DAA4D;IAC5D,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,SAAS,GAAG,SAAS,GAAG,CAAC,KAAK,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IACzC,CAAC;IACD,sEAAsE;IACtE,wEAAwE;IACxE,+DAA+D;IAC/D,+DAA+D;IAC/D,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACzG,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3D,SAAS,GAAG,SAAS,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC;IACjE,CAAC;IACD,sEAAsE;IACtE,mEAAmE;IACnE,0DAA0D;IAC1D,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,YAAY,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,kBAAkB,MAAM,CAAC,KAAK,CAAC,MAAM,cAAc,MAAM,CAAC,SAAS,CAAC,cAAc,sBAAsB,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC;IACvP,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjG,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;gBACjB,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3F,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ;gBAAE,aAAa,GAAG,IAAI,CAAC;QACjD,CAAC;QACD,6DAA6D;QAC7D,qEAAqE;QACrE,iEAAiE;QACjE,oEAAoE;QACpE,sEAAsE;QACtE,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,qMAAqM,CAAC,CAAC;QACpN,CAAC;IACH,CAAC;IACD,gEAAgE;IAChE,kEAAkE;IAClE,yBAAyB;IACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;IACD,oEAAoE;IACpE,sEAAsE;IACtE,mEAAmE;IACnE,wEAAwE;IACxE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAkB;gBAC1B,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;gBAC/B,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;gBACpC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;gBACxC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;gBAChC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc;gBACzC,mBAAmB,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW;gBACjD,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW;gBAC7C,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;gBACvE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,IAAI,IAAI;aAC5C,CAAC;YACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,SAAS,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YACD,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,mEAAmE;IACnE,gEAAgE;IAChE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,GAAG,GAAI,MAAM,CAAC,KAAkD,CAAC,YAAY,IAAI,EAAE,CAAC;QAC1F,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,oEAAoE;IACpE,kEAAkE;IAClE,sDAAsD;IACtD,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa;IACpB,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED,2EAA2E;AAC3E,EAAE;AACF,4DAA4D;AAC5D,sEAAsE;AACtE,wEAAwE;AACxE,wEAAwE;AACxE,0CAA0C;AAC1C,EAAE;AACF,mEAAmE;AACnE,gEAAgE;AAChE,sEAAsE;AACtE,gEAAgE;AAChE,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,oEAAoE;AACpE,oEAAoE;AACpE,uBAAuB;AACvB,EAAE;AACF,kEAAkE;AAClE,kEAAkE;AAClE,mEAAmE;AACnE,gCAAgC;AAEhC,MAAM,uBAAuB,GAAG,+BAA+B,CAAC;AAEhE;yEACyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,UAAkB,OAAO,EAAE;IAC3D,OAAO,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;AAChD,CAAC;AAED;;;0EAG0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAE,QAAiB;IACnE,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IACvC,8BAA8B;IAC9B,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAC;YACrE,IAAI,UAAU,CAAC,UAAU,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;wDAGwD;AACxD,SAAS,mBAAmB,CAAC,MAAc,EAAE,OAAgB,EAAE,QAAiB;IAC9E,8BAA8B;IAC9B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;QAClC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,MAAM,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1F,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,+DAA+D,CAAC,CAAC;IAC3E,kEAAkE;IAClE,oEAAoE;IACpE,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,MAAM,IAAI,EAAE,MAAM,CAAC,CAAC;YACrG,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;8CAC8C;AAC9C,SAAS,YAAY;IACnB,OAAO,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;AACxD,CAAC;AAED;;;;;;;;;;uEAUuE;AACvE,SAAS,mBAAmB,CAAC,IAAc;IACzC,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC;IACrC,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE;gBACtE,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAA4C,CAAC,CAAC,CAAC;YACtE,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;IACjD,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,KAAK,EAAkB,6BAA6B;YAC3D,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;QAC/D,YAAY,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AA4BD,MAAM,UAAU,uBAAuB,CAAC,aAAsB,EAAE,OAAwB,EAAE;IACxF,IAAI,aAAa;QAAE,OAAO;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,mBAAmB,CAAC;IACpD,wCAAwC;IACxC,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3C,+CAA+C;IAC/C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;QAChD,mBAAmB,CAAC,wBAAwB,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.8.0 -- SHADOW CONSENSUS.
|
|
3
|
+
*
|
|
4
|
+
* "N vendors silently vote on a claim · winner is the fused verdict."
|
|
5
|
+
*
|
|
6
|
+
* The wild move: Mneme can already PREPARE a question + soul-prompt
|
|
7
|
+
* context. It can already FUSE multiple sensor verdicts via the v2.6
|
|
8
|
+
* TRUTH KERNEL. SHADOW CONSENSUS composes these two:
|
|
9
|
+
*
|
|
10
|
+
* 1. User asks Mneme a high-stakes question.
|
|
11
|
+
* 2. Mneme generates a soul prompt + question payload tagged with
|
|
12
|
+
* a "ballot id".
|
|
13
|
+
* 3. Mneme writes the ballot to N vendor inboxes (Claude / GPT /
|
|
14
|
+
* Gemini / Cursor / etc) via the existing handoff paths — the
|
|
15
|
+
* user (or AI orchestrator) pastes to each vendor.
|
|
16
|
+
* 4. Each vendor's reply lands back as a sensor output (caller calls
|
|
17
|
+
* `recordVendorReply(ballotId, vendor, answer)`).
|
|
18
|
+
* 5. When ≥ M replies arrive, SHADOW CONSENSUS fuses them via the
|
|
19
|
+
* v2.6 TRUTH KERNEL and emits a verdict + per-vendor breakdown.
|
|
20
|
+
*
|
|
21
|
+
* Mneme becomes a META-LLM that you don't pay for: it asks every
|
|
22
|
+
* vendor, fuses the answers, surfaces the disagreement. The user paid
|
|
23
|
+
* for the actual vendor seats; Mneme adds the consensus layer.
|
|
24
|
+
*
|
|
25
|
+
* Nobel-tier move: each ballot is HMAC-chained — sending the same
|
|
26
|
+
* question to Claude twice doesn't fool the consensus (Mneme detects
|
|
27
|
+
* the duplicate signature). Tampering with one vendor's reply also
|
|
28
|
+
* fails verification. The consensus IS the proof.
|
|
29
|
+
*
|
|
30
|
+
* Privacy: ballots are NEVER persisted off-disk by default. The caller
|
|
31
|
+
* decides if + where to store them.
|
|
32
|
+
*/
|
|
33
|
+
import { type TruthVerdict } from "../truth_kernel/index.js";
|
|
34
|
+
export interface Ballot {
|
|
35
|
+
/** Unique ballot id. */
|
|
36
|
+
id: string;
|
|
37
|
+
/** The question being voted on. */
|
|
38
|
+
question: string;
|
|
39
|
+
/** The optional soul-prompt context the AI agent should consider. */
|
|
40
|
+
context?: string;
|
|
41
|
+
/** Vendors invited to vote — ballot is invalid for any vendor not listed. */
|
|
42
|
+
vendors: readonly string[];
|
|
43
|
+
/** ISO timestamp the ballot opened. */
|
|
44
|
+
openedAt: string;
|
|
45
|
+
/** HMAC over the canonical ballot. */
|
|
46
|
+
sig: string;
|
|
47
|
+
}
|
|
48
|
+
export interface VendorReply {
|
|
49
|
+
ballotId: string;
|
|
50
|
+
vendor: string;
|
|
51
|
+
/** TRUE / FALSE / UNCERTAIN / INAPPLICABLE — the vendor's verdict. */
|
|
52
|
+
verdict: "TRUE" | "FALSE" | "UNCERTAIN" | "INAPPLICABLE";
|
|
53
|
+
/** Vendor-supplied confidence (0..1). */
|
|
54
|
+
confidence: number;
|
|
55
|
+
/** Vendor-supplied rationale. */
|
|
56
|
+
rationale?: string;
|
|
57
|
+
/** ISO timestamp the reply arrived. */
|
|
58
|
+
receivedAt: string;
|
|
59
|
+
/** HMAC signature linking the reply back to the ballot. */
|
|
60
|
+
sig: string;
|
|
61
|
+
}
|
|
62
|
+
export interface ConsensusOutcome {
|
|
63
|
+
ballot: Ballot;
|
|
64
|
+
replies: VendorReply[];
|
|
65
|
+
/** Fused TRUTH KERNEL verdict. */
|
|
66
|
+
truth: TruthVerdict;
|
|
67
|
+
/** Coverage: replied vendors / invited vendors. */
|
|
68
|
+
coverage: number;
|
|
69
|
+
/** Whether consensus is QUORATE (≥ floor(N/2)+1 replies). */
|
|
70
|
+
quorate: boolean;
|
|
71
|
+
/** ISO timestamp the consensus was closed. */
|
|
72
|
+
closedAt: string;
|
|
73
|
+
}
|
|
74
|
+
export interface OpenBallotInput {
|
|
75
|
+
question: string;
|
|
76
|
+
vendors: readonly string[];
|
|
77
|
+
context?: string;
|
|
78
|
+
secret: string;
|
|
79
|
+
}
|
|
80
|
+
/** Open a new ballot. The HMAC is computed over the canonical body so
|
|
81
|
+
* duplicates with a different timestamp don't match. */
|
|
82
|
+
export declare function openBallot(input: OpenBallotInput): Ballot;
|
|
83
|
+
/** Verify a ballot's HMAC matches the secret. */
|
|
84
|
+
export declare function verifyBallot(ballot: Ballot, secret: string): boolean;
|
|
85
|
+
export interface RecordReplyInput {
|
|
86
|
+
ballot: Ballot;
|
|
87
|
+
vendor: string;
|
|
88
|
+
verdict: VendorReply["verdict"];
|
|
89
|
+
confidence: number;
|
|
90
|
+
rationale?: string;
|
|
91
|
+
secret: string;
|
|
92
|
+
}
|
|
93
|
+
/** Record a vendor's reply against a ballot. Fails if the vendor wasn't
|
|
94
|
+
* invited or the ballot signature is bad. */
|
|
95
|
+
export declare function recordReply(input: RecordReplyInput): {
|
|
96
|
+
ok: true;
|
|
97
|
+
reply: VendorReply;
|
|
98
|
+
} | {
|
|
99
|
+
ok: false;
|
|
100
|
+
reason: string;
|
|
101
|
+
};
|
|
102
|
+
/** Verify a vendor reply's HMAC. */
|
|
103
|
+
export declare function verifyReply(reply: VendorReply, secret: string): boolean;
|
|
104
|
+
export interface CloseConsensusInput {
|
|
105
|
+
ballot: Ballot;
|
|
106
|
+
replies: readonly VendorReply[];
|
|
107
|
+
secret: string;
|
|
108
|
+
/** Minimum replies required for quorum. Defaults to floor(N/2)+1. */
|
|
109
|
+
quorumOverride?: number;
|
|
110
|
+
}
|
|
111
|
+
/** Close the ballot and compute the fused consensus.
|
|
112
|
+
* Replies that fail HMAC verification are silently dropped + reported
|
|
113
|
+
* via `replies.length`. */
|
|
114
|
+
export declare function closeConsensus(input: CloseConsensusInput): Promise<ConsensusOutcome>;
|
|
115
|
+
/** Compact pulse summary. */
|
|
116
|
+
export declare function formatConsensusPulseLine(c: ConsensusOutcome): string;
|
|
117
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shadow_consensus/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7F,MAAM,WAAW,MAAM;IACrB,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,cAAc,CAAC;IACzD,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,kCAAkC;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;yDACyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAazD;AAED,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGpE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;8CAC8C;AAC9C,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAarH;AAED,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGvE;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;4BAE4B;AAC5B,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiC1F;AAED,6BAA6B;AAC7B,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAEpE"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.8.0 -- SHADOW CONSENSUS.
|
|
3
|
+
*
|
|
4
|
+
* "N vendors silently vote on a claim · winner is the fused verdict."
|
|
5
|
+
*
|
|
6
|
+
* The wild move: Mneme can already PREPARE a question + soul-prompt
|
|
7
|
+
* context. It can already FUSE multiple sensor verdicts via the v2.6
|
|
8
|
+
* TRUTH KERNEL. SHADOW CONSENSUS composes these two:
|
|
9
|
+
*
|
|
10
|
+
* 1. User asks Mneme a high-stakes question.
|
|
11
|
+
* 2. Mneme generates a soul prompt + question payload tagged with
|
|
12
|
+
* a "ballot id".
|
|
13
|
+
* 3. Mneme writes the ballot to N vendor inboxes (Claude / GPT /
|
|
14
|
+
* Gemini / Cursor / etc) via the existing handoff paths — the
|
|
15
|
+
* user (or AI orchestrator) pastes to each vendor.
|
|
16
|
+
* 4. Each vendor's reply lands back as a sensor output (caller calls
|
|
17
|
+
* `recordVendorReply(ballotId, vendor, answer)`).
|
|
18
|
+
* 5. When ≥ M replies arrive, SHADOW CONSENSUS fuses them via the
|
|
19
|
+
* v2.6 TRUTH KERNEL and emits a verdict + per-vendor breakdown.
|
|
20
|
+
*
|
|
21
|
+
* Mneme becomes a META-LLM that you don't pay for: it asks every
|
|
22
|
+
* vendor, fuses the answers, surfaces the disagreement. The user paid
|
|
23
|
+
* for the actual vendor seats; Mneme adds the consensus layer.
|
|
24
|
+
*
|
|
25
|
+
* Nobel-tier move: each ballot is HMAC-chained — sending the same
|
|
26
|
+
* question to Claude twice doesn't fool the consensus (Mneme detects
|
|
27
|
+
* the duplicate signature). Tampering with one vendor's reply also
|
|
28
|
+
* fails verification. The consensus IS the proof.
|
|
29
|
+
*
|
|
30
|
+
* Privacy: ballots are NEVER persisted off-disk by default. The caller
|
|
31
|
+
* decides if + where to store them.
|
|
32
|
+
*/
|
|
33
|
+
import { createHash, createHmac, randomBytes } from "node:crypto";
|
|
34
|
+
import { checkTruth } from "../truth_kernel/index.js";
|
|
35
|
+
import { safeHmacEqual } from "../util/hmac_compare.js";
|
|
36
|
+
function canonicalBallot(b) {
|
|
37
|
+
return JSON.stringify({ id: b.id, question: b.question, context: b.context ?? "", vendors: [...b.vendors].sort(), openedAt: b.openedAt });
|
|
38
|
+
}
|
|
39
|
+
function canonicalReply(r) {
|
|
40
|
+
return JSON.stringify({ ballotId: r.ballotId, vendor: r.vendor, verdict: r.verdict, confidence: r.confidence, rationale: r.rationale ?? "", receivedAt: r.receivedAt });
|
|
41
|
+
}
|
|
42
|
+
/** Open a new ballot. The HMAC is computed over the canonical body so
|
|
43
|
+
* duplicates with a different timestamp don't match. */
|
|
44
|
+
export function openBallot(input) {
|
|
45
|
+
if (input.vendors.length === 0)
|
|
46
|
+
throw new Error("openBallot: at least one vendor required");
|
|
47
|
+
if (input.question.length === 0)
|
|
48
|
+
throw new Error("openBallot: question must be non-empty");
|
|
49
|
+
const id = createHash("sha256").update(randomBytes(16)).digest("hex").slice(0, 16);
|
|
50
|
+
const body = {
|
|
51
|
+
id,
|
|
52
|
+
question: input.question,
|
|
53
|
+
context: input.context,
|
|
54
|
+
vendors: input.vendors,
|
|
55
|
+
openedAt: new Date().toISOString(),
|
|
56
|
+
};
|
|
57
|
+
const sig = createHmac("sha256", input.secret).update(canonicalBallot(body)).digest("hex");
|
|
58
|
+
return { ...body, sig };
|
|
59
|
+
}
|
|
60
|
+
/** Verify a ballot's HMAC matches the secret. */
|
|
61
|
+
export function verifyBallot(ballot, secret) {
|
|
62
|
+
const expected = createHmac("sha256", secret).update(canonicalBallot(ballot)).digest("hex");
|
|
63
|
+
return safeHmacEqual(expected, ballot.sig);
|
|
64
|
+
}
|
|
65
|
+
/** Record a vendor's reply against a ballot. Fails if the vendor wasn't
|
|
66
|
+
* invited or the ballot signature is bad. */
|
|
67
|
+
export function recordReply(input) {
|
|
68
|
+
if (!verifyBallot(input.ballot, input.secret))
|
|
69
|
+
return { ok: false, reason: "ballot signature invalid" };
|
|
70
|
+
if (!input.ballot.vendors.includes(input.vendor))
|
|
71
|
+
return { ok: false, reason: `vendor ${input.vendor} not invited` };
|
|
72
|
+
const body = {
|
|
73
|
+
ballotId: input.ballot.id,
|
|
74
|
+
vendor: input.vendor,
|
|
75
|
+
verdict: input.verdict,
|
|
76
|
+
confidence: Math.max(0, Math.min(1, input.confidence)),
|
|
77
|
+
rationale: input.rationale,
|
|
78
|
+
receivedAt: new Date().toISOString(),
|
|
79
|
+
};
|
|
80
|
+
const sig = createHmac("sha256", input.secret).update(canonicalReply(body)).digest("hex");
|
|
81
|
+
return { ok: true, reply: { ...body, sig } };
|
|
82
|
+
}
|
|
83
|
+
/** Verify a vendor reply's HMAC. */
|
|
84
|
+
export function verifyReply(reply, secret) {
|
|
85
|
+
const expected = createHmac("sha256", secret).update(canonicalReply(reply)).digest("hex");
|
|
86
|
+
return safeHmacEqual(expected, reply.sig);
|
|
87
|
+
}
|
|
88
|
+
/** Close the ballot and compute the fused consensus.
|
|
89
|
+
* Replies that fail HMAC verification are silently dropped + reported
|
|
90
|
+
* via `replies.length`. */
|
|
91
|
+
export async function closeConsensus(input) {
|
|
92
|
+
if (!verifyBallot(input.ballot, input.secret)) {
|
|
93
|
+
throw new Error("closeConsensus: ballot signature invalid");
|
|
94
|
+
}
|
|
95
|
+
const valid = [];
|
|
96
|
+
const seenVendors = new Set();
|
|
97
|
+
for (const r of input.replies) {
|
|
98
|
+
if (r.ballotId !== input.ballot.id)
|
|
99
|
+
continue;
|
|
100
|
+
if (!input.ballot.vendors.includes(r.vendor))
|
|
101
|
+
continue;
|
|
102
|
+
if (seenVendors.has(r.vendor))
|
|
103
|
+
continue; // one vote per vendor
|
|
104
|
+
if (!verifyReply(r, input.secret))
|
|
105
|
+
continue;
|
|
106
|
+
valid.push(r);
|
|
107
|
+
seenVendors.add(r.vendor);
|
|
108
|
+
}
|
|
109
|
+
const minQuorum = input.quorumOverride ?? Math.floor(input.ballot.vendors.length / 2) + 1;
|
|
110
|
+
const quorate = valid.length >= minQuorum;
|
|
111
|
+
// Wrap each reply as a TRUTH KERNEL sensor adapter.
|
|
112
|
+
const sensors = valid.map((r) => ({
|
|
113
|
+
id: r.vendor,
|
|
114
|
+
weight: 1,
|
|
115
|
+
run: () => ({ sensor: r.vendor, verdict: r.verdict, confidence: r.confidence, rationale: r.rationale }),
|
|
116
|
+
}));
|
|
117
|
+
const truth = await checkTruth({ claim: input.ballot.question, sensors });
|
|
118
|
+
const coverage = input.ballot.vendors.length > 0 ? valid.length / input.ballot.vendors.length : 0;
|
|
119
|
+
return {
|
|
120
|
+
ballot: input.ballot,
|
|
121
|
+
replies: valid,
|
|
122
|
+
truth,
|
|
123
|
+
coverage,
|
|
124
|
+
quorate,
|
|
125
|
+
closedAt: new Date().toISOString(),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/** Compact pulse summary. */
|
|
129
|
+
export function formatConsensusPulseLine(c) {
|
|
130
|
+
return `SHADOW-CONSENSUS · ${c.truth.verdict} · pTrue=${c.truth.pTrue.toFixed(2)} · coverage=${(c.coverage * 100).toFixed(0)}% · quorate=${c.quorate} · ballot=${c.ballot.id.slice(0, 8)}`;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shadow_consensus/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow_consensus.test.d.ts","sourceRoot":"","sources":["../../src/shadow_consensus/shadow_consensus.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { openBallot, recordReply, closeConsensus, verifyBallot, verifyReply, formatConsensusPulseLine } from "./index.js";
|
|
3
|
+
describe("v2.8 SHADOW CONSENSUS", () => {
|
|
4
|
+
const secret = "test-secret";
|
|
5
|
+
it("openBallot mints a signed ballot", () => {
|
|
6
|
+
const b = openBallot({ question: "is X true?", vendors: ["claude", "gpt", "gemini"], secret });
|
|
7
|
+
expect(b.id).toMatch(/^[0-9a-f]{16}$/);
|
|
8
|
+
expect(b.sig.length).toBe(64);
|
|
9
|
+
expect(verifyBallot(b, secret)).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
it("openBallot rejects empty inputs", () => {
|
|
12
|
+
expect(() => openBallot({ question: "", vendors: ["claude"], secret })).toThrow();
|
|
13
|
+
expect(() => openBallot({ question: "?", vendors: [], secret })).toThrow();
|
|
14
|
+
});
|
|
15
|
+
it("verifyBallot detects tampering", () => {
|
|
16
|
+
const b = openBallot({ question: "q", vendors: ["claude", "gpt"], secret });
|
|
17
|
+
const tampered = { ...b, question: "different" };
|
|
18
|
+
expect(verifyBallot(tampered, secret)).toBe(false);
|
|
19
|
+
});
|
|
20
|
+
it("recordReply succeeds for invited vendor", () => {
|
|
21
|
+
const b = openBallot({ question: "q", vendors: ["claude", "gpt"], secret });
|
|
22
|
+
const r = recordReply({ ballot: b, vendor: "claude", verdict: "TRUE", confidence: 0.9, secret });
|
|
23
|
+
expect(r.ok).toBe(true);
|
|
24
|
+
if (r.ok)
|
|
25
|
+
expect(verifyReply(r.reply, secret)).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
it("recordReply rejects un-invited vendor", () => {
|
|
28
|
+
const b = openBallot({ question: "q", vendors: ["claude"], secret });
|
|
29
|
+
const r = recordReply({ ballot: b, vendor: "stranger", verdict: "TRUE", confidence: 1, secret });
|
|
30
|
+
expect(r.ok).toBe(false);
|
|
31
|
+
if (!r.ok)
|
|
32
|
+
expect(r.reason).toContain("not invited");
|
|
33
|
+
});
|
|
34
|
+
it("recordReply rejects with wrong secret", () => {
|
|
35
|
+
const b = openBallot({ question: "q", vendors: ["claude"], secret });
|
|
36
|
+
const r = recordReply({ ballot: b, vendor: "claude", verdict: "TRUE", confidence: 1, secret: "wrong" });
|
|
37
|
+
expect(r.ok).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
it("closeConsensus fuses N replies via TRUTH KERNEL", async () => {
|
|
40
|
+
const b = openBallot({ question: "is X true?", vendors: ["claude", "gpt", "gemini"], secret });
|
|
41
|
+
const claudeR = recordReply({ ballot: b, vendor: "claude", verdict: "TRUE", confidence: 0.9, secret });
|
|
42
|
+
const gptR = recordReply({ ballot: b, vendor: "gpt", verdict: "TRUE", confidence: 0.85, secret });
|
|
43
|
+
expect(claudeR.ok && gptR.ok).toBe(true);
|
|
44
|
+
const replies = [
|
|
45
|
+
claudeR.reply,
|
|
46
|
+
gptR.reply,
|
|
47
|
+
];
|
|
48
|
+
const c = await closeConsensus({ ballot: b, replies, secret });
|
|
49
|
+
expect(c.truth.verdict).toBe("ACCEPTED");
|
|
50
|
+
expect(c.quorate).toBe(true); // 2 of 3 ≥ floor(3/2)+1 = 2
|
|
51
|
+
expect(c.coverage).toBeCloseTo(2 / 3, 2);
|
|
52
|
+
});
|
|
53
|
+
it("closeConsensus drops replies with tampered HMAC", async () => {
|
|
54
|
+
const b = openBallot({ question: "q", vendors: ["claude", "gpt"], secret });
|
|
55
|
+
const r1 = recordReply({ ballot: b, vendor: "claude", verdict: "TRUE", confidence: 0.9, secret });
|
|
56
|
+
const replyOk = r1.reply;
|
|
57
|
+
const tampered = { ...replyOk, verdict: "FALSE" };
|
|
58
|
+
const c = await closeConsensus({ ballot: b, replies: [replyOk, tampered], secret });
|
|
59
|
+
expect(c.replies.length).toBe(1); // tampered dropped
|
|
60
|
+
});
|
|
61
|
+
it("closeConsensus enforces one-vote-per-vendor", async () => {
|
|
62
|
+
const b = openBallot({ question: "q", vendors: ["claude"], secret });
|
|
63
|
+
const r1 = recordReply({ ballot: b, vendor: "claude", verdict: "TRUE", confidence: 0.9, secret });
|
|
64
|
+
const r2 = recordReply({ ballot: b, vendor: "claude", verdict: "FALSE", confidence: 0.9, secret });
|
|
65
|
+
const replies = [r1.reply, r2.reply];
|
|
66
|
+
const c = await closeConsensus({ ballot: b, replies, secret });
|
|
67
|
+
expect(c.replies.length).toBe(1); // duplicate dropped
|
|
68
|
+
});
|
|
69
|
+
it("closeConsensus not quorate when too few replies", async () => {
|
|
70
|
+
const b = openBallot({ question: "q", vendors: ["a", "b", "c", "d", "e"], secret });
|
|
71
|
+
const r = recordReply({ ballot: b, vendor: "a", verdict: "TRUE", confidence: 1, secret });
|
|
72
|
+
const reply = r.reply;
|
|
73
|
+
const c = await closeConsensus({ ballot: b, replies: [reply], secret });
|
|
74
|
+
expect(c.quorate).toBe(false); // 1 of 5 < floor(5/2)+1 = 3
|
|
75
|
+
});
|
|
76
|
+
it("formatConsensusPulseLine emits a compact summary", async () => {
|
|
77
|
+
const b = openBallot({ question: "q", vendors: ["a"], secret });
|
|
78
|
+
const r = recordReply({ ballot: b, vendor: "a", verdict: "TRUE", confidence: 1, secret });
|
|
79
|
+
const reply = r.reply;
|
|
80
|
+
const c = await closeConsensus({ ballot: b, replies: [reply], secret });
|
|
81
|
+
expect(formatConsensusPulseLine(c)).toContain("SHADOW-CONSENSUS");
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=shadow_consensus.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow_consensus.test.js","sourceRoot":"","sources":["../../src/shadow_consensus/shadow_consensus.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.8.0 -- BEST EFFORT marker.
|
|
3
|
+
*
|
|
4
|
+
* "Distinguish deliberate silent catches from accidental bug-swallowers."
|
|
5
|
+
*
|
|
6
|
+
* METRON v2.7 counted every `catch {}` as a Reliability penalty. That's
|
|
7
|
+
* unfair: some catches are intentionally silent (best-effort writes,
|
|
8
|
+
* optional probes, cleanup paths). The fix is structural — wrap
|
|
9
|
+
* deliberate silent catches in `bestEffort()` so:
|
|
10
|
+
*
|
|
11
|
+
* 1. The intent is documented at the call site (a comment with the
|
|
12
|
+
* reason instead of an opaque `catch {}`).
|
|
13
|
+
* 2. The auditor in METRON can recognise the marker and exclude it
|
|
14
|
+
* from the silent-catch penalty.
|
|
15
|
+
* 3. Optional `onError` callback lets callers log to a structured
|
|
16
|
+
* channel without changing the catch shape.
|
|
17
|
+
*
|
|
18
|
+
* Nobel-tier move: the marker IS the audit gate. Mneme refuses to ship
|
|
19
|
+
* Reliability score > 90 unless every catch{} is either WRAPPED in
|
|
20
|
+
* bestEffort() or REMEDIATED to a real handler. No more silent decay.
|
|
21
|
+
*/
|
|
22
|
+
/** Sentinel string embedded in the call site so METRON's audit can
|
|
23
|
+
* recognise a deliberate silent catch. */
|
|
24
|
+
export declare const BEST_EFFORT_MARKER = "BE:silent-by-design";
|
|
25
|
+
/** Synchronous best-effort wrapper. Runs the body, swallows errors,
|
|
26
|
+
* optionally invokes onError for telemetry. NEVER throws. */
|
|
27
|
+
export declare function bestEffort<T>(body: () => T, onError?: (e: unknown) => void): T | undefined;
|
|
28
|
+
/** Async best-effort wrapper. */
|
|
29
|
+
export declare function bestEffortAsync<T>(body: () => Promise<T> | T, onError?: (e: unknown) => void): Promise<T | undefined>;
|
|
30
|
+
/** Match catch-block bodies that are documented as best-effort. */
|
|
31
|
+
export declare const BEST_EFFORT_REGEX: RegExp;
|
|
32
|
+
//# sourceMappingURL=best_effort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"best_effort.d.ts","sourceRoot":"","sources":["../../src/util/best_effort.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;2CAC2C;AAC3C,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAExD;8DAC8D;AAC9D,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,CAAC,GAAG,SAAS,CAS1F;AAED,iCAAiC;AACjC,wBAAsB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAS3H;AAED,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,QAA8E,CAAC"}
|