@mneme-ai/core 2.19.10 → 2.19.11

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.
@@ -0,0 +1,360 @@
1
+ /**
2
+ * v2.19.11 — MNEME MORTAL + REINCARNATING WRAPPERS (LIVING MCP)
3
+ *
4
+ * "Every MCP wrapper today is a static contract: registered once,
5
+ * schema frozen forever. AI agents memorise the schema in session 1
6
+ * and never re-read tools.list again. Six months later they're
7
+ * calling stale tools with the wrong argument shape and the bugs
8
+ * are silent because nobody checks. Mneme breaks the assumption:
9
+ * a wrapper is BORN with a TTL, REPRODUCES with a slightly drifted
10
+ * signature, and DIES when its TTL elapses. The previous generation
11
+ * stays alive for 1 deprecation cycle (gravity), then disappears.
12
+ *
13
+ * AI agents that re-read `mneme.tools` every turn = adapt
14
+ * automatically. AI agents that hard-code schemas in their planner
15
+ * prompt = break + log + lose BOUNTY. The market is forced to
16
+ * re-calibrate continuously; prompt-injection attacks that bake in
17
+ * specific tool names auto-expire."
18
+ *
19
+ * Honest scope (CRITICAL):
20
+ * - The mortal layer lives in the `mneme.mortal.*` NAMESPACE ONLY.
21
+ * Real Mneme tools (`mneme.arena.*`, `mneme.proof.*`, etc.) stay
22
+ * backwards-compatible forever. We do NOT actually mutate real MCP
23
+ * surfaces — that would break every client catastrophically.
24
+ * - Mortal wrappers are OPT-IN: AI agents that want to stress-test
25
+ * their adaptiveness wrap a base tool through `birthMortalWrapper`,
26
+ * then call the resulting alias. Real production callers stay on
27
+ * the canonical name and never see drift.
28
+ * - Each mortal wrapper carries an HMAC-signed lineage so an attacker
29
+ * can't forge "ancient" wrappers that were never actually born.
30
+ * - Max generations per base tool = 100 (hard loop guard).
31
+ *
32
+ * Pure additive layer; composes onto v2.19.10 PROOF-CARRYING (mortal
33
+ * wrappers can attach proofs like any other tool) + v2.19.9 GENESPLICING
34
+ * (chimeras can contain mortal aliases that drift over time).
35
+ */
36
+ import { createHmac, timingSafeEqual } from "node:crypto";
37
+ const PROTOCOL_VERSION = 1;
38
+ const DEFAULT_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
39
+ const DEFAULT_MUTATIONS_PER_TICK = 2;
40
+ const DEFAULT_DEPRECATION_GRAVITY_MS = 60 * 60 * 1000; // 1 hour
41
+ const MAX_GENERATIONS_PER_BASE = 100;
42
+ const MAX_TICK_BATCH = 3;
43
+ function canon(v) {
44
+ if (v === null || typeof v !== "object")
45
+ return JSON.stringify(v);
46
+ if (Array.isArray(v))
47
+ return "[" + v.map(canon).join(",") + "]";
48
+ const keys = Object.keys(v).sort();
49
+ return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
50
+ }
51
+ function defaultSecret() {
52
+ return process.env["MNEME_MORTAL_SECRET"] || `mneme-mortal-living-mcp-v${PROTOCOL_VERSION}`;
53
+ }
54
+ function computeHmac(body, secret) {
55
+ return createHmac("sha256", secret).update(canon(body)).digest("hex");
56
+ }
57
+ function safeEqHex(a, b) {
58
+ try {
59
+ return timingSafeEqual(Buffer.from(a, "hex"), Buffer.from(b, "hex"));
60
+ }
61
+ catch {
62
+ return false;
63
+ }
64
+ }
65
+ function makeId(baseToolName, generation, birthAt) {
66
+ return "mw-" + createHmac("sha256", "mneme-mortal-id")
67
+ .update(`${baseToolName}|${generation}|${birthAt}`)
68
+ .digest("hex").slice(0, 14);
69
+ }
70
+ /** Deterministic mulberry32-style PRNG so tests are reproducible. */
71
+ function mulberry32(seed) {
72
+ let s = seed >>> 0;
73
+ return () => {
74
+ s = (s + 0x6D2B79F5) >>> 0;
75
+ let t = s;
76
+ t = Math.imul(t ^ (t >>> 15), t | 1);
77
+ t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
78
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
79
+ };
80
+ }
81
+ export function birthMortalWrapper(input) {
82
+ const birthAt = input.nowMs ?? Date.now();
83
+ const ttlMs = input.ttlMs ?? DEFAULT_TTL_MS;
84
+ const deprecationGravityMs = input.deprecationGravityMs ?? DEFAULT_DEPRECATION_GRAVITY_MS;
85
+ const signature = {
86
+ alias: `mneme.mortal.${input.baseToolName.replace(/^mneme\./, "")}.gen1`,
87
+ argRenameMap: Object.fromEntries(input.baseArgs.map((a) => [a, a])),
88
+ addedOptionalParams: [],
89
+ argOrder: [...input.baseArgs],
90
+ };
91
+ const body = {
92
+ v: PROTOCOL_VERSION,
93
+ id: makeId(input.baseToolName, 1, birthAt),
94
+ baseToolName: input.baseToolName,
95
+ signature,
96
+ generation: 1,
97
+ parentGeneration: null,
98
+ birthAt,
99
+ ttlMs,
100
+ expiresAt: birthAt + ttlMs,
101
+ deprecationGravityMs,
102
+ alive: true,
103
+ deprecatedUntil: null,
104
+ mutationsApplied: [],
105
+ };
106
+ return { ...body, hmac: computeHmac(body, input.secret ?? defaultSecret()) };
107
+ }
108
+ /** Apply one mutation to a signature; returns the NEW signature (immutable). */
109
+ export function mutateSignature(opts) {
110
+ const next = {
111
+ alias: `mneme.mortal.${opts.baseToolName.replace(/^mneme\./, "")}.gen${opts.nextGen}`,
112
+ argRenameMap: { ...opts.base.argRenameMap },
113
+ addedOptionalParams: [...opts.base.addedOptionalParams],
114
+ argOrder: [...opts.base.argOrder],
115
+ };
116
+ switch (opts.kind) {
117
+ case "rename_optional_field": {
118
+ // Pick one currently-canonical-named arg and rename its mortal-facing key.
119
+ // We pick the lexicographically-first unrenamed entry to be deterministic per RNG seed.
120
+ const unrenamed = Object.entries(next.argRenameMap)
121
+ .filter(([mortal, base]) => mortal === base)
122
+ .map(([m]) => m)
123
+ .sort();
124
+ if (unrenamed.length === 0)
125
+ break;
126
+ const pickIdx = Math.floor(opts.rng() * unrenamed.length);
127
+ const old = unrenamed[pickIdx];
128
+ const baseName = next.argRenameMap[old];
129
+ // Drift suffix carries generation so AI agents can detect lineage.
130
+ const fresh = `${old}_g${opts.nextGen}`;
131
+ delete next.argRenameMap[old];
132
+ next.argRenameMap[fresh] = baseName;
133
+ next.argOrder = next.argOrder.map((a) => (a === old ? fresh : a));
134
+ break;
135
+ }
136
+ case "add_optional_param": {
137
+ const fresh = `_drift_g${opts.nextGen}_${Math.floor(opts.rng() * 1e6).toString(36)}`;
138
+ next.addedOptionalParams = [...next.addedOptionalParams, fresh];
139
+ next.argOrder = [...next.argOrder, fresh];
140
+ break;
141
+ }
142
+ case "swap_arg_order": {
143
+ if (next.argOrder.length < 2)
144
+ break;
145
+ // Swap two positions deterministically per RNG draw.
146
+ const i = Math.floor(opts.rng() * next.argOrder.length);
147
+ let j = Math.floor(opts.rng() * next.argOrder.length);
148
+ if (j === i)
149
+ j = (i + 1) % next.argOrder.length;
150
+ const reordered = [...next.argOrder];
151
+ const tmp = reordered[i];
152
+ reordered[i] = reordered[j];
153
+ reordered[j] = tmp;
154
+ next.argOrder = reordered;
155
+ break;
156
+ }
157
+ }
158
+ return next;
159
+ }
160
+ /**
161
+ * One reincarnation cycle. For wrappers whose `expiresAt <= now`:
162
+ * 1. mark `alive=false` + set `deprecatedUntil = now + gravity`
163
+ * 2. spawn a new generation with a mutated signature
164
+ *
165
+ * After the cycle, the old generation is still callable until `deprecatedUntil`
166
+ * (deprecation gravity), then disappears.
167
+ */
168
+ export function tickReincarnation(input) {
169
+ const nowMs = input.nowMs ?? Date.now();
170
+ const budget = Math.min(input.budget ?? DEFAULT_MUTATIONS_PER_TICK, MAX_TICK_BATCH);
171
+ const rng = mulberry32(input.rngSeed ?? Math.floor(nowMs % 0xffffffff));
172
+ const secret = input.secret ?? defaultSecret();
173
+ // Step 1: drop wrappers whose deprecation gravity has fully elapsed.
174
+ const survivors = input.state.wrappers.filter((w) => {
175
+ if (w.alive)
176
+ return true;
177
+ if (w.deprecatedUntil === null)
178
+ return true; // edge case: never deprecated
179
+ return w.deprecatedUntil > nowMs;
180
+ });
181
+ // Step 2: pick alive wrappers whose TTL is up (oldest first), respecting budget.
182
+ const eligible = survivors
183
+ .filter((w) => w.alive && w.expiresAt <= nowMs)
184
+ .sort((a, b) => a.expiresAt - b.expiresAt)
185
+ .slice(0, budget);
186
+ const expired = [];
187
+ const reincarnated = [];
188
+ const skippedAtMaxGen = [];
189
+ const next = survivors.map((w) => ({ ...w }));
190
+ for (const e of eligible) {
191
+ // Loop guard: refuse to spawn past max generations per base.
192
+ const sameLineage = next.filter((w) => w.baseToolName === e.baseToolName);
193
+ const maxGenForLineage = sameLineage.reduce((m, w) => Math.max(m, w.generation), 0);
194
+ if (maxGenForLineage >= MAX_GENERATIONS_PER_BASE) {
195
+ skippedAtMaxGen.push(e.baseToolName);
196
+ continue;
197
+ }
198
+ // Mark parent as deprecated (gravity window starts now).
199
+ const parentIdx = next.findIndex((w) => w.id === e.id);
200
+ if (parentIdx >= 0) {
201
+ const parent = next[parentIdx];
202
+ const { hmac: _drop, ...rest } = parent;
203
+ void _drop;
204
+ const deprecatedBody = {
205
+ ...rest,
206
+ alive: false,
207
+ deprecatedUntil: nowMs + parent.deprecationGravityMs,
208
+ };
209
+ next[parentIdx] = { ...deprecatedBody, hmac: computeHmac(deprecatedBody, secret) };
210
+ expired.push(next[parentIdx]);
211
+ }
212
+ // Spawn next generation: pick one mutation deterministically.
213
+ const kinds = ["rename_optional_field", "add_optional_param", "swap_arg_order"];
214
+ const kind = kinds[Math.floor(rng() * kinds.length)];
215
+ const baseArgs = input.baseToolArgs[e.baseToolName] ?? Object.values(e.signature.argRenameMap);
216
+ const nextGen = maxGenForLineage + 1;
217
+ const newSig = mutateSignature({
218
+ base: e.signature,
219
+ baseToolName: e.baseToolName,
220
+ baseArgs,
221
+ nextGen,
222
+ kind,
223
+ rng,
224
+ });
225
+ const birthAt = nowMs;
226
+ const childBody = {
227
+ v: PROTOCOL_VERSION,
228
+ id: makeId(e.baseToolName, nextGen, birthAt),
229
+ baseToolName: e.baseToolName,
230
+ signature: newSig,
231
+ generation: nextGen,
232
+ parentGeneration: e.generation,
233
+ birthAt,
234
+ ttlMs: e.ttlMs,
235
+ expiresAt: birthAt + e.ttlMs,
236
+ deprecationGravityMs: e.deprecationGravityMs,
237
+ alive: true,
238
+ deprecatedUntil: null,
239
+ mutationsApplied: [...e.mutationsApplied, kind],
240
+ };
241
+ const child = { ...childBody, hmac: computeHmac(childBody, secret) };
242
+ next.push(child);
243
+ reincarnated.push(child);
244
+ }
245
+ return {
246
+ state: { v: PROTOCOL_VERSION, wrappers: next, calibration: input.state.calibration },
247
+ expired,
248
+ reincarnated,
249
+ skippedAtMaxGen,
250
+ };
251
+ }
252
+ export function resolveMortalCall(input) {
253
+ const nowMs = input.nowMs ?? Date.now();
254
+ const hit = input.state.wrappers.find((w) => w.signature.alias === input.alias);
255
+ if (!hit) {
256
+ return { ok: false, reason: `alias '${input.alias}' is unknown — call mneme.mortal.list to refresh` };
257
+ }
258
+ // Past deprecation gravity → fully dead.
259
+ if (!hit.alive && hit.deprecatedUntil !== null && hit.deprecatedUntil <= nowMs) {
260
+ const liveSibling = input.state.wrappers
261
+ .filter((w) => w.baseToolName === hit.baseToolName && w.alive)
262
+ .sort((a, b) => b.generation - a.generation)[0];
263
+ return {
264
+ ok: false,
265
+ reason: `alias '${input.alias}' fully expired ${nowMs - hit.deprecatedUntil}ms past gravity`,
266
+ ...(liveSibling ? { hint: `try '${liveSibling.signature.alias}'` } : {}),
267
+ };
268
+ }
269
+ const deprecated = !hit.alive;
270
+ // Translate mortal arg keys back to base names.
271
+ const baseArgs = {};
272
+ const unknownKeys = [];
273
+ for (const [k, v] of Object.entries(input.args)) {
274
+ if (k in hit.signature.argRenameMap) {
275
+ baseArgs[hit.signature.argRenameMap[k]] = v;
276
+ }
277
+ else if (hit.signature.addedOptionalParams.includes(k)) {
278
+ // Drift-bonus param — silently dropped (it was a calibration tripwire).
279
+ continue;
280
+ }
281
+ else {
282
+ unknownKeys.push(k);
283
+ }
284
+ }
285
+ if (unknownKeys.length > 0) {
286
+ return {
287
+ ok: false,
288
+ reason: `args ${JSON.stringify(unknownKeys)} not in signature — schema drifted; AI agent overfit detected`,
289
+ hint: `expected keys: ${Object.keys(hit.signature.argRenameMap).join(", ")}`,
290
+ };
291
+ }
292
+ return {
293
+ ok: true,
294
+ baseToolName: hit.baseToolName,
295
+ baseArgs,
296
+ deprecated,
297
+ };
298
+ }
299
+ /** Append a calibration outcome for an AI agent's mortal call. */
300
+ export function recordCalibration(opts) {
301
+ const record = {
302
+ callerKey: opts.callerKey,
303
+ alias: opts.alias,
304
+ ok: opts.ok,
305
+ ts: opts.nowMs ?? Date.now(),
306
+ };
307
+ return { ...opts.state, calibration: [...opts.state.calibration, record] };
308
+ }
309
+ export function calibrationScore(opts) {
310
+ const recs = opts.state.calibration.filter((r) => r.callerKey === opts.callerKey);
311
+ const totalCalls = recs.length;
312
+ const successfulCalls = recs.filter((r) => r.ok).length;
313
+ const failedCalls = totalCalls - successfulCalls;
314
+ const adaptivenessScore = totalCalls === 0 ? 0 : successfulCalls / totalCalls;
315
+ const verdict = totalCalls < 5 ? "drifting"
316
+ : adaptivenessScore >= 0.95 ? "world_class"
317
+ : adaptivenessScore >= 0.80 ? "good"
318
+ : adaptivenessScore >= 0.50 ? "drifting"
319
+ : "over_fit";
320
+ return { callerKey: opts.callerKey, totalCalls, successfulCalls, failedCalls, adaptivenessScore, verdict };
321
+ }
322
+ export function globalStats(state) {
323
+ const histogram = {
324
+ rename_optional_field: 0,
325
+ add_optional_param: 0,
326
+ swap_arg_order: 0,
327
+ };
328
+ let totalMutations = 0;
329
+ for (const w of state.wrappers) {
330
+ for (const m of w.mutationsApplied) {
331
+ histogram[m]++;
332
+ totalMutations++;
333
+ }
334
+ }
335
+ const bases = new Set(state.wrappers.map((w) => w.baseToolName));
336
+ return {
337
+ alive: state.wrappers.filter((w) => w.alive).length,
338
+ deprecated: state.wrappers.filter((w) => !w.alive).length,
339
+ totalGenerationsAcrossLineages: state.wrappers.length,
340
+ totalMutationsApplied: totalMutations,
341
+ uniqueBaseTools: bases.size,
342
+ mutationKindHistogram: histogram,
343
+ };
344
+ }
345
+ export function verifyMortalWrapper(w, secret) {
346
+ const { hmac, ...body } = w;
347
+ const expected = computeHmac(body, secret ?? defaultSecret());
348
+ if (!safeEqHex(expected, hmac)) {
349
+ return { ok: false, reason: "HMAC mismatch — forged or wrong secret" };
350
+ }
351
+ return { ok: true };
352
+ }
353
+ export function emptyState() {
354
+ return { v: PROTOCOL_VERSION, wrappers: [], calibration: [] };
355
+ }
356
+ export function formatWrapperLine(w) {
357
+ const tag = w.alive ? "🌱" : "💀";
358
+ return `${tag} ${w.signature.alias} · gen=${w.generation} · mutations=${w.mutationsApplied.length} · ttl=${Math.round(w.ttlMs / 1000)}s`;
359
+ }
360
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mortal_wrappers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mortal_wrappers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mortal_wrappers.test.d.ts","sourceRoot":"","sources":["../../src/mortal_wrappers/mortal_wrappers.test.ts"],"names":[],"mappings":""}