@mneme-ai/core 2.19.20 → 2.19.22

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 (46) hide show
  1. package/dist/catalog_parity/catalog_parity.test.d.ts +2 -0
  2. package/dist/catalog_parity/catalog_parity.test.d.ts.map +1 -0
  3. package/dist/catalog_parity/catalog_parity.test.js +104 -0
  4. package/dist/catalog_parity/catalog_parity.test.js.map +1 -0
  5. package/dist/catalog_parity/index.d.ts +69 -0
  6. package/dist/catalog_parity/index.d.ts.map +1 -0
  7. package/dist/catalog_parity/index.js +118 -0
  8. package/dist/catalog_parity/index.js.map +1 -0
  9. package/dist/cosmic/aurelian_v1921.test.d.ts +2 -0
  10. package/dist/cosmic/aurelian_v1921.test.d.ts.map +1 -0
  11. package/dist/cosmic/aurelian_v1921.test.js +48 -0
  12. package/dist/cosmic/aurelian_v1921.test.js.map +1 -0
  13. package/dist/cosmic/aurelian_v1922.test.d.ts +2 -0
  14. package/dist/cosmic/aurelian_v1922.test.d.ts.map +1 -0
  15. package/dist/cosmic/aurelian_v1922.test.js +48 -0
  16. package/dist/cosmic/aurelian_v1922.test.js.map +1 -0
  17. package/dist/dynamic/pack-schema.d.ts +14 -14
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +3 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/periodic/periodic.test.js +1 -1
  23. package/dist/periodic/periodic.test.js.map +1 -1
  24. package/dist/reflex/index.d.ts +210 -0
  25. package/dist/reflex/index.d.ts.map +1 -0
  26. package/dist/reflex/index.js +298 -0
  27. package/dist/reflex/index.js.map +1 -0
  28. package/dist/reflex/reflex.test.d.ts +2 -0
  29. package/dist/reflex/reflex.test.d.ts.map +1 -0
  30. package/dist/reflex/reflex.test.js +379 -0
  31. package/dist/reflex/reflex.test.js.map +1 -0
  32. package/dist/snn_auto_promote/index.d.ts +82 -0
  33. package/dist/snn_auto_promote/index.d.ts.map +1 -0
  34. package/dist/snn_auto_promote/index.js +154 -0
  35. package/dist/snn_auto_promote/index.js.map +1 -0
  36. package/dist/snn_auto_promote/snn_auto_promote.test.d.ts +2 -0
  37. package/dist/snn_auto_promote/snn_auto_promote.test.d.ts.map +1 -0
  38. package/dist/snn_auto_promote/snn_auto_promote.test.js +164 -0
  39. package/dist/snn_auto_promote/snn_auto_promote.test.js.map +1 -0
  40. package/dist/whats_new.d.ts.map +1 -1
  41. package/dist/whats_new.js +16 -0
  42. package/dist/whats_new.js.map +1 -1
  43. package/dist/wrapper_genesis/index.d.ts.map +1 -1
  44. package/dist/wrapper_genesis/index.js +23 -0
  45. package/dist/wrapper_genesis/index.js.map +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1,298 @@
1
+ /**
2
+ * v2.19.22 — MNEME REFLEX (FLAGSHIP) · Automatic Pre-Execution Layer
3
+ *
4
+ * "Every AI tool today is request → response. Mneme is the FIRST AI
5
+ * layer that pre-executes the tools an AI agent is about to call,
6
+ * based on what the user just did on their machine. By the time the
7
+ * AI agent asks, the answer is already in cache. 200ms cold ladder
8
+ * becomes ~0ms cached. The competitive moat is not the algorithm —
9
+ * it's the daemon + pheromone trail + local-first usage history.
10
+ * No SaaS competitor can ship this because they don't live on the
11
+ * user's machine."
12
+ *
13
+ * Pipeline:
14
+ * user event (file_save / git_commit / terminal_command / user_chat)
15
+ * ↓
16
+ * recordObservation(event, followupToolCall) ← HMAC-chained pheromone store
17
+ * ↓
18
+ * later same event recurs:
19
+ * ↓
20
+ * predictFollowup(event, store) ← top-N tools by frequency
21
+ * ↓
22
+ * prefetch(predictions, invokeFn, budget=200ms) ← concurrent, budget-bound
23
+ * ↓
24
+ * writeCacheEntry per result ← TTL=5min, HMAC-signed
25
+ * ↓
26
+ * AI agent asks: readCache(event, toolName) → INSTANT HIT (0ms)
27
+ *
28
+ * Honest scope:
29
+ * - PROTOCOL + STORE + PREDICTOR + CACHE + PREFETCH EXECUTOR ship now.
30
+ * Event detector lives in caller (daemon / shell hook / git hook).
31
+ * - PREDICTOR is frequency-based (no ML); deliberately deterministic so
32
+ * same store → same predictions. Confidence = matches / total within
33
+ * event signature.
34
+ * - CACHE is content-addressed on event signature + toolName + args.
35
+ * HMAC-signed entries; tampered entries refuse to hit.
36
+ * - PREFETCH uses Promise.race against budget. A slow tool gets killed
37
+ * at budgetMs and reported in `executed[i].ok = false`. Never blocks.
38
+ * - Persistence is CALLER'S job (daemon writes store/cache to disk).
39
+ * Mneme returns updated value; caller persists. Same pattern as
40
+ * v2.19.16 FEDERATED, v2.19.20 RCI, v2.19.21 SNN AUTO-PROMOTE.
41
+ * - Refuses to leak: cache entry only readable for matching event sig
42
+ * + toolName + (optionally) args predicate. No cross-event leakage.
43
+ */
44
+ import { createHmac, timingSafeEqual } from "node:crypto";
45
+ const PROTOCOL_VERSION = 1;
46
+ const DEFAULT_TTL_MS = 5 * 60 * 1000;
47
+ const DEFAULT_PREFETCH_BUDGET_MS = 200;
48
+ const DEFAULT_TOP_N = 3;
49
+ // ─── canonical helpers ────────────────────────────────────────────────
50
+ function canon(v) {
51
+ if (v === null || typeof v !== "object")
52
+ return JSON.stringify(v);
53
+ if (Array.isArray(v))
54
+ return "[" + v.map(canon).join(",") + "]";
55
+ const keys = Object.keys(v).sort();
56
+ return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
57
+ }
58
+ function defaultSecret() {
59
+ return process.env["MNEME_REFLEX_SECRET"] || `mneme-reflex-v${PROTOCOL_VERSION}`;
60
+ }
61
+ function hmacHex(body, secret) {
62
+ return createHmac("sha256", secret).update(canon(body)).digest("hex");
63
+ }
64
+ function safeEqHex(a, b) {
65
+ try {
66
+ return timingSafeEqual(Buffer.from(a, "hex"), Buffer.from(b, "hex"));
67
+ }
68
+ catch {
69
+ return false;
70
+ }
71
+ }
72
+ /** Stable signature over the EVENT (kind + context only — NOT ts). */
73
+ export function eventCacheKey(event) {
74
+ const body = { kind: event.kind, context: event.context };
75
+ return createHmac("sha256", "mneme-reflex-cache-key").update(canon(body)).digest("hex").slice(0, 16);
76
+ }
77
+ // ─── pheromone store ──────────────────────────────────────────────────
78
+ export function emptyStore() {
79
+ return { v: PROTOCOL_VERSION, records: [] };
80
+ }
81
+ export function recordObservation(input) {
82
+ const prev = input.store.records[input.store.records.length - 1];
83
+ const body = {
84
+ v: PROTOCOL_VERSION,
85
+ event: input.event,
86
+ followup: input.followup,
87
+ prevSig: prev ? prev.sig : null,
88
+ };
89
+ const sig = hmacHex(body, input.secret ?? defaultSecret());
90
+ return {
91
+ v: PROTOCOL_VERSION,
92
+ records: [...input.store.records, { ...body, sig }],
93
+ };
94
+ }
95
+ export function verifyStore(store, secret) {
96
+ const sec = secret ?? defaultSecret();
97
+ let prevSig = null;
98
+ for (let i = 0; i < store.records.length; i++) {
99
+ const r = store.records[i];
100
+ const { sig, ...body } = r;
101
+ if (body.prevSig !== prevSig)
102
+ return { ok: false, brokenAt: i, reason: `prevSig mismatch at step ${i}` };
103
+ if (!safeEqHex(hmacHex(body, sec), sig))
104
+ return { ok: false, brokenAt: i, reason: `HMAC mismatch at step ${i}` };
105
+ prevSig = sig;
106
+ }
107
+ return { ok: true };
108
+ }
109
+ // ─── predictor ────────────────────────────────────────────────────────
110
+ /**
111
+ * Returns top-N likely follow-up tools for the given event, ordered by
112
+ * frequency in the pheromone store. Confidence = matches / total within
113
+ * the event signature group.
114
+ *
115
+ * Deterministic: same store + same event → same predictions.
116
+ */
117
+ export function predictFollowup(input) {
118
+ const topN = input.topN ?? DEFAULT_TOP_N;
119
+ const eventSig = eventCacheKey(input.event);
120
+ const matching = input.store.records.filter((r) => eventCacheKey(r.event) === eventSig);
121
+ if (matching.length === 0)
122
+ return [];
123
+ const counts = new Map();
124
+ for (const r of matching) {
125
+ const prev = counts.get(r.followup.toolName);
126
+ if (prev) {
127
+ prev.count++;
128
+ prev.argsTemplate = r.followup.args;
129
+ }
130
+ else {
131
+ counts.set(r.followup.toolName, { count: 1, argsTemplate: r.followup.args });
132
+ }
133
+ }
134
+ const total = matching.length;
135
+ return Array.from(counts.entries())
136
+ .map(([toolName, { count, argsTemplate }]) => ({
137
+ toolName,
138
+ argsTemplate,
139
+ confidence: count / total,
140
+ sampleCount: count,
141
+ }))
142
+ .sort((a, b) => b.confidence - a.confidence || a.toolName.localeCompare(b.toolName))
143
+ .slice(0, topN);
144
+ }
145
+ // ─── cache ────────────────────────────────────────────────────────────
146
+ export function emptyCache() {
147
+ return { v: PROTOCOL_VERSION, entries: {} };
148
+ }
149
+ export function writeCacheEntry(input) {
150
+ const eventKey = eventCacheKey(input.event);
151
+ const ts = input.nowMs ?? Date.now();
152
+ const ttl = input.ttlMs ?? DEFAULT_TTL_MS;
153
+ const body = {
154
+ v: PROTOCOL_VERSION,
155
+ eventKey,
156
+ toolName: input.toolName,
157
+ args: input.args,
158
+ result: input.result,
159
+ ts,
160
+ ttlMs: ttl,
161
+ };
162
+ const sig = hmacHex(body, input.secret ?? defaultSecret());
163
+ const entry = { ...body, sig };
164
+ const existing = input.cache.entries[eventKey] ?? [];
165
+ return {
166
+ v: PROTOCOL_VERSION,
167
+ entries: { ...input.cache.entries, [eventKey]: [...existing, entry] },
168
+ };
169
+ }
170
+ export function readCache(input) {
171
+ const eventKey = eventCacheKey(input.event);
172
+ const now = input.nowMs ?? Date.now();
173
+ const sec = input.secret ?? defaultSecret();
174
+ const entries = input.cache.entries[eventKey] ?? [];
175
+ for (let i = entries.length - 1; i >= 0; i--) {
176
+ const e = entries[i];
177
+ if (e.toolName !== input.toolName)
178
+ continue;
179
+ if (input.argsMatch && !input.argsMatch(e.args))
180
+ continue;
181
+ if (now > e.ts + e.ttlMs)
182
+ continue;
183
+ const { sig, ...body } = e;
184
+ if (!safeEqHex(hmacHex(body, sec), sig)) {
185
+ return { hit: false, reason: "HMAC mismatch -- cache entry tampered" };
186
+ }
187
+ return { hit: true, entry: e };
188
+ }
189
+ return { hit: false, reason: "no fresh entry" };
190
+ }
191
+ /** Drops expired entries; returns compacted cache. Pure. */
192
+ export function gcCache(input) {
193
+ const now = input.nowMs ?? Date.now();
194
+ const newEntries = {};
195
+ let removed = 0;
196
+ for (const [k, arr] of Object.entries(input.cache.entries)) {
197
+ const kept = arr.filter((e) => now <= e.ts + e.ttlMs);
198
+ removed += arr.length - kept.length;
199
+ if (kept.length > 0)
200
+ newEntries[k] = kept;
201
+ }
202
+ return { cache: { v: PROTOCOL_VERSION, entries: newEntries }, removed };
203
+ }
204
+ // ─── prefetch executor ────────────────────────────────────────────────
205
+ /**
206
+ * Concurrent prefetch of up to N candidate tool calls, each raced against
207
+ * a per-tool budget. Always returns within budgetMs + small dispatch
208
+ * overhead — even if individual tools hang. Failed calls land in
209
+ * `executed[i].ok = false` and are NOT written to cache.
210
+ */
211
+ export async function prefetch(input) {
212
+ const budget = input.budgetMs ?? DEFAULT_PREFETCH_BUDGET_MS;
213
+ const t0 = Date.now();
214
+ let cache = input.cache;
215
+ const executed = [];
216
+ await Promise.all(input.candidates.map(async (c) => {
217
+ const start = Date.now();
218
+ let timeoutHandle;
219
+ try {
220
+ const result = await Promise.race([
221
+ input.invoke(c.toolName, c.args),
222
+ new Promise((_, reject) => {
223
+ timeoutHandle = setTimeout(() => reject(new Error("prefetch_timeout")), budget);
224
+ }),
225
+ ]);
226
+ if (timeoutHandle)
227
+ clearTimeout(timeoutHandle);
228
+ const ms = Date.now() - start;
229
+ cache = writeCacheEntry({
230
+ cache,
231
+ event: input.event,
232
+ toolName: c.toolName,
233
+ args: c.args,
234
+ result,
235
+ ttlMs: input.ttlMs,
236
+ nowMs: input.nowMs,
237
+ secret: input.secret,
238
+ });
239
+ executed.push({ toolName: c.toolName, ms, ok: true });
240
+ }
241
+ catch (e) {
242
+ if (timeoutHandle)
243
+ clearTimeout(timeoutHandle);
244
+ executed.push({ toolName: c.toolName, ms: Date.now() - start, ok: false, error: e.message });
245
+ }
246
+ }));
247
+ const totalMs = Date.now() - t0;
248
+ return { cache, executed, totalMs, budgetMs: budget, withinBudget: totalMs <= budget + 50 };
249
+ }
250
+ export function emptyTelemetry() {
251
+ return { hits: 0, misses: 0 };
252
+ }
253
+ export function recordFetch(input) {
254
+ return {
255
+ hits: input.telemetry.hits + (input.hit ? 1 : 0),
256
+ misses: input.telemetry.misses + (input.hit ? 0 : 1),
257
+ };
258
+ }
259
+ export function computeStats(input) {
260
+ const now = input.nowMs ?? Date.now();
261
+ const uniqueSigs = new Set(input.store.records.map((r) => eventCacheKey(r.event)));
262
+ const toolCounts = new Map();
263
+ for (const r of input.store.records) {
264
+ toolCounts.set(r.followup.toolName, (toolCounts.get(r.followup.toolName) ?? 0) + 1);
265
+ }
266
+ const topTools = Array.from(toolCounts.entries())
267
+ .map(([toolName, count]) => ({ toolName, count }))
268
+ .sort((a, b) => b.count - a.count || a.toolName.localeCompare(b.toolName))
269
+ .slice(0, 10);
270
+ let totalEntries = 0, expired = 0, fresh = 0;
271
+ for (const eventEntries of Object.values(input.cache.entries)) {
272
+ for (const e of eventEntries) {
273
+ totalEntries++;
274
+ if (now > e.ts + e.ttlMs)
275
+ expired++;
276
+ else
277
+ fresh++;
278
+ }
279
+ }
280
+ const t = input.telemetry ?? emptyTelemetry();
281
+ const total = t.hits + t.misses;
282
+ return {
283
+ totalRecords: input.store.records.length,
284
+ uniqueEventSigs: uniqueSigs.size,
285
+ topToolsByFrequency: topTools,
286
+ totalCacheEntries: totalEntries,
287
+ expiredCacheEntries: expired,
288
+ freshCacheEntries: fresh,
289
+ hitRate: total === 0 ? 0 : t.hits / total,
290
+ totalHits: t.hits,
291
+ totalMisses: t.misses,
292
+ };
293
+ }
294
+ export function formatStatsLine(s) {
295
+ const hitPct = (s.hitRate * 100).toFixed(1);
296
+ return `🥇 REFLEX · ${s.totalRecords} obs · ${s.uniqueEventSigs} events · ${s.freshCacheEntries}/${s.totalCacheEntries} fresh · hit-rate ${hitPct}% (${s.totalHits}/${s.totalHits + s.totalMisses})`;
297
+ }
298
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reflex/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reflex.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflex.test.d.ts","sourceRoot":"","sources":["../../src/reflex/reflex.test.ts"],"names":[],"mappings":""}