@mneme-ai/core 2.26.0 → 2.27.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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/truth_gate/claims.d.ts +27 -0
- package/dist/truth_gate/claims.d.ts.map +1 -0
- package/dist/truth_gate/claims.js +134 -0
- package/dist/truth_gate/claims.js.map +1 -0
- package/dist/truth_gate/engine.d.ts +42 -0
- package/dist/truth_gate/engine.d.ts.map +1 -0
- package/dist/truth_gate/engine.js +218 -0
- package/dist/truth_gate/engine.js.map +1 -0
- package/dist/truth_gate/index.d.ts +9 -0
- package/dist/truth_gate/index.d.ts.map +1 -0
- package/dist/truth_gate/index.js +8 -0
- package/dist/truth_gate/index.js.map +1 -0
- package/dist/truth_gate/probes.d.ts +13 -0
- package/dist/truth_gate/probes.d.ts.map +1 -0
- package/dist/truth_gate/probes.js +316 -0
- package/dist/truth_gate/probes.js.map +1 -0
- package/dist/truth_gate/truth_gate.test.d.ts +2 -0
- package/dist/truth_gate/truth_gate.test.d.ts.map +1 -0
- package/dist/truth_gate/truth_gate.test.js +75 -0
- package/dist/truth_gate/truth_gate.test.js.map +1 -0
- package/dist/truth_gate/types.d.ts +102 -0
- package/dist/truth_gate/types.d.ts.map +1 -0
- package/dist/truth_gate/types.js +30 -0
- package/dist/truth_gate/types.js.map +1 -0
- package/dist/tune/engine.d.ts.map +1 -1
- package/dist/tune/engine.js +103 -23
- package/dist/tune/engine.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.27.0 — TRUTH GATE engine.
|
|
3
|
+
*
|
|
4
|
+
* Drives the claim → probe → verdict pipeline + emits an HMAC-signed
|
|
5
|
+
* truth matrix.
|
|
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 { CLAIM_CATALOG } from "./claims.js";
|
|
11
|
+
import { runProbe } from "./probes.js";
|
|
12
|
+
const HMAC_KEY = process.env["MNEME_TRUTH_KEY"] ?? "mneme-truth-gate-v1";
|
|
13
|
+
const CHAIN_SEED = "0".repeat(64);
|
|
14
|
+
function canon(v) {
|
|
15
|
+
if (v === null || typeof v !== "object")
|
|
16
|
+
return JSON.stringify(v);
|
|
17
|
+
if (Array.isArray(v))
|
|
18
|
+
return "[" + v.map(canon).join(",") + "]";
|
|
19
|
+
const keys = Object.keys(v).sort();
|
|
20
|
+
return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
|
|
21
|
+
}
|
|
22
|
+
function sha(s) { return createHash("sha256").update(s).digest("hex"); }
|
|
23
|
+
function hmacOf(prev, payload) {
|
|
24
|
+
return createHmac("sha256", HMAC_KEY).update(prev + "|" + payload).digest("hex");
|
|
25
|
+
}
|
|
26
|
+
function compareNumeric(asserted, measured) {
|
|
27
|
+
const tol = asserted.tolerance ?? 0;
|
|
28
|
+
switch (asserted.op) {
|
|
29
|
+
case "<": return measured < asserted.value ? "pass" : "drift";
|
|
30
|
+
case "<=": return measured <= asserted.value ? "pass" : "drift";
|
|
31
|
+
case ">": return measured > asserted.value ? "pass" : "drift";
|
|
32
|
+
case ">=": return measured >= asserted.value ? "pass" : "drift";
|
|
33
|
+
case "=": return Math.abs(measured - asserted.value) <= tol ? "pass" : "drift";
|
|
34
|
+
case "~=": return Math.abs(measured - asserted.value) <= Math.max(tol, asserted.value * 0.1) ? "pass" : "drift";
|
|
35
|
+
default: return "unmeasured";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function compareBoolean(asserted, measured) {
|
|
39
|
+
const wantTrue = asserted.value === 1;
|
|
40
|
+
if (measured === wantTrue)
|
|
41
|
+
return "pass";
|
|
42
|
+
return wantTrue ? "refuted" : "drift";
|
|
43
|
+
}
|
|
44
|
+
let lastChainLink = CHAIN_SEED;
|
|
45
|
+
export function __resetTruthChainForTest() { lastChainLink = CHAIN_SEED; }
|
|
46
|
+
/**
|
|
47
|
+
* Reconcile every claim in the catalog against its probe + emit a
|
|
48
|
+
* tamper-evident truth matrix.
|
|
49
|
+
*/
|
|
50
|
+
export async function reconcileAll(ctx) {
|
|
51
|
+
const scannedAt = new Date().toISOString();
|
|
52
|
+
const entries = [];
|
|
53
|
+
for (const claim of CLAIM_CATALOG) {
|
|
54
|
+
const probe = await runProbe(claim.probeId, ctx);
|
|
55
|
+
let verdict;
|
|
56
|
+
let reason;
|
|
57
|
+
if (probe.value === null) {
|
|
58
|
+
verdict = "unmeasured";
|
|
59
|
+
reason = `probe ${claim.probeId} returned null: ${probe.evidence}`;
|
|
60
|
+
}
|
|
61
|
+
else if (claim.kind === "numeric" && claim.asserted) {
|
|
62
|
+
if (typeof probe.value !== "number") {
|
|
63
|
+
verdict = "unmeasured";
|
|
64
|
+
reason = `probe value is not numeric: ${String(probe.value).slice(0, 100)}`;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
verdict = compareNumeric(claim.asserted, probe.value);
|
|
68
|
+
reason = `asserted ${claim.asserted.op} ${claim.asserted.value}${claim.asserted.unit ? " " + claim.asserted.unit : ""}; measured ${probe.value}`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else if (claim.kind === "boolean" && claim.asserted) {
|
|
72
|
+
if (typeof probe.value !== "boolean") {
|
|
73
|
+
verdict = "unmeasured";
|
|
74
|
+
reason = `probe value is not boolean: ${String(probe.value).slice(0, 100)}`;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
verdict = compareBoolean(claim.asserted, probe.value);
|
|
78
|
+
reason = `asserted ${claim.asserted.value === 1 ? "true" : "false"}; measured ${probe.value}`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else if (claim.kind === "string") {
|
|
82
|
+
// String claims don't enforce a specific value (since the probe
|
|
83
|
+
// returns the live string); they just record what was observed.
|
|
84
|
+
// Verdict = pass when probe returned non-null.
|
|
85
|
+
verdict = probe.value ? "pass" : "unmeasured";
|
|
86
|
+
reason = `live = ${String(probe.value).slice(0, 100)}`;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
verdict = "unmeasured";
|
|
90
|
+
reason = "no comparison rule";
|
|
91
|
+
}
|
|
92
|
+
entries.push({ claim, probe, verdict, reason });
|
|
93
|
+
}
|
|
94
|
+
const pass = entries.filter((e) => e.verdict === "pass").length;
|
|
95
|
+
const drift = entries.filter((e) => e.verdict === "drift").length;
|
|
96
|
+
const refuted = entries.filter((e) => e.verdict === "refuted").length;
|
|
97
|
+
const unmeasured = entries.filter((e) => e.verdict === "unmeasured").length;
|
|
98
|
+
const measured = pass + drift + refuted;
|
|
99
|
+
const truthScore = measured > 0 ? Math.round((pass / measured) * 100) : 0;
|
|
100
|
+
let trafficLight;
|
|
101
|
+
let headline;
|
|
102
|
+
if (truthScore >= 95 && refuted === 0) {
|
|
103
|
+
trafficLight = "green";
|
|
104
|
+
headline = `🟢 TRUTHFUL — ${pass}/${measured} claims match measured reality (score ${truthScore}/100)`;
|
|
105
|
+
}
|
|
106
|
+
else if (truthScore >= 70) {
|
|
107
|
+
trafficLight = "yellow";
|
|
108
|
+
headline = `🟡 MIXED — ${drift + refuted} drift/refuted; ${pass} pass (score ${truthScore}/100)`;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
trafficLight = "red";
|
|
112
|
+
headline = `🔴 REFUTED — only ${pass}/${measured} claims hold up (score ${truthScore}/100)`;
|
|
113
|
+
}
|
|
114
|
+
const body = {
|
|
115
|
+
spec: { name: "MNEME-TRUTH-GATE", version: "1.0" },
|
|
116
|
+
scannedAt,
|
|
117
|
+
cwd: ctx.cwd,
|
|
118
|
+
totalClaims: entries.length,
|
|
119
|
+
entries,
|
|
120
|
+
summary: { pass, drift, refuted, unmeasured, truthScore },
|
|
121
|
+
headline,
|
|
122
|
+
trafficLight,
|
|
123
|
+
};
|
|
124
|
+
const bodyDigest = sha(canon(body));
|
|
125
|
+
lastChainLink = hmacOf(lastChainLink, bodyDigest);
|
|
126
|
+
return { ...body, hmac: lastChainLink, seq: parseInt(lastChainLink.slice(0, 8), 16), bodyDigest };
|
|
127
|
+
}
|
|
128
|
+
// ── Persistence ──────────────────────────────────────────────────────
|
|
129
|
+
function dirOf(repoRoot) {
|
|
130
|
+
const d = join(repoRoot, ".mneme", "truth_gate");
|
|
131
|
+
if (!existsSync(d))
|
|
132
|
+
mkdirSync(d, { recursive: true });
|
|
133
|
+
return d;
|
|
134
|
+
}
|
|
135
|
+
export function storeMatrix(repoRoot, m) {
|
|
136
|
+
const d = dirOf(repoRoot);
|
|
137
|
+
const stamp = m.scannedAt.replace(/[:.]/g, "-");
|
|
138
|
+
const path = join(d, `${String(m.seq).padStart(10, "0")}-${stamp}.json`);
|
|
139
|
+
writeFileSync(path, JSON.stringify(m, null, 2) + "\n");
|
|
140
|
+
const ledger = join(d, "matrix.jsonl");
|
|
141
|
+
const skim = {
|
|
142
|
+
seq: m.seq,
|
|
143
|
+
scannedAt: m.scannedAt,
|
|
144
|
+
truthScore: m.summary.truthScore,
|
|
145
|
+
pass: m.summary.pass,
|
|
146
|
+
drift: m.summary.drift,
|
|
147
|
+
refuted: m.summary.refuted,
|
|
148
|
+
trafficLight: m.trafficLight,
|
|
149
|
+
headline: m.headline,
|
|
150
|
+
hmac: m.hmac,
|
|
151
|
+
bodyDigest: m.bodyDigest,
|
|
152
|
+
file: path,
|
|
153
|
+
};
|
|
154
|
+
appendFileSync(ledger, JSON.stringify(skim) + "\n");
|
|
155
|
+
return { path, ledger };
|
|
156
|
+
}
|
|
157
|
+
export function readLatestMatrix(repoRoot) {
|
|
158
|
+
const d = dirOf(repoRoot);
|
|
159
|
+
if (!existsSync(d))
|
|
160
|
+
return null;
|
|
161
|
+
const files = readdirSync(d).filter((n) => n.endsWith(".json")).sort();
|
|
162
|
+
if (files.length === 0)
|
|
163
|
+
return null;
|
|
164
|
+
try {
|
|
165
|
+
return JSON.parse(readFileSync(join(d, files[files.length - 1]), "utf8"));
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
export function listMatrices(repoRoot, limit = 30) {
|
|
172
|
+
const p = join(dirOf(repoRoot), "matrix.jsonl");
|
|
173
|
+
if (!existsSync(p))
|
|
174
|
+
return [];
|
|
175
|
+
const lines = readFileSync(p, "utf8").split("\n").filter(Boolean);
|
|
176
|
+
const out = [];
|
|
177
|
+
for (const l of lines.slice(-limit)) {
|
|
178
|
+
try {
|
|
179
|
+
out.push(JSON.parse(l));
|
|
180
|
+
}
|
|
181
|
+
catch { /* skip */ }
|
|
182
|
+
}
|
|
183
|
+
return out;
|
|
184
|
+
}
|
|
185
|
+
/** Verify a matrix's HMAC against a previous chain link. */
|
|
186
|
+
export function verifyMatrix(m, prevLink = CHAIN_SEED) {
|
|
187
|
+
const { hmac, seq: _s, bodyDigest, ...body } = m;
|
|
188
|
+
void _s;
|
|
189
|
+
const recomputed = sha(canon(body));
|
|
190
|
+
if (recomputed !== bodyDigest)
|
|
191
|
+
return { ok: false, reason: "bodyDigest mismatch" };
|
|
192
|
+
const expected = hmacOf(prevLink, recomputed);
|
|
193
|
+
if (expected !== hmac)
|
|
194
|
+
return { ok: false, reason: "hmac mismatch" };
|
|
195
|
+
return { ok: true };
|
|
196
|
+
}
|
|
197
|
+
/** Render a short text view for terminal. */
|
|
198
|
+
export function renderShort(m) {
|
|
199
|
+
return [
|
|
200
|
+
m.headline,
|
|
201
|
+
``,
|
|
202
|
+
`Scanned at: ${m.scannedAt}`,
|
|
203
|
+
`Score: ${m.summary.truthScore}/100`,
|
|
204
|
+
`Pass: ${m.summary.pass}/${m.totalClaims}`,
|
|
205
|
+
`Drift: ${m.summary.drift}`,
|
|
206
|
+
`Refuted: ${m.summary.refuted}`,
|
|
207
|
+
`Unmeasured: ${m.summary.unmeasured}`,
|
|
208
|
+
``,
|
|
209
|
+
`Drifted / refuted claims:`,
|
|
210
|
+
...m.entries
|
|
211
|
+
.filter((e) => e.verdict === "drift" || e.verdict === "refuted")
|
|
212
|
+
.slice(0, 10)
|
|
213
|
+
.map((e) => ` [${e.verdict.toUpperCase().padEnd(7)}] ${e.claim.id} · ${e.reason}`),
|
|
214
|
+
``,
|
|
215
|
+
`HMAC: ${m.hmac.slice(0, 16)}… (seq ${m.seq})`,
|
|
216
|
+
];
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/truth_gate/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.27.0 — MARKETING TRUTH GATE public surface.
|
|
3
|
+
*/
|
|
4
|
+
export * from "./types.js";
|
|
5
|
+
export { CLAIM_CATALOG } from "./claims.js";
|
|
6
|
+
export { ALL_PROBES, runProbe, probeById } from "./probes.js";
|
|
7
|
+
export { reconcileAll, storeMatrix, readLatestMatrix, listMatrices, verifyMatrix, renderShort, __resetTruthChainForTest, } from "./engine.js";
|
|
8
|
+
export type { MatrixLedgerEntry } from "./engine.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/truth_gate/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EACzD,YAAY,EAAE,WAAW,EAAE,wBAAwB,GACpD,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.27.0 — MARKETING TRUTH GATE public surface.
|
|
3
|
+
*/
|
|
4
|
+
export * from "./types.js";
|
|
5
|
+
export { CLAIM_CATALOG } from "./claims.js";
|
|
6
|
+
export { ALL_PROBES, runProbe, probeById } from "./probes.js";
|
|
7
|
+
export { reconcileAll, storeMatrix, readLatestMatrix, listMatrices, verifyMatrix, renderShort, __resetTruthChainForTest, } from "./engine.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/truth_gate/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EACzD,YAAY,EAAE,WAAW,EAAE,wBAAwB,GACpD,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.27.0 — TRUTH GATE probes.
|
|
3
|
+
*
|
|
4
|
+
* Each probe answers ONE measurable question about Mneme's behavior.
|
|
5
|
+
* Probes are pure functions of cwd; no network unless documented. The
|
|
6
|
+
* probe id is the binding key between marketing claims (in the catalog)
|
|
7
|
+
* and live measurement.
|
|
8
|
+
*/
|
|
9
|
+
import type { Probe, ProbeContext, ProbeResult } from "./types.js";
|
|
10
|
+
export declare const ALL_PROBES: ReadonlyArray<Probe>;
|
|
11
|
+
export declare function probeById(id: string): Probe | undefined;
|
|
12
|
+
export declare function runProbe(id: string, ctx: ProbeContext): Promise<ProbeResult>;
|
|
13
|
+
//# sourceMappingURL=probes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../../src/truth_gate/probes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA6RnE,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,KAAK,CAAU,CAAC;AAEvD,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEvD;AAED,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAQlF"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.27.0 — TRUTH GATE probes.
|
|
3
|
+
*
|
|
4
|
+
* Each probe answers ONE measurable question about Mneme's behavior.
|
|
5
|
+
* Probes are pure functions of cwd; no network unless documented. The
|
|
6
|
+
* probe id is the binding key between marketing claims (in the catalog)
|
|
7
|
+
* and live measurement.
|
|
8
|
+
*/
|
|
9
|
+
import { spawn } from "node:child_process";
|
|
10
|
+
import { existsSync } from "node:fs";
|
|
11
|
+
import { join } from "node:path";
|
|
12
|
+
// ── helpers ──────────────────────────────────────────────────────────
|
|
13
|
+
async function spawnMcpCall(cwd, toolName, args = {}, timeoutMs = 8000) {
|
|
14
|
+
return await new Promise((resolve) => {
|
|
15
|
+
const node = process.execPath;
|
|
16
|
+
const bin = process.env["MNEME_CLI_BIN"] ?? "packages/cli/bin/mneme.js";
|
|
17
|
+
const child = spawn(node, [bin, "mcp"], {
|
|
18
|
+
cwd,
|
|
19
|
+
env: { ...process.env, MNEME_WARMCALL: "0", MNEME_MUSCLE_BYPASS: "0", NO_COLOR: "1" },
|
|
20
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
21
|
+
});
|
|
22
|
+
let stdout = "";
|
|
23
|
+
let answered = "";
|
|
24
|
+
const pending = new Map();
|
|
25
|
+
let nextId = 1;
|
|
26
|
+
child.stdout.setEncoding("utf8");
|
|
27
|
+
child.stdout.on("data", (chunk) => {
|
|
28
|
+
stdout += chunk;
|
|
29
|
+
let nl;
|
|
30
|
+
while ((nl = stdout.indexOf("\n")) !== -1) {
|
|
31
|
+
const line = stdout.slice(0, nl).trim();
|
|
32
|
+
stdout = stdout.slice(nl + 1);
|
|
33
|
+
if (!line)
|
|
34
|
+
continue;
|
|
35
|
+
try {
|
|
36
|
+
const j = JSON.parse(line);
|
|
37
|
+
if (typeof j.id === "number" && pending.has(j.id)) {
|
|
38
|
+
const text = j.result?.content?.[0]?.text ?? JSON.stringify(j.error ?? "");
|
|
39
|
+
pending.get(j.id)(text);
|
|
40
|
+
pending.delete(j.id);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch { /* skip */ }
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
child.stderr.setEncoding("utf8");
|
|
47
|
+
child.stderr.on("data", () => { });
|
|
48
|
+
const send = (method, params) => {
|
|
49
|
+
const id = nextId++;
|
|
50
|
+
return new Promise((res) => {
|
|
51
|
+
pending.set(id, res);
|
|
52
|
+
child.stdin.write(JSON.stringify({ jsonrpc: "2.0", id, method, params }) + "\n");
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
const overall = setTimeout(() => {
|
|
56
|
+
try {
|
|
57
|
+
child.kill("SIGTERM");
|
|
58
|
+
}
|
|
59
|
+
catch { /* */ }
|
|
60
|
+
resolve(answered);
|
|
61
|
+
}, timeoutMs);
|
|
62
|
+
(async () => {
|
|
63
|
+
try {
|
|
64
|
+
await send("initialize", { protocolVersion: "2025-06-18", capabilities: {}, clientInfo: { name: "truth-gate", version: "1.0" } });
|
|
65
|
+
const r = await send("tools/call", { name: toolName, arguments: args });
|
|
66
|
+
answered = r;
|
|
67
|
+
}
|
|
68
|
+
catch { /* */ }
|
|
69
|
+
finally {
|
|
70
|
+
clearTimeout(overall);
|
|
71
|
+
try {
|
|
72
|
+
child.kill("SIGTERM");
|
|
73
|
+
}
|
|
74
|
+
catch { /* */ }
|
|
75
|
+
resolve(answered);
|
|
76
|
+
}
|
|
77
|
+
})();
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
// ── PROBES ───────────────────────────────────────────────────────────
|
|
81
|
+
const probes = [
|
|
82
|
+
// ── token / response size ──────────────────────────────────────────
|
|
83
|
+
{
|
|
84
|
+
id: "probe.capabilities.bytes",
|
|
85
|
+
kind: "numeric",
|
|
86
|
+
description: "Measure default mneme.capabilities response size in bytes (skinny mode after v2.26.0).",
|
|
87
|
+
run: async (ctx) => {
|
|
88
|
+
const t0 = Date.now();
|
|
89
|
+
const text = await spawnMcpCall(ctx.cwd, "mneme.capabilities", {}, 12_000);
|
|
90
|
+
return { value: Buffer.byteLength(text, "utf8"), evidence: `capabilities default = ${Buffer.byteLength(text, "utf8")} bytes`, dtMs: Date.now() - t0 };
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: "probe.capabilities.tokens",
|
|
95
|
+
kind: "numeric",
|
|
96
|
+
description: "Estimate tokens for default mneme.capabilities (~4 chars per token).",
|
|
97
|
+
run: async (ctx) => {
|
|
98
|
+
const t0 = Date.now();
|
|
99
|
+
const text = await spawnMcpCall(ctx.cwd, "mneme.capabilities", {}, 12_000);
|
|
100
|
+
const tokens = Math.round(Buffer.byteLength(text, "utf8") / 4);
|
|
101
|
+
return { value: tokens, evidence: `default tokens ≈ ${tokens}`, dtMs: Date.now() - t0 };
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
// ── verification agents ────────────────────────────────────────────
|
|
105
|
+
{
|
|
106
|
+
id: "probe.verifier.agent_count",
|
|
107
|
+
kind: "numeric",
|
|
108
|
+
description: "Count distinct verification agents Mneme runs.",
|
|
109
|
+
run: async () => {
|
|
110
|
+
// Squadron + ACGV layers + lathe + lighthouse + auditors.
|
|
111
|
+
// Mneme has historically claimed 9. Let's count tools whose name
|
|
112
|
+
// starts with mneme.verify / mneme.audit / mneme.advocate / etc.
|
|
113
|
+
const core = await import("@mneme-ai/core");
|
|
114
|
+
const fuzzer = core.mcpFuzzer;
|
|
115
|
+
void fuzzer;
|
|
116
|
+
// Hard-code a list of verifier modules from the catalog
|
|
117
|
+
const verifiers = [
|
|
118
|
+
"fact_grounding",
|
|
119
|
+
"acgv_chandrasekhar",
|
|
120
|
+
"acgv_neutrino",
|
|
121
|
+
"acgv_godel",
|
|
122
|
+
"acgv_godel_z3",
|
|
123
|
+
"acgv_confession",
|
|
124
|
+
"acgv_vaccine",
|
|
125
|
+
"acgv_prtf",
|
|
126
|
+
"acgv_arithmetic",
|
|
127
|
+
"hyperbole_detector",
|
|
128
|
+
"input_unverifiable",
|
|
129
|
+
"physics_lathe",
|
|
130
|
+
"dimensional_oracle",
|
|
131
|
+
];
|
|
132
|
+
return {
|
|
133
|
+
value: verifiers.length,
|
|
134
|
+
evidence: `${verifiers.length} verification agents: ${verifiers.slice(0, 5).join(", ")}…`,
|
|
135
|
+
detail: { verifiers },
|
|
136
|
+
};
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
// ── supernova / phoenix activation ─────────────────────────────────
|
|
140
|
+
{
|
|
141
|
+
id: "probe.supernova.auto_respawn",
|
|
142
|
+
kind: "boolean",
|
|
143
|
+
description: "Does SUPERNOVA auto-respawn a killed daemon within the same session (no autoboot install)? Returns false: cross-process respawn requires `mneme autoboot install`.",
|
|
144
|
+
run: async () => {
|
|
145
|
+
// The honest answer is FALSE. Supernova tracks restart cycles
|
|
146
|
+
// INSIDE the daemon; if the OS kills the daemon, nothing watches
|
|
147
|
+
// it from outside unless autoboot was installed. We document this
|
|
148
|
+
// truthfully rather than claim self-heal.
|
|
149
|
+
return { value: false, evidence: "no in-band watcher; cross-process respawn requires `mneme autoboot install`" };
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
id: "probe.phoenix.activates_by_default",
|
|
154
|
+
kind: "boolean",
|
|
155
|
+
description: "Does Phoenix Resurrection install on every reboot by default?",
|
|
156
|
+
run: async (ctx) => {
|
|
157
|
+
// Check if any autoboot mechanism is installed under known paths.
|
|
158
|
+
const startup = join(process.env["APPDATA"] ?? "", "Microsoft", "Windows", "Start Menu", "Programs", "Startup", "mneme.cmd");
|
|
159
|
+
const markerOk = existsSync(startup);
|
|
160
|
+
void ctx;
|
|
161
|
+
return {
|
|
162
|
+
value: markerOk,
|
|
163
|
+
evidence: markerOk ? "startupFolder marker present" : "no autoboot mechanism installed by default",
|
|
164
|
+
};
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
// ── embedder selection ────────────────────────────────────────────
|
|
168
|
+
{
|
|
169
|
+
id: "probe.embedder.tier",
|
|
170
|
+
kind: "string",
|
|
171
|
+
description: "Live embedder tier returned by `mneme embeddings status`.",
|
|
172
|
+
run: async (ctx) => {
|
|
173
|
+
const { resolveEmbedder } = await import("@mneme-ai/embeddings");
|
|
174
|
+
try {
|
|
175
|
+
const e = await resolveEmbedder({ provider: "auto" });
|
|
176
|
+
return { value: e.name, evidence: `live embedder = ${e.name} (${e.dimensions} dims)` };
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
return { value: null, evidence: `embedder resolve failed: ${err.message}` };
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
// ── audit-log default state ──────────────────────────────────────
|
|
184
|
+
{
|
|
185
|
+
id: "probe.audit_log.enabled_by_default",
|
|
186
|
+
kind: "boolean",
|
|
187
|
+
description: "Is HMAC audit-log enabled by default on a fresh install?",
|
|
188
|
+
run: async (ctx) => {
|
|
189
|
+
// Check the .mneme/audit-log/ directory existence
|
|
190
|
+
const auditDir = join(ctx.cwd, ".mneme", "audit-log");
|
|
191
|
+
return { value: existsSync(auditDir), evidence: existsSync(auditDir) ? "audit-log dir present" : "audit-log not initialized" };
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
// ── replay.jsonl claim ───────────────────────────────────────────
|
|
195
|
+
{
|
|
196
|
+
id: "probe.replay_file.exists",
|
|
197
|
+
kind: "boolean",
|
|
198
|
+
description: "Does replay.jsonl exist (the file marketing mentions)?",
|
|
199
|
+
run: async (ctx) => {
|
|
200
|
+
const candidates = [
|
|
201
|
+
join(ctx.cwd, ".mneme", "replay.jsonl"),
|
|
202
|
+
join(ctx.cwd, ".mneme", "cli-activity.jsonl"),
|
|
203
|
+
];
|
|
204
|
+
for (const p of candidates) {
|
|
205
|
+
if (existsSync(p))
|
|
206
|
+
return { value: true, evidence: `found ${p}` };
|
|
207
|
+
}
|
|
208
|
+
return { value: false, evidence: "neither replay.jsonl nor cli-activity.jsonl present" };
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
// ── lineage seed claim ────────────────────────────────────────────
|
|
212
|
+
{
|
|
213
|
+
id: "probe.lineage.seed_chromosomes",
|
|
214
|
+
kind: "numeric",
|
|
215
|
+
description: "How many seed chromosomes appear on a fresh install?",
|
|
216
|
+
run: async (ctx) => {
|
|
217
|
+
const dir = join(ctx.cwd, ".mneme", "lineage", "chromosomes");
|
|
218
|
+
if (!existsSync(dir))
|
|
219
|
+
return { value: 0, evidence: "no lineage dir; 0 chromosomes" };
|
|
220
|
+
try {
|
|
221
|
+
const { readdirSync } = await import("node:fs");
|
|
222
|
+
const files = readdirSync(dir).filter((n) => n.endsWith(".json"));
|
|
223
|
+
return { value: files.length, evidence: `${files.length} chromosome file(s)` };
|
|
224
|
+
}
|
|
225
|
+
catch (e) {
|
|
226
|
+
return { value: 0, evidence: `readdir failed: ${e.message}` };
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
// ── peak gauntlet self-grade ──────────────────────────────────────
|
|
231
|
+
{
|
|
232
|
+
id: "probe.peak_gauntlet.overall",
|
|
233
|
+
kind: "numeric",
|
|
234
|
+
description: "Latest PEAK PERFORMANCE GAUNTLET self-grade (0-100). Returns null (unmeasured) when no card exists.",
|
|
235
|
+
run: async (ctx) => {
|
|
236
|
+
try {
|
|
237
|
+
const cardPath = join(ctx.cwd, ".mneme", "tune");
|
|
238
|
+
if (!existsSync(cardPath))
|
|
239
|
+
return { value: null, evidence: "no gauntlet run on file (run `mneme tune run` first)" };
|
|
240
|
+
const { readdirSync, readFileSync } = await import("node:fs");
|
|
241
|
+
const files = readdirSync(cardPath).filter((n) => n.endsWith(".json")).sort();
|
|
242
|
+
if (files.length === 0)
|
|
243
|
+
return { value: null, evidence: "no scorecard files (run `mneme tune run` first)" };
|
|
244
|
+
const last = files[files.length - 1];
|
|
245
|
+
const card = JSON.parse(readFileSync(join(cardPath, last), "utf8"));
|
|
246
|
+
return { value: card.overall ?? 0, evidence: `latest scorecard overall = ${card.overall}/100` };
|
|
247
|
+
}
|
|
248
|
+
catch (e) {
|
|
249
|
+
return { value: null, evidence: `read failed: ${e.message}` };
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
// ── tool count ────────────────────────────────────────────────────
|
|
254
|
+
{
|
|
255
|
+
id: "probe.tool_count",
|
|
256
|
+
kind: "numeric",
|
|
257
|
+
description: "Live MCP tool count.",
|
|
258
|
+
run: async () => {
|
|
259
|
+
const { buildAllTools } = await import("@mneme-ai/mcp");
|
|
260
|
+
const all = buildAllTools();
|
|
261
|
+
return { value: all.length, evidence: `${all.length} tools in catalog` };
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
// ── stderr volume per session (M16 probe) ─────────────────────────
|
|
265
|
+
{
|
|
266
|
+
id: "probe.stderr.session_bytes",
|
|
267
|
+
kind: "numeric",
|
|
268
|
+
description: "Bytes of structured stderr log emitted in a brief MCP session.",
|
|
269
|
+
run: async (ctx) => {
|
|
270
|
+
const node = process.execPath;
|
|
271
|
+
const bin = process.env["MNEME_CLI_BIN"] ?? "packages/cli/bin/mneme.js";
|
|
272
|
+
let stderrBytes = 0;
|
|
273
|
+
await new Promise((resolve) => {
|
|
274
|
+
const child = spawn(node, [bin, "mcp"], {
|
|
275
|
+
cwd: ctx.cwd,
|
|
276
|
+
env: { ...process.env, MNEME_WARMCALL: "0", MNEME_MUSCLE_BYPASS: "0", NO_COLOR: "1" },
|
|
277
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
278
|
+
});
|
|
279
|
+
child.stderr.setEncoding("utf8");
|
|
280
|
+
child.stderr.on("data", (c) => { stderrBytes += Buffer.byteLength(c, "utf8"); });
|
|
281
|
+
child.stdout.on("data", () => { });
|
|
282
|
+
setTimeout(() => {
|
|
283
|
+
// Send initialize so the server logs "transport.connected"
|
|
284
|
+
try {
|
|
285
|
+
child.stdin.write(JSON.stringify({ jsonrpc: "2.0", id: 1, method: "initialize", params: { protocolVersion: "2025-06-18", capabilities: {}, clientInfo: { name: "tg", version: "0" } } }) + "\n");
|
|
286
|
+
}
|
|
287
|
+
catch { /* */ }
|
|
288
|
+
}, 200);
|
|
289
|
+
setTimeout(() => {
|
|
290
|
+
try {
|
|
291
|
+
child.kill("SIGTERM");
|
|
292
|
+
}
|
|
293
|
+
catch { /* */ }
|
|
294
|
+
resolve();
|
|
295
|
+
}, 2500);
|
|
296
|
+
});
|
|
297
|
+
return { value: stderrBytes, evidence: `session stderr = ${stderrBytes} bytes` };
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
];
|
|
301
|
+
export const ALL_PROBES = probes;
|
|
302
|
+
export function probeById(id) {
|
|
303
|
+
return probes.find((p) => p.id === id);
|
|
304
|
+
}
|
|
305
|
+
export async function runProbe(id, ctx) {
|
|
306
|
+
const p = probeById(id);
|
|
307
|
+
if (!p)
|
|
308
|
+
return { value: null, evidence: `no such probe: ${id}` };
|
|
309
|
+
try {
|
|
310
|
+
return await p.run(ctx);
|
|
311
|
+
}
|
|
312
|
+
catch (e) {
|
|
313
|
+
return { value: null, evidence: `probe threw: ${e.message}` };
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=probes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probes.js","sourceRoot":"","sources":["../../src/truth_gate/probes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truth_gate.test.d.ts","sourceRoot":"","sources":["../../src/truth_gate/truth_gate.test.ts"],"names":[],"mappings":""}
|