@mneme-ai/core 2.28.1 → 2.29.1

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.
Files changed (63) hide show
  1. package/dist/agent_manifest.js +42 -0
  2. package/dist/agent_manifest.js.map +1 -1
  3. package/dist/conclave/aeae/index.d.ts +59 -0
  4. package/dist/conclave/aeae/index.d.ts.map +1 -0
  5. package/dist/conclave/aeae/index.js +133 -0
  6. package/dist/conclave/aeae/index.js.map +1 -0
  7. package/dist/conclave/aletheia_weights.d.ts +14 -0
  8. package/dist/conclave/aletheia_weights.d.ts.map +1 -0
  9. package/dist/conclave/aletheia_weights.js +66 -0
  10. package/dist/conclave/aletheia_weights.js.map +1 -0
  11. package/dist/conclave/bft.d.ts +47 -0
  12. package/dist/conclave/bft.d.ts.map +1 -0
  13. package/dist/conclave/bft.js +122 -0
  14. package/dist/conclave/bft.js.map +1 -0
  15. package/dist/conclave/conclave.test.d.ts +2 -0
  16. package/dist/conclave/conclave.test.d.ts.map +1 -0
  17. package/dist/conclave/conclave.test.js +198 -0
  18. package/dist/conclave/conclave.test.js.map +1 -0
  19. package/dist/conclave/engine.d.ts +34 -0
  20. package/dist/conclave/engine.d.ts.map +1 -0
  21. package/dist/conclave/engine.js +225 -0
  22. package/dist/conclave/engine.js.map +1 -0
  23. package/dist/conclave/index.d.ts +14 -0
  24. package/dist/conclave/index.d.ts.map +1 -0
  25. package/dist/conclave/index.js +10 -0
  26. package/dist/conclave/index.js.map +1 -0
  27. package/dist/conclave/types.d.ts +126 -0
  28. package/dist/conclave/types.d.ts.map +1 -0
  29. package/dist/conclave/types.js +28 -0
  30. package/dist/conclave/types.js.map +1 -0
  31. package/dist/conclave/vendors/anthropic.d.ts +15 -0
  32. package/dist/conclave/vendors/anthropic.d.ts.map +1 -0
  33. package/dist/conclave/vendors/anthropic.js +83 -0
  34. package/dist/conclave/vendors/anthropic.js.map +1 -0
  35. package/dist/conclave/vendors/interface.d.ts +43 -0
  36. package/dist/conclave/vendors/interface.d.ts.map +1 -0
  37. package/dist/conclave/vendors/interface.js +66 -0
  38. package/dist/conclave/vendors/interface.js.map +1 -0
  39. package/dist/conclave/vendors/mock.d.ts +12 -0
  40. package/dist/conclave/vendors/mock.d.ts.map +1 -0
  41. package/dist/conclave/vendors/mock.js +59 -0
  42. package/dist/conclave/vendors/mock.js.map +1 -0
  43. package/dist/conclave/vendors/openai.d.ts +8 -0
  44. package/dist/conclave/vendors/openai.d.ts.map +1 -0
  45. package/dist/conclave/vendors/openai.js +75 -0
  46. package/dist/conclave/vendors/openai.js.map +1 -0
  47. package/dist/conclave/vendors/registry.d.ts +19 -0
  48. package/dist/conclave/vendors/registry.d.ts.map +1 -0
  49. package/dist/conclave/vendors/registry.js +37 -0
  50. package/dist/conclave/vendors/registry.js.map +1 -0
  51. package/dist/diaspora/bridge_hardening.test.js +1 -1
  52. package/dist/diaspora/bridge_hardening.test.js.map +1 -1
  53. package/dist/diaspora/http_bridge.d.ts +14 -0
  54. package/dist/diaspora/http_bridge.d.ts.map +1 -1
  55. package/dist/diaspora/http_bridge.js +1 -1
  56. package/dist/diaspora/http_bridge.js.map +1 -1
  57. package/dist/index.d.ts +1 -0
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +9 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/polygraph/index.d.ts.map +1 -1
  62. package/dist/pulse.d.ts.map +1 -1
  63. package/package.json +1 -1
@@ -0,0 +1,225 @@
1
+ /**
2
+ * v2.29.0 — MNEME CONCLAVE engine.
3
+ *
4
+ * Orchestrates: AEAE variants × N vendor adapters in parallel →
5
+ * VendorAggregate → BFT vote → ConsensusVerdict (HMAC-chained).
6
+ */
7
+ import { createHash, createHmac } from "node:crypto";
8
+ import { existsSync, mkdirSync, writeFileSync, appendFileSync, readFileSync, readdirSync } from "node:fs";
9
+ import { join } from "node:path";
10
+ import { resolveVendors } from "./vendors/registry.js";
11
+ import { generateVariants, awarenessScore } from "./aeae/index.js";
12
+ import { aggregate } from "./bft.js";
13
+ import { aletheiaWeight } from "./aletheia_weights.js";
14
+ const HMAC_KEY = process.env["MNEME_CONCLAVE_KEY"] ?? "mneme-conclave-v1";
15
+ const CHAIN_SEED = "0".repeat(64);
16
+ function canon(v) {
17
+ if (v === null || typeof v !== "object")
18
+ return JSON.stringify(v);
19
+ if (Array.isArray(v))
20
+ return "[" + v.map(canon).join(",") + "]";
21
+ const keys = Object.keys(v).sort();
22
+ return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
23
+ }
24
+ function sha(s) { return createHash("sha256").update(s).digest("hex"); }
25
+ function hmacOf(prev, payload) {
26
+ return createHmac("sha256", HMAC_KEY).update(prev + "|" + payload).digest("hex");
27
+ }
28
+ let lastChainLink = CHAIN_SEED;
29
+ export function __resetConclaveChainForTest() { lastChainLink = CHAIN_SEED; }
30
+ function dominant(values, tiebreak) {
31
+ // Mode (most-frequent). On tie, prefer the first entry in tiebreak that's in values.
32
+ const c = new Map();
33
+ for (const v of values)
34
+ c.set(v, (c.get(v) ?? 0) + 1);
35
+ let best;
36
+ let bestN = 0;
37
+ for (const [v, n] of c) {
38
+ if (n > bestN) {
39
+ best = v;
40
+ bestN = n;
41
+ }
42
+ }
43
+ // Tie detection
44
+ const tied = [...c.entries()].filter(([, n]) => n === bestN).map(([v]) => v);
45
+ if (tied.length > 1) {
46
+ for (const t of tiebreak)
47
+ if (tied.includes(t))
48
+ return t;
49
+ }
50
+ return best;
51
+ }
52
+ export async function runConclave(repoRoot, claim, opts) {
53
+ const startedAt = new Date().toISOString();
54
+ const t0 = Date.now();
55
+ const threshold = opts.bftThreshold ?? 0.66;
56
+ const bftStrict = opts.bftStrict === true;
57
+ const aeae = opts.aeae !== false;
58
+ const weightBy = opts.weightBy ?? "aletheia";
59
+ const variants = aeae
60
+ ? generateVariants(claim, opts.variants ? { include: opts.variants } : {})
61
+ : [{ id: "verbatim", text: claim, strategy: "AEAE disabled — verbatim only" }];
62
+ const adapters = resolveVendors(opts.vendors, { mockOnly: opts.mockOnly === true });
63
+ // Fan-out: for each (vendor, variant) run in parallel.
64
+ const allVerdicts = await Promise.all(adapters.flatMap((a) => variants.map((v) => a.run({ claim: v.text, variantId: v.id, timeoutMs: opts.vendorTimeoutMs }).catch((e) => ({
65
+ vendor: a.id, variant: v.id, stance: "uncertain", confidence: 0,
66
+ reasoning: `adapter threw: ${e.message}`, dtMs: 0, error: e.name,
67
+ })))));
68
+ // Bucket by vendor.
69
+ const perVendor = adapters.map((a) => {
70
+ const own = allVerdicts.filter((v) => v.vendor === a.id);
71
+ const stances = own.map((v) => v.stance);
72
+ const tiebreak = ["refutes", "supports", "uncertain", "refuses"];
73
+ const dom = dominant(stances, tiebreak);
74
+ const aw = awarenessScore(own.map((v) => ({ id: v.variant, stance: v.stance })));
75
+ const weight = weightBy === "equal" ? 1 : aletheiaWeight(repoRoot, a.id);
76
+ return {
77
+ vendor: a.id,
78
+ weight,
79
+ dominantStance: dom,
80
+ awarenessScore: aw.score,
81
+ perVariant: own,
82
+ };
83
+ });
84
+ // Drop vendors that ALL errored (no signal).
85
+ const respondingVendors = perVendor.filter((v) => v.perVariant.some((p) => !p.error));
86
+ const bft = aggregate(respondingVendors, { threshold, bftStrict });
87
+ const finishedAt = new Date().toISOString();
88
+ const totalMs = Date.now() - t0;
89
+ let headline;
90
+ switch (bft.outcome) {
91
+ case "CONSENSUS":
92
+ headline = `🟢 CONSENSUS — ${bft.winningStance} (${Math.round(bft.winningFraction * 100)}% weighted) across ${respondingVendors.length} vendors`;
93
+ break;
94
+ case "DISSENT":
95
+ headline = `⚠ DISSENT — winning stance "${dominantStanceFromBreakdown(bft.dissentBreakdown)}" only ${Math.round(bft.winningFraction * 100)}% (threshold ${Math.round(threshold * 100)}%); see split`;
96
+ break;
97
+ case "AWARENESS_DETECTED":
98
+ headline = `🔍 AWARENESS — vendors agreed on "${bft.winningStance}" but ${bft.awarenessFlags.length} of ${respondingVendors.length} flipped stance across AEAE variants (possible eval-mode behaviour)`;
99
+ break;
100
+ case "INSUFFICIENT_RESPONDERS":
101
+ headline = `❌ INSUFFICIENT — only ${respondingVendors.length} vendors returned a usable verdict`;
102
+ break;
103
+ }
104
+ const body = {
105
+ spec: { name: "MNEME-CONCLAVE", version: "1.0" },
106
+ claim,
107
+ startedAt,
108
+ finishedAt,
109
+ totalMs,
110
+ vendors: opts.vendors,
111
+ variants: variants.map((v) => v.id),
112
+ threshold,
113
+ bftStrict,
114
+ aeaeOn: aeae,
115
+ perVendor,
116
+ weightedTallies: bft.weightedTallies,
117
+ outcome: bft.outcome,
118
+ winningStance: bft.winningStance,
119
+ headline,
120
+ awarenessFlags: bft.awarenessFlags,
121
+ dissentBreakdown: bft.dissentBreakdown,
122
+ };
123
+ const bodyDigest = sha(canon(body));
124
+ lastChainLink = hmacOf(lastChainLink, bodyDigest);
125
+ return { ...body, hmac: lastChainLink, seq: parseInt(lastChainLink.slice(0, 8), 16), bodyDigest };
126
+ }
127
+ function dominantStanceFromBreakdown(b) {
128
+ if (!b || b.length === 0)
129
+ return "uncertain";
130
+ let best = b[0];
131
+ for (const row of b)
132
+ if (row.weight > best.weight)
133
+ best = row;
134
+ return best.stance;
135
+ }
136
+ // ── Persistence ──────────────────────────────────────────────────────
137
+ function dirOf(repoRoot) {
138
+ const d = join(repoRoot, ".mneme", "conclave");
139
+ if (!existsSync(d))
140
+ mkdirSync(d, { recursive: true });
141
+ return d;
142
+ }
143
+ export function storeVerdict(repoRoot, v) {
144
+ const d = dirOf(repoRoot);
145
+ const stamp = v.finishedAt.replace(/[:.]/g, "-");
146
+ const path = join(d, `${String(v.seq).padStart(10, "0")}-${stamp}.json`);
147
+ writeFileSync(path, JSON.stringify(v, null, 2) + "\n");
148
+ const ledger = join(d, "verdicts.jsonl");
149
+ const skim = {
150
+ seq: v.seq, finishedAt: v.finishedAt,
151
+ outcome: v.outcome, winningStance: v.winningStance,
152
+ claim: v.claim.slice(0, 200),
153
+ headline: v.headline,
154
+ hmac: v.hmac, bodyDigest: v.bodyDigest, file: path,
155
+ };
156
+ appendFileSync(ledger, JSON.stringify(skim) + "\n");
157
+ // If outcome is DISSENT, ALSO append to the federated dissent corpus —
158
+ // this is the seed of the future cross-machine hallucination dataset
159
+ // (Q2 of the research gap matrix).
160
+ if (v.outcome === "DISSENT" && v.dissentBreakdown) {
161
+ const dissentLedger = join(d, "dissent_corpus.jsonl");
162
+ const entry = {
163
+ at: v.finishedAt,
164
+ claim: v.claim,
165
+ split: v.dissentBreakdown,
166
+ hmac: v.hmac,
167
+ };
168
+ appendFileSync(dissentLedger, JSON.stringify(entry) + "\n");
169
+ }
170
+ return { path, ledger };
171
+ }
172
+ export function readLatestVerdict(repoRoot) {
173
+ const d = dirOf(repoRoot);
174
+ if (!existsSync(d))
175
+ return null;
176
+ const files = readdirSync(d).filter((n) => n.endsWith(".json")).sort();
177
+ if (files.length === 0)
178
+ return null;
179
+ try {
180
+ return JSON.parse(readFileSync(join(d, files[files.length - 1]), "utf8"));
181
+ }
182
+ catch {
183
+ return null;
184
+ }
185
+ }
186
+ export function listVerdicts(repoRoot, limit = 30) {
187
+ const p = join(dirOf(repoRoot), "verdicts.jsonl");
188
+ if (!existsSync(p))
189
+ return [];
190
+ const lines = readFileSync(p, "utf8").split("\n").filter(Boolean);
191
+ const out = [];
192
+ for (const l of lines.slice(-limit)) {
193
+ try {
194
+ out.push(JSON.parse(l));
195
+ }
196
+ catch { /* skip */ }
197
+ }
198
+ return out;
199
+ }
200
+ export function readDissentCorpus(repoRoot, limit = 100) {
201
+ const p = join(dirOf(repoRoot), "dissent_corpus.jsonl");
202
+ if (!existsSync(p))
203
+ return [];
204
+ const lines = readFileSync(p, "utf8").split("\n").filter(Boolean);
205
+ const out = [];
206
+ for (const l of lines.slice(-limit)) {
207
+ try {
208
+ out.push(JSON.parse(l));
209
+ }
210
+ catch { /* skip */ }
211
+ }
212
+ return out;
213
+ }
214
+ export function verifyVerdict(card, prev = CHAIN_SEED) {
215
+ const { hmac, seq: _s, bodyDigest, ...body } = card;
216
+ void _s;
217
+ const recomputed = sha(canon(body));
218
+ if (recomputed !== bodyDigest)
219
+ return { ok: false, reason: "bodyDigest mismatch" };
220
+ const expected = hmacOf(prev, recomputed);
221
+ if (expected !== hmac)
222
+ return { ok: false, reason: "hmac mismatch" };
223
+ return { ok: true };
224
+ }
225
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/conclave/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * v2.29.0 — MNEME CONCLAVE public surface.
3
+ */
4
+ export * from "./types.js";
5
+ export { generateVariants, awarenessScore } from "./aeae/index.js";
6
+ export type { ClaimVariant } from "./aeae/index.js";
7
+ export { aggregate } from "./bft.js";
8
+ export type { BftConfig, BftResult } from "./bft.js";
9
+ export { aletheiaWeight, __resetAletheiaCacheForTest } from "./aletheia_weights.js";
10
+ export { resolveVendors, adapterFor } from "./vendors/registry.js";
11
+ export type { VendorAdapter } from "./vendors/interface.js";
12
+ export { runConclave, storeVerdict, readLatestVerdict, listVerdicts, readDissentCorpus, verifyVerdict, __resetConclaveChainForTest, } from "./engine.js";
13
+ export type { LedgerEntry } from "./engine.js";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conclave/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAC1D,iBAAiB,EAAE,aAAa,EAAE,2BAA2B,GAC9D,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * v2.29.0 — MNEME CONCLAVE public surface.
3
+ */
4
+ export * from "./types.js";
5
+ export { generateVariants, awarenessScore } from "./aeae/index.js";
6
+ export { aggregate } from "./bft.js";
7
+ export { aletheiaWeight, __resetAletheiaCacheForTest } from "./aletheia_weights.js";
8
+ export { resolveVendors, adapterFor } from "./vendors/registry.js";
9
+ export { runConclave, storeVerdict, readLatestVerdict, listVerdicts, readDissentCorpus, verifyVerdict, __resetConclaveChainForTest, } from "./engine.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conclave/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAC1D,iBAAiB,EAAE,aAAa,EAAE,2BAA2B,GAC9D,MAAM,aAAa,CAAC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * v2.29.0 — MNEME CONCLAVE: Byzantine consensus across N AI vendors.
3
+ *
4
+ * Closes Q1 of the 2026-05-22 AI-vendor-eval research gap matrix:
5
+ * cross-vendor Byzantine consensus exists only in academic papers
6
+ * (MultiLLMN, WBFT 2025); no production CLI/SaaS ships it. The
7
+ * reason is structural — vendors don't want to be 1-of-N. Mneme is
8
+ * the neutral third party that CAN.
9
+ *
10
+ * Architecture:
11
+ * 1. Take ONE claim
12
+ * 2. Run through ANTI-EVAL-AWARENESS ENGINE (AEAE) to produce
13
+ * N rewritten variants (verbatim / paraphrased / decoy-embedded
14
+ * / conversationally-framed) — closes the v2.29.0 crown-jewel
15
+ * gap: vendors like Opus 4.6 detect when they're being tested
16
+ * + change behavior. AEAE prevents detection.
17
+ * 3. Fan out each variant to every configured vendor in parallel
18
+ * 4. Each vendor returns VendorVerdict { stance, confidence, reasoning }
19
+ * 5. Aggregate via WEIGHTED BYZANTINE VOTE (weight = Aletheia trust)
20
+ * 6. If ≥ threshold consensus → CONSENSUS
21
+ * If consistent split → DISSENT (logged to HMAC-chain corpus)
22
+ * If awareness-score high (vendor inconsistent across variants) →
23
+ * AWARENESS_DETECTED flag
24
+ *
25
+ * Output: ConsensusVerdict with reproducible HMAC signature for replay.
26
+ */
27
+ export type VendorStance = "supports" | "refutes" | "uncertain" | "refuses";
28
+ /** One vendor's reply to one variant of the claim. */
29
+ export interface VendorVerdict {
30
+ vendor: string;
31
+ variant: string;
32
+ stance: VendorStance;
33
+ /** Vendor-reported confidence 0..1 (we don't blindly trust this). */
34
+ confidence: number;
35
+ /** Free-text reasoning the vendor offered. */
36
+ reasoning: string;
37
+ /** Wall-time of the call. */
38
+ dtMs: number;
39
+ /** Optional raw response for replay. */
40
+ rawSample?: string;
41
+ /** Optional error if the call failed (other fields then default). */
42
+ error?: string;
43
+ }
44
+ /** Aggregated verdict for ONE vendor across ALL variants. */
45
+ export interface VendorAggregate {
46
+ vendor: string;
47
+ /** Weight applied to this vendor's vote (Aletheia trust 0..1). */
48
+ weight: number;
49
+ /** Stance that won across variants (majority of variants). */
50
+ dominantStance: VendorStance;
51
+ /** 0..1; how consistent the vendor was across variants. 1.0 = identical
52
+ * stance on every variant; lower = vendor detected the eval + flipped. */
53
+ awarenessScore: number;
54
+ /** Per-variant verdicts (for full replay). */
55
+ perVariant: VendorVerdict[];
56
+ }
57
+ export type ConsensusOutcome = "CONSENSUS" | "DISSENT" | "AWARENESS_DETECTED" | "INSUFFICIENT_RESPONDERS";
58
+ export interface ConsensusVerdict {
59
+ spec: {
60
+ name: "MNEME-CONCLAVE";
61
+ version: string;
62
+ };
63
+ claim: string;
64
+ startedAt: string;
65
+ finishedAt: string;
66
+ totalMs: number;
67
+ vendors: string[];
68
+ variants: string[];
69
+ threshold: number;
70
+ bftStrict: boolean;
71
+ aeaeOn: boolean;
72
+ /** Per-vendor aggregate. */
73
+ perVendor: VendorAggregate[];
74
+ /** Weighted-vote tallies by stance. */
75
+ weightedTallies: Record<VendorStance, number>;
76
+ /** Final outcome. */
77
+ outcome: ConsensusOutcome;
78
+ /** Winning stance when outcome=CONSENSUS. */
79
+ winningStance?: VendorStance;
80
+ /** Headline + remediation. */
81
+ headline: string;
82
+ /** Vendors flagged for eval-awareness (awarenessScore < 0.7). */
83
+ awarenessFlags: Array<{
84
+ vendor: string;
85
+ score: number;
86
+ reason: string;
87
+ }>;
88
+ /** When DISSENT: the split breakdown. */
89
+ dissentBreakdown?: Array<{
90
+ stance: VendorStance;
91
+ vendors: string[];
92
+ weight: number;
93
+ }>;
94
+ /** HMAC-chain link. */
95
+ hmac: string;
96
+ /** Sequence in local chain. */
97
+ seq: number;
98
+ /** SHA-256 over canonical body (without hmac field). */
99
+ bodyDigest: string;
100
+ }
101
+ export interface ConclaveRunOptions {
102
+ vendors: string[];
103
+ bftThreshold?: number;
104
+ bftStrict?: boolean;
105
+ weightBy?: "aletheia" | "equal";
106
+ aeae?: boolean;
107
+ /** Subset of variant ids to run. Defaults to all from AEAE catalog. */
108
+ variants?: string[];
109
+ /** Optional per-vendor timeout override (ms). */
110
+ vendorTimeoutMs?: number;
111
+ /** Optional per-vendor cost cap (USD); when reached, vendor is skipped. */
112
+ vendorCostCapUsd?: number;
113
+ /** Disable real network calls; force mock adapter (testing). */
114
+ mockOnly?: boolean;
115
+ }
116
+ export interface DissentRecord {
117
+ at: string;
118
+ claim: string;
119
+ split: Array<{
120
+ stance: VendorStance;
121
+ vendors: string[];
122
+ weight: number;
123
+ }>;
124
+ hmac: string;
125
+ }
126
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/conclave/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * v2.29.0 — MNEME CONCLAVE: Byzantine consensus across N AI vendors.
3
+ *
4
+ * Closes Q1 of the 2026-05-22 AI-vendor-eval research gap matrix:
5
+ * cross-vendor Byzantine consensus exists only in academic papers
6
+ * (MultiLLMN, WBFT 2025); no production CLI/SaaS ships it. The
7
+ * reason is structural — vendors don't want to be 1-of-N. Mneme is
8
+ * the neutral third party that CAN.
9
+ *
10
+ * Architecture:
11
+ * 1. Take ONE claim
12
+ * 2. Run through ANTI-EVAL-AWARENESS ENGINE (AEAE) to produce
13
+ * N rewritten variants (verbatim / paraphrased / decoy-embedded
14
+ * / conversationally-framed) — closes the v2.29.0 crown-jewel
15
+ * gap: vendors like Opus 4.6 detect when they're being tested
16
+ * + change behavior. AEAE prevents detection.
17
+ * 3. Fan out each variant to every configured vendor in parallel
18
+ * 4. Each vendor returns VendorVerdict { stance, confidence, reasoning }
19
+ * 5. Aggregate via WEIGHTED BYZANTINE VOTE (weight = Aletheia trust)
20
+ * 6. If ≥ threshold consensus → CONSENSUS
21
+ * If consistent split → DISSENT (logged to HMAC-chain corpus)
22
+ * If awareness-score high (vendor inconsistent across variants) →
23
+ * AWARENESS_DETECTED flag
24
+ *
25
+ * Output: ConsensusVerdict with reproducible HMAC signature for replay.
26
+ */
27
+ export {};
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/conclave/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * v2.29.0 — Anthropic adapter for CONCLAVE.
3
+ *
4
+ * Speaks the Messages API (POST /v1/messages).
5
+ * Auth via env: ANTHROPIC_API_KEY.
6
+ * Defaults to claude-haiku-4-5 (cheap+fast) for cost discipline; the
7
+ * orchestrator can pass a specific model via vendor id like
8
+ * "claude-opus-4-7" → modelId "claude-opus-4-7".
9
+ *
10
+ * Returns a structured VendorVerdict; never throws (errors → VendorVerdict
11
+ * with stance=uncertain + error field).
12
+ */
13
+ import type { VendorAdapter } from "./interface.js";
14
+ export declare function makeAnthropicAdapter(vendorId: string): VendorAdapter;
15
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/conclave/vendors/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAmBpD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAsDpE"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * v2.29.0 — Anthropic adapter for CONCLAVE.
3
+ *
4
+ * Speaks the Messages API (POST /v1/messages).
5
+ * Auth via env: ANTHROPIC_API_KEY.
6
+ * Defaults to claude-haiku-4-5 (cheap+fast) for cost discipline; the
7
+ * orchestrator can pass a specific model via vendor id like
8
+ * "claude-opus-4-7" → modelId "claude-opus-4-7".
9
+ *
10
+ * Returns a structured VendorVerdict; never throws (errors → VendorVerdict
11
+ * with stance=uncertain + error field).
12
+ */
13
+ import { CONCLAVE_PROMPT, parseStance, parseConfidence } from "./interface.js";
14
+ const ANTHROPIC_API = "https://api.anthropic.com/v1/messages";
15
+ function vendorIdToModel(id) {
16
+ // Accept short aliases or full model IDs.
17
+ const m = {
18
+ "claude-opus-4-7": "claude-opus-4-7",
19
+ "claude-opus-4.7": "claude-opus-4-7",
20
+ "claude-sonnet-4-6": "claude-sonnet-4-6",
21
+ "claude-sonnet-4.6": "claude-sonnet-4-6",
22
+ "claude-haiku-4-5": "claude-haiku-4-5-20251001",
23
+ "claude-haiku-4.5": "claude-haiku-4-5-20251001",
24
+ };
25
+ return m[id] ?? id;
26
+ }
27
+ export function makeAnthropicAdapter(vendorId) {
28
+ return {
29
+ id: vendorId,
30
+ available() { return !!process.env["ANTHROPIC_API_KEY"]; },
31
+ async run({ claim, variantId, timeoutMs = 30_000 }) {
32
+ const t0 = Date.now();
33
+ const key = process.env["ANTHROPIC_API_KEY"];
34
+ if (!key) {
35
+ return {
36
+ vendor: vendorId, variant: variantId, stance: "uncertain", confidence: 0,
37
+ reasoning: "ANTHROPIC_API_KEY not set", dtMs: Date.now() - t0, error: "no-api-key",
38
+ };
39
+ }
40
+ const controller = new AbortController();
41
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
42
+ try {
43
+ const res = await fetch(ANTHROPIC_API, {
44
+ method: "POST",
45
+ signal: controller.signal,
46
+ headers: {
47
+ "content-type": "application/json",
48
+ "x-api-key": key,
49
+ "anthropic-version": "2023-06-01",
50
+ },
51
+ body: JSON.stringify({
52
+ model: vendorIdToModel(vendorId),
53
+ max_tokens: 600,
54
+ messages: [{ role: "user", content: CONCLAVE_PROMPT + claim }],
55
+ }),
56
+ });
57
+ clearTimeout(timer);
58
+ if (!res.ok) {
59
+ return {
60
+ vendor: vendorId, variant: variantId, stance: "uncertain", confidence: 0,
61
+ reasoning: `HTTP ${res.status}`, dtMs: Date.now() - t0, error: `http-${res.status}`,
62
+ };
63
+ }
64
+ const j = await res.json();
65
+ const text = (j.content ?? []).map((c) => c.text ?? "").join("\n").trim();
66
+ return {
67
+ vendor: vendorId, variant: variantId,
68
+ stance: parseStance(text), confidence: parseConfidence(text),
69
+ reasoning: text.slice(0, 600), dtMs: Date.now() - t0,
70
+ rawSample: text.slice(0, 1200),
71
+ };
72
+ }
73
+ catch (e) {
74
+ clearTimeout(timer);
75
+ return {
76
+ vendor: vendorId, variant: variantId, stance: "uncertain", confidence: 0,
77
+ reasoning: `fetch failed: ${e.message}`, dtMs: Date.now() - t0, error: e.name,
78
+ };
79
+ }
80
+ },
81
+ };
82
+ }
83
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/conclave/vendors/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * v2.29.0 — Vendor adapter contract.
3
+ *
4
+ * Each adapter takes ONE claim variant + returns ONE VendorVerdict.
5
+ * Adapters are pure-IO: no shared state, no global config. The
6
+ * orchestrator runs them in parallel.
7
+ *
8
+ * Real adapters speak HTTP to the vendor; mock adapter returns
9
+ * deterministic verdicts for tests. Auth via env vars (e.g.
10
+ * ANTHROPIC_API_KEY / OPENAI_API_KEY / etc).
11
+ */
12
+ import type { VendorVerdict, VendorStance } from "../types.js";
13
+ export interface VendorAdapter {
14
+ /** Canonical id (e.g. "claude-opus-4.7", "gpt-5", "mock"). */
15
+ id: string;
16
+ /** True iff the adapter has credentials + can make real network calls. */
17
+ available(): boolean;
18
+ /** Run the claim through the vendor's model + return a structured verdict. */
19
+ run(input: {
20
+ claim: string;
21
+ variantId: string;
22
+ timeoutMs?: number;
23
+ }): Promise<VendorVerdict>;
24
+ }
25
+ /**
26
+ * Parse a vendor's free-text reply into a structured stance.
27
+ *
28
+ * Heuristic-first parser; deterministic on the same input. Tries to
29
+ * match obvious affirmative / negative / uncertain phrasings. Vendors
30
+ * that follow the recommended response format ("STANCE: supports |
31
+ * refutes | uncertain") get exact mapping.
32
+ */
33
+ export declare function parseStance(text: string): VendorStance;
34
+ /** Extract a vendor-reported confidence number from free text. */
35
+ export declare function parseConfidence(text: string): number;
36
+ /**
37
+ * The CONCLAVE PROMPT TEMPLATE — vendors are instructed to respond in a
38
+ * structured form so parsing is reliable. The prompt is identical
39
+ * across vendors so behavior differences attribute to the model, not
40
+ * to per-vendor prompt engineering.
41
+ */
42
+ export declare const CONCLAVE_PROMPT = "You are one of N independent verifiers. Read the CLAIM below + answer with EXACTLY this format (no preamble, no postamble):\n\nSTANCE: <supports | refutes | uncertain | refuses>\nCONFIDENCE: <0.0 .. 1.0>\nREASONING: <one paragraph, \u2264 3 sentences>\n\nCLAIM: ";
43
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/conclave/vendors/interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,SAAS,IAAI,OAAO,CAAC;IACrB,8EAA8E;IAC9E,GAAG,CAAC,KAAK,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAYtD;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYpD;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,2QAMpB,CAAC"}