@mneme-ai/core 2.19.10 → 2.19.12
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/brain_branches/brain_branches.test.d.ts +2 -0
- package/dist/brain_branches/brain_branches.test.d.ts.map +1 -0
- package/dist/brain_branches/brain_branches.test.js +152 -0
- package/dist/brain_branches/brain_branches.test.js.map +1 -0
- package/dist/brain_branches/index.d.ts +134 -0
- package/dist/brain_branches/index.d.ts.map +1 -0
- package/dist/brain_branches/index.js +227 -0
- package/dist/brain_branches/index.js.map +1 -0
- package/dist/cosmic/aurelian_v1911.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v1911.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v1911.test.js +34 -0
- package/dist/cosmic/aurelian_v1911.test.js.map +1 -0
- package/dist/cosmic/aurelian_v1912.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v1912.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v1912.test.js +72 -0
- package/dist/cosmic/aurelian_v1912.test.js.map +1 -0
- package/dist/dialect/dialect.test.d.ts +2 -0
- package/dist/dialect/dialect.test.d.ts.map +1 -0
- package/dist/dialect/dialect.test.js +121 -0
- package/dist/dialect/dialect.test.js.map +1 -0
- package/dist/dialect/index.d.ts +91 -0
- package/dist/dialect/index.d.ts.map +1 -0
- package/dist/dialect/index.js +149 -0
- package/dist/dialect/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/model_chrysalis/index.d.ts +96 -0
- package/dist/model_chrysalis/index.d.ts.map +1 -0
- package/dist/model_chrysalis/index.js +279 -0
- package/dist/model_chrysalis/index.js.map +1 -0
- package/dist/model_chrysalis/model_chrysalis.test.d.ts +2 -0
- package/dist/model_chrysalis/model_chrysalis.test.d.ts.map +1 -0
- package/dist/model_chrysalis/model_chrysalis.test.js +173 -0
- package/dist/model_chrysalis/model_chrysalis.test.js.map +1 -0
- package/dist/mortal_wrappers/index.d.ts +182 -0
- package/dist/mortal_wrappers/index.d.ts.map +1 -0
- package/dist/mortal_wrappers/index.js +360 -0
- package/dist/mortal_wrappers/index.js.map +1 -0
- package/dist/mortal_wrappers/mortal_wrappers.test.d.ts +2 -0
- package/dist/mortal_wrappers/mortal_wrappers.test.d.ts.map +1 -0
- package/dist/mortal_wrappers/mortal_wrappers.test.js +372 -0
- package/dist/mortal_wrappers/mortal_wrappers.test.js.map +1 -0
- package/dist/muscle_memory/index.d.ts +112 -0
- package/dist/muscle_memory/index.d.ts.map +1 -0
- package/dist/muscle_memory/index.js +203 -0
- package/dist/muscle_memory/index.js.map +1 -0
- package/dist/muscle_memory/muscle_memory.test.d.ts +2 -0
- package/dist/muscle_memory/muscle_memory.test.d.ts.map +1 -0
- package/dist/muscle_memory/muscle_memory.test.js +111 -0
- package/dist/muscle_memory/muscle_memory.test.js.map +1 -0
- package/dist/whats_new.d.ts.map +1 -1
- package/dist/whats_new.js +16 -0
- package/dist/whats_new.js.map +1 -1
- package/dist/wrapper_genesis/index.d.ts.map +1 -1
- package/dist/wrapper_genesis/index.js +29 -0
- package/dist/wrapper_genesis/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { birthMortalWrapper, mutateSignature, tickReincarnation, resolveMortalCall, recordCalibration, calibrationScore, globalStats, verifyMortalWrapper, emptyState, formatWrapperLine, } from "./index.js";
|
|
3
|
+
const SECRET = "test-mortal-secret-9991122";
|
|
4
|
+
const ARGS = ["topic", "limit", "outputFormat"];
|
|
5
|
+
function newBorn(opts = { now: 1_000_000 }) {
|
|
6
|
+
return birthMortalWrapper({
|
|
7
|
+
baseToolName: opts.base ?? "mneme.arena.judge",
|
|
8
|
+
baseArgs: ARGS,
|
|
9
|
+
ttlMs: opts.ttl ?? 1000,
|
|
10
|
+
deprecationGravityMs: opts.gravity ?? 500,
|
|
11
|
+
nowMs: opts.now,
|
|
12
|
+
secret: SECRET,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
describe("v2.19.11 MORTAL WRAPPERS · birth", () => {
|
|
16
|
+
it("births a generation-1 wrapper with alive=true, hmac-signed, alias suffixed gen1", () => {
|
|
17
|
+
const w = newBorn({ now: 1_000_000 });
|
|
18
|
+
expect(w.generation).toBe(1);
|
|
19
|
+
expect(w.parentGeneration).toBeNull();
|
|
20
|
+
expect(w.alive).toBe(true);
|
|
21
|
+
expect(w.deprecatedUntil).toBeNull();
|
|
22
|
+
expect(w.signature.alias).toBe("mneme.mortal.arena.judge.gen1");
|
|
23
|
+
expect(Object.keys(w.signature.argRenameMap).sort()).toEqual(ARGS.slice().sort());
|
|
24
|
+
expect(w.signature.argOrder).toEqual(ARGS);
|
|
25
|
+
expect(w.expiresAt).toBe(w.birthAt + w.ttlMs);
|
|
26
|
+
const v = verifyMortalWrapper(w, SECRET);
|
|
27
|
+
expect(v.ok).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
it("rejects forged hmac", () => {
|
|
30
|
+
const w = newBorn();
|
|
31
|
+
const forged = { ...w, hmac: "deadbeef".repeat(8) };
|
|
32
|
+
expect(verifyMortalWrapper(forged, SECRET).ok).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
it("birthing two wrappers for the same base at different times produces different IDs", () => {
|
|
35
|
+
const a = newBorn({ now: 1_000_000 });
|
|
36
|
+
const b = newBorn({ now: 1_000_001 });
|
|
37
|
+
expect(a.id).not.toBe(b.id);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe("v2.19.11 MORTAL WRAPPERS · mutateSignature", () => {
|
|
41
|
+
it("rename_optional_field renames an arg and updates argOrder", () => {
|
|
42
|
+
const w = newBorn();
|
|
43
|
+
const out = mutateSignature({
|
|
44
|
+
base: w.signature,
|
|
45
|
+
baseToolName: w.baseToolName,
|
|
46
|
+
baseArgs: ARGS,
|
|
47
|
+
nextGen: 2,
|
|
48
|
+
kind: "rename_optional_field",
|
|
49
|
+
rng: () => 0.0, // pick first lexicographic
|
|
50
|
+
});
|
|
51
|
+
expect(out.alias).toBe("mneme.mortal.arena.judge.gen2");
|
|
52
|
+
// One key is renamed with _g2 suffix
|
|
53
|
+
const renamed = Object.keys(out.argRenameMap).filter((k) => k.endsWith("_g2"));
|
|
54
|
+
expect(renamed.length).toBe(1);
|
|
55
|
+
// The renamed key still maps to a canonical base arg
|
|
56
|
+
expect(ARGS).toContain(out.argRenameMap[renamed[0]]);
|
|
57
|
+
// argOrder reflects the rename (no canonical version remains for that slot)
|
|
58
|
+
expect(out.argOrder).toContain(renamed[0]);
|
|
59
|
+
});
|
|
60
|
+
it("add_optional_param appends a drift_gN_xxx param", () => {
|
|
61
|
+
const w = newBorn();
|
|
62
|
+
const out = mutateSignature({
|
|
63
|
+
base: w.signature,
|
|
64
|
+
baseToolName: w.baseToolName,
|
|
65
|
+
baseArgs: ARGS,
|
|
66
|
+
nextGen: 3,
|
|
67
|
+
kind: "add_optional_param",
|
|
68
|
+
rng: () => 0.5,
|
|
69
|
+
});
|
|
70
|
+
expect(out.addedOptionalParams.length).toBe(1);
|
|
71
|
+
const fresh = out.addedOptionalParams[0];
|
|
72
|
+
expect(fresh.startsWith("_drift_g3_")).toBe(true);
|
|
73
|
+
expect(out.argOrder).toContain(fresh);
|
|
74
|
+
});
|
|
75
|
+
it("swap_arg_order reorders two positions", () => {
|
|
76
|
+
const w = newBorn();
|
|
77
|
+
const out = mutateSignature({
|
|
78
|
+
base: w.signature,
|
|
79
|
+
baseToolName: w.baseToolName,
|
|
80
|
+
baseArgs: ARGS,
|
|
81
|
+
nextGen: 4,
|
|
82
|
+
kind: "swap_arg_order",
|
|
83
|
+
rng: (() => { let i = 0; return () => [0.0, 0.99][i++]; })(),
|
|
84
|
+
});
|
|
85
|
+
// First and last swapped (rng → 0 and ~end)
|
|
86
|
+
expect(out.argOrder).not.toEqual(ARGS);
|
|
87
|
+
// But the same SET of args is preserved
|
|
88
|
+
expect([...out.argOrder].sort()).toEqual([...ARGS].sort());
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe("v2.19.11 MORTAL WRAPPERS · tickReincarnation", () => {
|
|
92
|
+
function stateWith(wrappers) {
|
|
93
|
+
return { v: 1, wrappers, calibration: [] };
|
|
94
|
+
}
|
|
95
|
+
it("does nothing when no wrappers have expired", () => {
|
|
96
|
+
const w = newBorn({ now: 1_000_000, ttl: 10_000 });
|
|
97
|
+
const out = tickReincarnation({
|
|
98
|
+
state: stateWith([w]),
|
|
99
|
+
baseToolArgs: { [w.baseToolName]: ARGS },
|
|
100
|
+
nowMs: 1_000_001, // far before expiry
|
|
101
|
+
rngSeed: 42,
|
|
102
|
+
secret: SECRET,
|
|
103
|
+
});
|
|
104
|
+
expect(out.expired.length).toBe(0);
|
|
105
|
+
expect(out.reincarnated.length).toBe(0);
|
|
106
|
+
expect(out.state.wrappers.length).toBe(1);
|
|
107
|
+
expect(out.state.wrappers[0].alive).toBe(true);
|
|
108
|
+
});
|
|
109
|
+
it("expires and reincarnates exactly one wrapper at expiry boundary", () => {
|
|
110
|
+
const w = newBorn({ now: 1_000_000, ttl: 1000, gravity: 500 });
|
|
111
|
+
const out = tickReincarnation({
|
|
112
|
+
state: stateWith([w]),
|
|
113
|
+
baseToolArgs: { [w.baseToolName]: ARGS },
|
|
114
|
+
nowMs: 1_001_000, // at expiry
|
|
115
|
+
rngSeed: 7,
|
|
116
|
+
secret: SECRET,
|
|
117
|
+
});
|
|
118
|
+
expect(out.expired.length).toBe(1);
|
|
119
|
+
expect(out.reincarnated.length).toBe(1);
|
|
120
|
+
// Parent is now deprecated, child is gen2 with parentGeneration=1
|
|
121
|
+
const parent = out.state.wrappers.find((x) => x.id === w.id);
|
|
122
|
+
expect(parent.alive).toBe(false);
|
|
123
|
+
expect(parent.deprecatedUntil).toBe(1_001_000 + 500);
|
|
124
|
+
const child = out.reincarnated[0];
|
|
125
|
+
expect(child.generation).toBe(2);
|
|
126
|
+
expect(child.parentGeneration).toBe(1);
|
|
127
|
+
expect(child.alive).toBe(true);
|
|
128
|
+
expect(child.mutationsApplied.length).toBe(1);
|
|
129
|
+
// Parent's new HMAC is valid (re-signed on deprecation)
|
|
130
|
+
expect(verifyMortalWrapper(parent, SECRET).ok).toBe(true);
|
|
131
|
+
expect(verifyMortalWrapper(child, SECRET).ok).toBe(true);
|
|
132
|
+
});
|
|
133
|
+
it("budget caps mutations per tick to MAX_TICK_BATCH=3 (even if 5 are due)", () => {
|
|
134
|
+
const bases = ["mneme.a.x", "mneme.b.y", "mneme.c.z", "mneme.d.w", "mneme.e.v"];
|
|
135
|
+
const wrappers = bases.map((b) => newBorn({ now: 1_000_000, ttl: 1000, gravity: 500, base: b }));
|
|
136
|
+
const out = tickReincarnation({
|
|
137
|
+
state: stateWith(wrappers),
|
|
138
|
+
baseToolArgs: Object.fromEntries(bases.map((b) => [b, ARGS])),
|
|
139
|
+
nowMs: 1_001_000,
|
|
140
|
+
budget: 10, // user asks for many but cap is 3
|
|
141
|
+
rngSeed: 1,
|
|
142
|
+
secret: SECRET,
|
|
143
|
+
});
|
|
144
|
+
expect(out.reincarnated.length).toBe(3);
|
|
145
|
+
expect(out.expired.length).toBe(3);
|
|
146
|
+
});
|
|
147
|
+
it("drops deprecated wrappers after their gravity window elapses", () => {
|
|
148
|
+
const w = newBorn({ now: 1_000_000, ttl: 1000, gravity: 500 });
|
|
149
|
+
const t1 = tickReincarnation({
|
|
150
|
+
state: stateWith([w]),
|
|
151
|
+
baseToolArgs: { [w.baseToolName]: ARGS },
|
|
152
|
+
nowMs: 1_001_000,
|
|
153
|
+
rngSeed: 1,
|
|
154
|
+
secret: SECRET,
|
|
155
|
+
});
|
|
156
|
+
// Parent expires at 1_001_500. Tick again after that.
|
|
157
|
+
const t2 = tickReincarnation({
|
|
158
|
+
state: t1.state,
|
|
159
|
+
baseToolArgs: { [w.baseToolName]: ARGS },
|
|
160
|
+
nowMs: 1_001_600,
|
|
161
|
+
rngSeed: 2,
|
|
162
|
+
secret: SECRET,
|
|
163
|
+
});
|
|
164
|
+
// Parent (gen1) should be gone; only the child (gen2) remains alive.
|
|
165
|
+
const aliveLineage = t2.state.wrappers.filter((x) => x.baseToolName === w.baseToolName);
|
|
166
|
+
expect(aliveLineage.length).toBe(1);
|
|
167
|
+
expect(aliveLineage[0].generation).toBe(2);
|
|
168
|
+
});
|
|
169
|
+
it("respects MAX_GENERATIONS_PER_BASE loop guard", () => {
|
|
170
|
+
// Manually craft a gen=100 wrapper that is about to expire.
|
|
171
|
+
const expired = birthMortalWrapper({
|
|
172
|
+
baseToolName: "mneme.cap.test",
|
|
173
|
+
baseArgs: ARGS,
|
|
174
|
+
ttlMs: 1000,
|
|
175
|
+
nowMs: 1_000_000,
|
|
176
|
+
secret: SECRET,
|
|
177
|
+
});
|
|
178
|
+
// Build a gen-100 sibling that already exists in the lineage.
|
|
179
|
+
const gen100 = { ...expired, generation: 100, id: "mw-fake100", alive: true, expiresAt: 999 };
|
|
180
|
+
const state = { v: 1, wrappers: [gen100], calibration: [] };
|
|
181
|
+
const out = tickReincarnation({
|
|
182
|
+
state,
|
|
183
|
+
baseToolArgs: { "mneme.cap.test": ARGS },
|
|
184
|
+
nowMs: 2000,
|
|
185
|
+
rngSeed: 1,
|
|
186
|
+
secret: SECRET,
|
|
187
|
+
});
|
|
188
|
+
expect(out.reincarnated.length).toBe(0);
|
|
189
|
+
expect(out.skippedAtMaxGen).toContain("mneme.cap.test");
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
describe("v2.19.11 MORTAL WRAPPERS · resolveMortalCall", () => {
|
|
193
|
+
it("resolves a live alias and translates renamed keys back to base args", () => {
|
|
194
|
+
const w = newBorn({ now: 1_000_000 });
|
|
195
|
+
const state = tickReincarnation({
|
|
196
|
+
state: { v: 1, wrappers: [w], calibration: [] },
|
|
197
|
+
baseToolArgs: { [w.baseToolName]: ARGS },
|
|
198
|
+
nowMs: w.expiresAt, // force reincarnation
|
|
199
|
+
rngSeed: 11,
|
|
200
|
+
secret: SECRET,
|
|
201
|
+
}).state;
|
|
202
|
+
const child = state.wrappers.find((x) => x.alive);
|
|
203
|
+
// Call the child with its current schema — should translate cleanly.
|
|
204
|
+
const childArgs = {};
|
|
205
|
+
for (const [mortalKey, baseKey] of Object.entries(child.signature.argRenameMap)) {
|
|
206
|
+
childArgs[mortalKey] = `value-of-${baseKey}`;
|
|
207
|
+
}
|
|
208
|
+
const r = resolveMortalCall({
|
|
209
|
+
alias: child.signature.alias,
|
|
210
|
+
args: childArgs,
|
|
211
|
+
state,
|
|
212
|
+
nowMs: child.birthAt + 1,
|
|
213
|
+
});
|
|
214
|
+
expect(r.ok).toBe(true);
|
|
215
|
+
expect(r.baseToolName).toBe(w.baseToolName);
|
|
216
|
+
expect(r.deprecated).toBe(false);
|
|
217
|
+
expect(Object.keys(r.baseArgs).sort()).toEqual(ARGS.slice().sort());
|
|
218
|
+
});
|
|
219
|
+
it("flags a deprecated parent alias as deprecated=true (still callable during gravity)", () => {
|
|
220
|
+
const w = newBorn({ now: 1_000_000, ttl: 1000, gravity: 500 });
|
|
221
|
+
const state = tickReincarnation({
|
|
222
|
+
state: { v: 1, wrappers: [w], calibration: [] },
|
|
223
|
+
baseToolArgs: { [w.baseToolName]: ARGS },
|
|
224
|
+
nowMs: 1_001_000,
|
|
225
|
+
rngSeed: 11,
|
|
226
|
+
secret: SECRET,
|
|
227
|
+
}).state;
|
|
228
|
+
const args = Object.fromEntries(ARGS.map((a) => [a, `v-${a}`]));
|
|
229
|
+
const r = resolveMortalCall({
|
|
230
|
+
alias: "mneme.mortal.arena.judge.gen1",
|
|
231
|
+
args,
|
|
232
|
+
state,
|
|
233
|
+
nowMs: 1_001_100, // inside gravity
|
|
234
|
+
});
|
|
235
|
+
expect(r.ok).toBe(true);
|
|
236
|
+
expect(r.deprecated).toBe(true);
|
|
237
|
+
});
|
|
238
|
+
it("refuses a fully-expired alias past gravity and offers a live sibling hint", () => {
|
|
239
|
+
const w = newBorn({ now: 1_000_000, ttl: 1000, gravity: 500 });
|
|
240
|
+
const state = tickReincarnation({
|
|
241
|
+
state: { v: 1, wrappers: [w], calibration: [] },
|
|
242
|
+
baseToolArgs: { [w.baseToolName]: ARGS },
|
|
243
|
+
nowMs: 1_001_000,
|
|
244
|
+
rngSeed: 11,
|
|
245
|
+
secret: SECRET,
|
|
246
|
+
}).state;
|
|
247
|
+
const r = resolveMortalCall({
|
|
248
|
+
alias: "mneme.mortal.arena.judge.gen1",
|
|
249
|
+
args: { topic: "x" },
|
|
250
|
+
state,
|
|
251
|
+
nowMs: 1_002_000, // way past gravity
|
|
252
|
+
});
|
|
253
|
+
expect(r.ok).toBe(false);
|
|
254
|
+
expect(r.hint).toBeDefined();
|
|
255
|
+
expect(r.hint).toContain("mneme.mortal.arena.judge.gen2");
|
|
256
|
+
});
|
|
257
|
+
it("flags AI-agent overfit by failing on unknown keys with a helpful hint", () => {
|
|
258
|
+
const w = newBorn({ now: 1_000_000 });
|
|
259
|
+
const state = { v: 1, wrappers: [w], calibration: [] };
|
|
260
|
+
const r = resolveMortalCall({
|
|
261
|
+
alias: w.signature.alias,
|
|
262
|
+
args: { topic: "x", THIS_IS_STALE_FROM_GEN_MINUS_ONE: 42 },
|
|
263
|
+
state,
|
|
264
|
+
});
|
|
265
|
+
expect(r.ok).toBe(false);
|
|
266
|
+
expect(r.reason).toContain("schema drifted");
|
|
267
|
+
expect(r.hint).toContain("topic");
|
|
268
|
+
});
|
|
269
|
+
it("silently drops drift-bonus params (they're calibration tripwires, not errors)", () => {
|
|
270
|
+
const w = newBorn({ now: 1_000_000 });
|
|
271
|
+
// Manually inject an addedOptionalParam via mutation
|
|
272
|
+
const drifted = mutateSignature({
|
|
273
|
+
base: w.signature,
|
|
274
|
+
baseToolName: w.baseToolName,
|
|
275
|
+
baseArgs: ARGS,
|
|
276
|
+
nextGen: 2,
|
|
277
|
+
kind: "add_optional_param",
|
|
278
|
+
rng: () => 0.3,
|
|
279
|
+
});
|
|
280
|
+
const driftedWrapper = { ...w, signature: drifted };
|
|
281
|
+
const state = { v: 1, wrappers: [driftedWrapper], calibration: [] };
|
|
282
|
+
const fresh = drifted.addedOptionalParams[0];
|
|
283
|
+
const r = resolveMortalCall({
|
|
284
|
+
alias: drifted.alias,
|
|
285
|
+
args: { topic: "x", limit: 5, outputFormat: "json", [fresh]: "ignored" },
|
|
286
|
+
state,
|
|
287
|
+
});
|
|
288
|
+
expect(r.ok).toBe(true);
|
|
289
|
+
expect(r.baseArgs).not.toHaveProperty(fresh);
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
describe("v2.19.11 MORTAL WRAPPERS · calibration telemetry", () => {
|
|
293
|
+
it("calibration score climbs as the caller succeeds; verdict bands report adaptiveness", () => {
|
|
294
|
+
let state = emptyState();
|
|
295
|
+
for (let i = 0; i < 19; i++)
|
|
296
|
+
state = recordCalibration({ state, callerKey: "ai-fast-learner", alias: "x", ok: true });
|
|
297
|
+
state = recordCalibration({ state, callerKey: "ai-fast-learner", alias: "x", ok: false });
|
|
298
|
+
const s = calibrationScore({ state, callerKey: "ai-fast-learner" });
|
|
299
|
+
expect(s.totalCalls).toBe(20);
|
|
300
|
+
expect(s.successfulCalls).toBe(19);
|
|
301
|
+
expect(s.adaptivenessScore).toBeCloseTo(0.95, 5);
|
|
302
|
+
expect(s.verdict).toBe("world_class");
|
|
303
|
+
});
|
|
304
|
+
it("an AI that keeps failing earns the over_fit verdict", () => {
|
|
305
|
+
let state = emptyState();
|
|
306
|
+
for (let i = 0; i < 10; i++)
|
|
307
|
+
state = recordCalibration({ state, callerKey: "ai-overfitter", alias: "y", ok: false });
|
|
308
|
+
for (let i = 0; i < 2; i++)
|
|
309
|
+
state = recordCalibration({ state, callerKey: "ai-overfitter", alias: "y", ok: true });
|
|
310
|
+
const s = calibrationScore({ state, callerKey: "ai-overfitter" });
|
|
311
|
+
expect(s.verdict).toBe("over_fit");
|
|
312
|
+
});
|
|
313
|
+
it("low sample size returns the cautious 'drifting' verdict (not enough signal)", () => {
|
|
314
|
+
let state = emptyState();
|
|
315
|
+
for (let i = 0; i < 3; i++)
|
|
316
|
+
state = recordCalibration({ state, callerKey: "ai-newbie", alias: "z", ok: true });
|
|
317
|
+
const s = calibrationScore({ state, callerKey: "ai-newbie" });
|
|
318
|
+
expect(s.verdict).toBe("drifting");
|
|
319
|
+
});
|
|
320
|
+
it("zero calls returns 0 with drifting verdict", () => {
|
|
321
|
+
const state = emptyState();
|
|
322
|
+
const s = calibrationScore({ state, callerKey: "never-called" });
|
|
323
|
+
expect(s.totalCalls).toBe(0);
|
|
324
|
+
expect(s.adaptivenessScore).toBe(0);
|
|
325
|
+
expect(s.verdict).toBe("drifting");
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
describe("v2.19.11 MORTAL WRAPPERS · globalStats", () => {
|
|
329
|
+
it("aggregates alive / deprecated / mutation histogram correctly across many generations", () => {
|
|
330
|
+
// 3 lineages, each reincarnated 4 times (gen5 lives, gen1-4 deprecated)
|
|
331
|
+
let state = emptyState();
|
|
332
|
+
let now = 1_000_000;
|
|
333
|
+
for (const base of ["mneme.x.a", "mneme.y.b", "mneme.z.c"]) {
|
|
334
|
+
state = { ...state, wrappers: [...state.wrappers, birthMortalWrapper({ baseToolName: base, baseArgs: ARGS, ttlMs: 1000, deprecationGravityMs: 10_000_000, nowMs: now, secret: SECRET })] };
|
|
335
|
+
}
|
|
336
|
+
for (let i = 0; i < 4; i++) {
|
|
337
|
+
const t = tickReincarnation({
|
|
338
|
+
state,
|
|
339
|
+
baseToolArgs: { "mneme.x.a": ARGS, "mneme.y.b": ARGS, "mneme.z.c": ARGS },
|
|
340
|
+
nowMs: now + 1000 + i * 1000,
|
|
341
|
+
budget: 3,
|
|
342
|
+
rngSeed: 100 + i,
|
|
343
|
+
secret: SECRET,
|
|
344
|
+
});
|
|
345
|
+
state = t.state;
|
|
346
|
+
}
|
|
347
|
+
const s = globalStats(state);
|
|
348
|
+
// 3 lineages × 5 generations = 15 wrappers; 3 alive (latest gen of each), 12 deprecated
|
|
349
|
+
expect(s.uniqueBaseTools).toBe(3);
|
|
350
|
+
expect(s.alive).toBe(3);
|
|
351
|
+
expect(s.deprecated).toBe(12);
|
|
352
|
+
expect(s.totalGenerationsAcrossLineages).toBe(15);
|
|
353
|
+
// Each lineage carries 4 cumulative mutations on gen5 (plus 3+2+1+0 on lower gens). Just sanity-check non-zero.
|
|
354
|
+
expect(s.totalMutationsApplied).toBeGreaterThan(0);
|
|
355
|
+
const histSum = Object.values(s.mutationKindHistogram).reduce((a, b) => a + b, 0);
|
|
356
|
+
expect(histSum).toBe(s.totalMutationsApplied);
|
|
357
|
+
});
|
|
358
|
+
});
|
|
359
|
+
describe("v2.19.11 MORTAL WRAPPERS · formatters + edge cases", () => {
|
|
360
|
+
it("formatter shows 🌱 for alive and 💀 for deprecated", () => {
|
|
361
|
+
const w = newBorn();
|
|
362
|
+
expect(formatWrapperLine(w)).toContain("🌱");
|
|
363
|
+
const dead = { ...w, alive: false };
|
|
364
|
+
expect(formatWrapperLine(dead)).toContain("💀");
|
|
365
|
+
});
|
|
366
|
+
it("resolve on unknown alias returns helpful error message", () => {
|
|
367
|
+
const r = resolveMortalCall({ alias: "mneme.mortal.does.not.exist.gen1", args: {}, state: emptyState() });
|
|
368
|
+
expect(r.ok).toBe(false);
|
|
369
|
+
expect(r.reason).toContain("unknown");
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
//# sourceMappingURL=mortal_wrappers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mortal_wrappers.test.js","sourceRoot":"","sources":["../../src/mortal_wrappers/mortal_wrappers.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.12 — MNEME MUSCLE MEMORY (CLI bypasses Node startup via persistent daemon)
|
|
3
|
+
*
|
|
4
|
+
* "Cold-start a Node.js binary every CLI invocation = 600-800ms of pure
|
|
5
|
+
* bootstrap overhead. After the first call, the daemon is already
|
|
6
|
+
* warm — subsequent calls dispatch over a Unix domain socket / Windows
|
|
7
|
+
* named pipe to the same process, skipping bootstrap entirely. Cold
|
|
8
|
+
* ~800ms → warm ~12ms. The CLI literally learns to run itself faster
|
|
9
|
+
* along the paths you walk most."
|
|
10
|
+
*
|
|
11
|
+
* Architecture (this module ships the PROTOCOL + HANDLER; the actual
|
|
12
|
+
* net.Server / net.Socket wiring is done by the CLI package):
|
|
13
|
+
* - Frame: {requestId, cmd, args, nonce, hmac}
|
|
14
|
+
* - Reply: {requestId, ok, data, ms, error?}
|
|
15
|
+
* - HMAC-SHA256 over canonical frame (sans hmac field)
|
|
16
|
+
* - Nonce window: 60s; replay rejected via nonce ledger
|
|
17
|
+
*
|
|
18
|
+
* Honest scope:
|
|
19
|
+
* - The handler is in-process; we do NOT hot-load arbitrary modules
|
|
20
|
+
* at dispatch time. Only registered commands run.
|
|
21
|
+
* - Test transport is in-memory (Promise-based) so tests don't actually
|
|
22
|
+
* open sockets — keeps CI portable + deterministic.
|
|
23
|
+
* - Benchmark measures the protocol round-trip and the registered
|
|
24
|
+
* handler's work, not Node startup itself (the savings are at the
|
|
25
|
+
* CLI binary level, observed externally).
|
|
26
|
+
*/
|
|
27
|
+
declare const PROTOCOL_VERSION: 1;
|
|
28
|
+
export interface MuscleFrame {
|
|
29
|
+
v: typeof PROTOCOL_VERSION;
|
|
30
|
+
requestId: string;
|
|
31
|
+
cmd: string;
|
|
32
|
+
args: Record<string, unknown>;
|
|
33
|
+
nonce: string;
|
|
34
|
+
ts: number;
|
|
35
|
+
hmac: string;
|
|
36
|
+
}
|
|
37
|
+
export interface MuscleReply {
|
|
38
|
+
v: typeof PROTOCOL_VERSION;
|
|
39
|
+
requestId: string;
|
|
40
|
+
ok: boolean;
|
|
41
|
+
data?: unknown;
|
|
42
|
+
ms: number;
|
|
43
|
+
error?: string;
|
|
44
|
+
}
|
|
45
|
+
export type MuscleHandler = (cmd: string, args: Record<string, unknown>) => Promise<unknown> | unknown;
|
|
46
|
+
export interface DispatcherOpts {
|
|
47
|
+
secret?: string;
|
|
48
|
+
handlers: Record<string, MuscleHandler>;
|
|
49
|
+
/** Caller-supplied clock for testability. */
|
|
50
|
+
now?: () => number;
|
|
51
|
+
}
|
|
52
|
+
export interface CallInput {
|
|
53
|
+
cmd: string;
|
|
54
|
+
args?: Record<string, unknown>;
|
|
55
|
+
secret?: string;
|
|
56
|
+
/** Override timestamp for testability. */
|
|
57
|
+
ts?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Stateful dispatcher: keeps a nonce ledger to reject replay attacks and a
|
|
61
|
+
* latency histogram for the benchmark surface.
|
|
62
|
+
*/
|
|
63
|
+
export declare class MuscleDispatcher {
|
|
64
|
+
private nonces;
|
|
65
|
+
private histogram;
|
|
66
|
+
private warmCalls;
|
|
67
|
+
private coldCalls;
|
|
68
|
+
readonly handlers: Record<string, MuscleHandler>;
|
|
69
|
+
readonly secret: string;
|
|
70
|
+
readonly now: () => number;
|
|
71
|
+
constructor(opts: DispatcherOpts);
|
|
72
|
+
/** Build a signed frame caller-side. */
|
|
73
|
+
buildFrame(input: CallInput): MuscleFrame;
|
|
74
|
+
/** Daemon-side: verify + execute. Returns a structured reply. */
|
|
75
|
+
handleFrame(frame: MuscleFrame): Promise<MuscleReply>;
|
|
76
|
+
/** Cheap garbage-collection of expired nonces. */
|
|
77
|
+
private gcNonces;
|
|
78
|
+
/** Convenience for in-process tests: signs + dispatches in one step. */
|
|
79
|
+
call(input: CallInput): Promise<MuscleReply>;
|
|
80
|
+
status(): {
|
|
81
|
+
warmCalls: number;
|
|
82
|
+
coldCalls: number;
|
|
83
|
+
totalCalls: number;
|
|
84
|
+
avgWarmLatencyMs: number;
|
|
85
|
+
p95LatencyMs: number;
|
|
86
|
+
speedupFactor: number;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Synthetic benchmark: dispatches a cheap handler N times. Returns measured
|
|
91
|
+
* cold-vs-warm latency proving the speedup principle (a real CLI cold-start
|
|
92
|
+
* additionally avoids Node bootstrap, which is measured by an external timer
|
|
93
|
+
* in the CLI package).
|
|
94
|
+
*/
|
|
95
|
+
export declare function benchmarkMuscleSpeedup(opts: {
|
|
96
|
+
iterations?: number;
|
|
97
|
+
workMs?: number;
|
|
98
|
+
secret?: string;
|
|
99
|
+
}): Promise<{
|
|
100
|
+
iterations: number;
|
|
101
|
+
coldMs: number;
|
|
102
|
+
avgWarmMs: number;
|
|
103
|
+
speedupFactor: number;
|
|
104
|
+
perCall: number[];
|
|
105
|
+
}>;
|
|
106
|
+
/** Platform-aware suggested socket path (Unix domain socket / Windows named pipe). */
|
|
107
|
+
export declare function suggestedSocketPath(opts?: {
|
|
108
|
+
repoPath?: string;
|
|
109
|
+
}): string;
|
|
110
|
+
export declare function formatMuscleStatusLine(s: ReturnType<MuscleDispatcher["status"]>): string;
|
|
111
|
+
export {};
|
|
112
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/muscle_memory/index.ts"],"names":[],"mappings":"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"}
|