@mneme-ai/mcp 1.23.5 → 1.24.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.
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Mneme Antivirus -- MCP tool surface.
3
+ *
4
+ * mneme.antivirus.scan -- scan a draft for hallucination strains
5
+ * mneme.antivirus.immunize -- session middleware (returns auto-action)
6
+ * mneme.antivirus.lab.strains -- list known strains (taxonomy)
7
+ * mneme.antivirus.lab.vaccines -- list pharmacopoeia
8
+ * mneme.antivirus.cert.benchmark-- run benchmark on one or all vaccines
9
+ * mneme.antivirus.stats -- realtime stats snapshot
10
+ * mneme.antivirus.cure -- apply suggested cures to a draft
11
+ */
12
+ import type { MnemeTool } from "./_types.js";
13
+ export declare const antivirusScanTool: MnemeTool;
14
+ export declare const antivirusImmunizeTool: MnemeTool;
15
+ export declare const antivirusLabStrainsTool: MnemeTool;
16
+ export declare const antivirusLabVaccinesTool: MnemeTool;
17
+ export declare const antivirusCertBenchmarkTool: MnemeTool;
18
+ export declare const antivirusStatsTool: MnemeTool;
19
+ export declare const antivirusCureTool: MnemeTool;
20
+ export declare const antivirusTools: MnemeTool[];
21
+ //# sourceMappingURL=_antivirus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_antivirus.d.ts","sourceRoot":"","sources":["../../src/tools/_antivirus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,eAAO,MAAM,iBAAiB,EAAE,SAwE/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,SA4CnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,SAwBrC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,SAsBtC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,SA6CxC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SA6BhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SA+C/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAAS,EAQrC,CAAC"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Mneme Antivirus -- MCP tool surface.
3
+ *
4
+ * mneme.antivirus.scan -- scan a draft for hallucination strains
5
+ * mneme.antivirus.immunize -- session middleware (returns auto-action)
6
+ * mneme.antivirus.lab.strains -- list known strains (taxonomy)
7
+ * mneme.antivirus.lab.vaccines -- list pharmacopoeia
8
+ * mneme.antivirus.cert.benchmark-- run benchmark on one or all vaccines
9
+ * mneme.antivirus.stats -- realtime stats snapshot
10
+ * mneme.antivirus.cure -- apply suggested cures to a draft
11
+ */
12
+ import { antivirus } from "@mneme-ai/core";
13
+ const ROOT = (rt) => rt.meta.rootPath;
14
+ export const antivirusScanTool = {
15
+ name: "mneme.antivirus.scan",
16
+ category: "meta",
17
+ description: "Scan a draft for HALLUCINATION STRAINS. Runs the full pharmacopoeia of " +
18
+ "vaccines (8 by default) against every suspect claim found in the text. " +
19
+ "Returns confirmed infections with evidence + suggested cures + a 0..1 " +
20
+ "risk score. Use BEFORE delivering any user-facing answer that contains " +
21
+ "commit hashes, author names, function calls, package names, dates, " +
22
+ "counts, or file paths -- those are the surfaces hallucinations attack.",
23
+ whenToUse: "You have a draft answer ready and want to catch hallucinations BEFORE the user sees them.",
24
+ triggers: ["scan for hallucinations", "antivirus scan", "check my draft", "verify claims"],
25
+ inputSchema: {
26
+ type: "object",
27
+ required: ["draft"],
28
+ properties: {
29
+ draft: { type: "string", description: "The text to scan (your draft answer)." },
30
+ strains: {
31
+ type: "array", items: { type: "string" },
32
+ description: "Optional: limit to specific strain ids. Default: all.",
33
+ },
34
+ },
35
+ },
36
+ outputSchema: {
37
+ type: "object",
38
+ properties: {
39
+ scanId: { type: "string" }, ranAt: { type: "string" },
40
+ claimsExamined: { type: "number" }, infections: { type: "number" },
41
+ riskScore: { type: "number" }, byStrain: { type: "object" },
42
+ totalMs: { type: "number" }, vaccinesUsed: { type: "array" },
43
+ details: { type: "array" },
44
+ },
45
+ },
46
+ examples: [
47
+ {
48
+ userQuery: "Scan my draft answer for hallucinations.",
49
+ expectedOutput: "Returns the count of confirmed infections + per-strain breakdown + risk score 0..1.",
50
+ },
51
+ ],
52
+ pitfalls: [
53
+ "Surface patterns are intentionally noisy (high recall); the assay confirms infection. False positives are still possible -- review evidence.",
54
+ "Some assays shell out to git/npm; first scan takes longer (~1-3s) while the cache builds.",
55
+ ],
56
+ composeWith: ["mneme.antivirus.cure", "mneme.confess", "mneme.adversary.cross_examine"],
57
+ handler: async (rt, args) => {
58
+ const draft = String(args["draft"] ?? "");
59
+ const wantStrains = Array.isArray(args["strains"]) ? args["strains"] : null;
60
+ const vaccines = wantStrains
61
+ ? antivirus.SEED_VACCINES.filter((v) => wantStrains.includes(v.strain))
62
+ : undefined;
63
+ const result = await antivirus.scan(ROOT(rt), draft, { vaccines });
64
+ return {
65
+ data: {
66
+ scanId: result.scanId, ranAt: result.ranAt,
67
+ claimsExamined: result.assays.length, infections: result.infections.length,
68
+ riskScore: Number(result.riskScore.toFixed(3)),
69
+ byStrain: result.byStrain, totalMs: result.totalMs,
70
+ vaccinesUsed: result.vaccinesUsed,
71
+ details: result.assays.map((a) => ({
72
+ strain: a.claim.strain, match: a.claim.match, offset: a.claim.offset,
73
+ infected: a.infected, evidence: a.evidence, cure: a.cure ?? null,
74
+ assayMs: a.assayMs,
75
+ })),
76
+ },
77
+ wisdom: result.infections.length === 0
78
+ ? `No hallucinations detected (${result.assays.length} claim${result.assays.length === 1 ? "" : "s"} examined, riskScore ${result.riskScore.toFixed(2)}).`
79
+ : `Caught ${result.infections.length} hallucination${result.infections.length === 1 ? "" : "s"} of ${result.assays.length} claims (riskScore ${result.riskScore.toFixed(2)}). Top strain: ${Object.entries(result.byStrain).sort(([, a], [, b]) => b - a)[0]?.[0] ?? "n/a"}.`,
80
+ confidence: { level: "high" },
81
+ followUp: result.infections.length > 0 ? ["mneme.antivirus.cure"] : [],
82
+ };
83
+ },
84
+ };
85
+ export const antivirusImmunizeTool = {
86
+ name: "mneme.antivirus.immunize",
87
+ category: "meta",
88
+ description: "Activate antivirus protection for the current session. Returns the " +
89
+ "current pharmacopoeia + an [AUTO-ACTION] instructing the AI agent to " +
90
+ "call mneme.antivirus.scan on every draft answer before delivery.",
91
+ whenToUse: "Session start, OR after `mneme.welcome` (auto-action protocol).",
92
+ triggers: ["immunize", "enable antivirus", "antivirus on"],
93
+ inputSchema: { type: "object", properties: {} },
94
+ outputSchema: {
95
+ type: "object",
96
+ properties: {
97
+ activeVaccines: { type: "number" }, strainCoverage: { type: "number" },
98
+ avgF1: { type: ["number", "null"] },
99
+ },
100
+ },
101
+ examples: [{ userQuery: "Turn on antivirus for this session." }],
102
+ pitfalls: ["Immunization is per-session; the AI must remember to invoke scan() on each draft (the auto-action enforces it)."],
103
+ composeWith: ["mneme.antivirus.scan", "mneme.welcome"],
104
+ handler: async (rt) => {
105
+ const p = antivirus.readPharmacopoeia(ROOT(rt));
106
+ const efficacies = p.vaccines.map((v) => v.efficacy?.f1).filter((f) => typeof f === "number");
107
+ const avgF1 = efficacies.length === 0 ? null : efficacies.reduce((s, x) => s + x, 0) / efficacies.length;
108
+ const distinctStrains = new Set(p.vaccines.map((v) => v.strain));
109
+ return {
110
+ data: {
111
+ activeVaccines: p.vaccines.length,
112
+ strainCoverage: distinctStrains.size,
113
+ avgF1: avgF1 == null ? null : Number(avgF1.toFixed(3)),
114
+ },
115
+ wisdom: `Antivirus activated: ${p.vaccines.length} vaccines covering ${distinctStrains.size} strains${avgF1 != null ? ` (avg F1: ${avgF1.toFixed(2)})` : ""}.`,
116
+ confidence: { level: "high" },
117
+ secondBrain: {
118
+ autoActions: [{
119
+ id: "antivirus-scan-on-draft",
120
+ tool: "mneme.antivirus.scan",
121
+ args: { draft: "<DRAFT_TEXT_GOES_HERE>" },
122
+ announceBefore: "Scanning draft for hallucinations...",
123
+ announceAfter: "Antivirus scan complete.",
124
+ }],
125
+ },
126
+ };
127
+ },
128
+ };
129
+ export const antivirusLabStrainsTool = {
130
+ name: "mneme.antivirus.lab.strains",
131
+ category: "meta",
132
+ description: "List the known taxonomy of hallucination strains. Each strain has a " +
133
+ "scientific name, common name, severity 1..5, and surface signature.",
134
+ whenToUse: "User asks 'what kinds of hallucinations does Mneme catch?' or you want pedagogy.",
135
+ triggers: ["list strains", "antivirus taxonomy", "what hallucinations"],
136
+ inputSchema: { type: "object", properties: {} },
137
+ outputSchema: { type: "object", properties: { strains: { type: "array" } } },
138
+ examples: [{ userQuery: "What hallucination types does Mneme detect?" }],
139
+ pitfalls: [],
140
+ composeWith: ["mneme.antivirus.lab.vaccines", "mneme.antivirus.scan"],
141
+ handler: async () => {
142
+ const strains = antivirus.listStrains();
143
+ return {
144
+ data: { strains: strains.map((s) => ({
145
+ id: s.id, scientificName: s.scientificName, commonName: s.commonName,
146
+ pathogenesis: s.pathogenesis, severity: s.severity,
147
+ })) },
148
+ wisdom: `${strains.length} strains catalogued. Top severity: ${strains.filter((s) => s.severity >= 4).map((s) => s.commonName).join(", ")}.`,
149
+ confidence: { level: "high" },
150
+ };
151
+ },
152
+ };
153
+ export const antivirusLabVaccinesTool = {
154
+ name: "mneme.antivirus.lab.vaccines",
155
+ category: "meta",
156
+ description: "List the vaccines in the active pharmacopoeia (seed + locally-developed " +
157
+ "+ inherited via MneMeiosis). Each entry includes its current efficacy " +
158
+ "(precision/recall/F1) -- HMAC-signed, verifiable.",
159
+ whenToUse: "User asks 'what vaccines do I have?' or you need to inspect the inventory.",
160
+ triggers: ["list vaccines", "pharmacopoeia", "antivirus inventory"],
161
+ inputSchema: { type: "object", properties: {} },
162
+ outputSchema: { type: "object", properties: { vaccines: { type: "array" } } },
163
+ examples: [{ userQuery: "Show me the pharmacopoeia." }],
164
+ pitfalls: ["efficacy is null for vaccines that haven't been benchmarked yet -- run mneme.antivirus.cert.benchmark first."],
165
+ composeWith: ["mneme.antivirus.cert.benchmark"],
166
+ handler: async (rt) => {
167
+ const p = antivirus.readPharmacopoeia(ROOT(rt));
168
+ return {
169
+ data: { vaccines: p.vaccines },
170
+ wisdom: `${p.vaccines.length} vaccines registered (${p.vaccines.filter((v) => v.efficacy).length} benchmarked).`,
171
+ confidence: { level: "high" },
172
+ };
173
+ },
174
+ };
175
+ export const antivirusCertBenchmarkTool = {
176
+ name: "mneme.antivirus.cert.benchmark",
177
+ category: "meta",
178
+ description: "Run the labeled benchmark suite for one vaccine (or all). Returns " +
179
+ "precision/recall/F1 with an HMAC-SHA256 signature anyone can " +
180
+ "re-verify. Updates the pharmacopoeia with the latest efficacy " +
181
+ "snapshot. This is the CERTIFICATION endpoint -- numbers reported " +
182
+ "here are honest, no rounding up.",
183
+ whenToUse: "You want to certify the current vaccines before relying on them, OR a CI gate before publish.",
184
+ triggers: ["benchmark vaccines", "certify antivirus", "vaccine efficacy"],
185
+ inputSchema: {
186
+ type: "object",
187
+ properties: {
188
+ vaccineId: { type: "string", description: "Optional: benchmark just this one vaccine. Default: all." },
189
+ },
190
+ },
191
+ outputSchema: { type: "object", properties: { results: { type: "object" } } },
192
+ examples: [{ userQuery: "Benchmark all vaccines and tell me their F1 scores." }],
193
+ pitfalls: [
194
+ "Benchmarks shell out to git/npm and may take 5-30 seconds.",
195
+ "Some negative cases require a real repo with git history -- the harness is honest about that.",
196
+ ],
197
+ composeWith: ["mneme.antivirus.lab.vaccines"],
198
+ handler: async (rt, args) => {
199
+ const wantId = typeof args["vaccineId"] === "string" ? args["vaccineId"] : null;
200
+ const vaccines = wantId
201
+ ? antivirus.SEED_VACCINES.filter((v) => v.id === wantId)
202
+ : antivirus.SEED_VACCINES;
203
+ if (vaccines.length === 0) {
204
+ return { data: { results: {} }, wisdom: `No vaccine matched id "${wantId}".`, confidence: { level: "high" } };
205
+ }
206
+ const results = await antivirus.runAllBenchmarks(ROOT(rt), vaccines);
207
+ antivirus.refreshEfficacies(ROOT(rt));
208
+ const lines = [];
209
+ for (const [id, eff] of Object.entries(results)) {
210
+ const f1 = eff.f1 == null ? "n/a" : eff.f1.toFixed(2);
211
+ lines.push(`${id}: F1 ${f1} (TP ${eff.tp}/${eff.tp + eff.fn}, FP ${eff.fp})`);
212
+ }
213
+ return {
214
+ data: { results },
215
+ wisdom: `Certified ${vaccines.length} vaccine${vaccines.length === 1 ? "" : "s"}. ${lines.join(" | ")}`,
216
+ confidence: { level: "high" },
217
+ };
218
+ },
219
+ };
220
+ export const antivirusStatsTool = {
221
+ name: "mneme.antivirus.stats",
222
+ category: "meta",
223
+ description: "Realtime stats snapshot: total scans, total infections caught, per-strain " +
224
+ "counts, recent scan summaries. Powers the web Lab dashboard.",
225
+ whenToUse: "User asks 'how many hallucinations has Mneme blocked?' or for the Lab dashboard.",
226
+ triggers: ["antivirus stats", "how many hallucinations", "lab metrics"],
227
+ inputSchema: { type: "object", properties: {} },
228
+ outputSchema: {
229
+ type: "object",
230
+ properties: {
231
+ totalScans: { type: "number" },
232
+ totalInfectionsCaught: { type: "number" },
233
+ byStrain: { type: "object" },
234
+ },
235
+ },
236
+ examples: [{ userQuery: "How many hallucinations has Mneme caught?" }],
237
+ pitfalls: [],
238
+ composeWith: ["mneme.antivirus.lab.vaccines"],
239
+ handler: async (rt) => {
240
+ const stats = antivirus.readStats(ROOT(rt));
241
+ const m = antivirus.deriveMetrics(stats);
242
+ return {
243
+ data: { ...stats, derived: { ...m, catchRate: Number(m.catchRate.toFixed(3)), avgScanMs: Math.round(m.avgScanMs) } },
244
+ wisdom: `Lifetime: ${stats.totalScans} scans, ${stats.totalInfectionsCaught} infections caught (${(m.catchRate * 100).toFixed(1)}% catch rate). Top strain: ${m.topStrain ?? "none"}.`,
245
+ confidence: { level: "high" },
246
+ };
247
+ },
248
+ };
249
+ export const antivirusCureTool = {
250
+ name: "mneme.antivirus.cure",
251
+ category: "meta",
252
+ description: "Apply suggested cures from a previous scan to produce a cleaned draft. " +
253
+ "Replaces / removes infected substrings according to each assay's cure field.",
254
+ whenToUse: "After mneme.antivirus.scan returned infections; you want a clean version.",
255
+ triggers: ["cure draft", "remove hallucinations", "fix flagged claims"],
256
+ inputSchema: {
257
+ type: "object",
258
+ required: ["draft"],
259
+ properties: {
260
+ draft: { type: "string" },
261
+ strategy: { type: "string", enum: ["redact", "annotate"], description: "redact: remove infected text. annotate: keep + add [SUSPECT] tag." },
262
+ },
263
+ },
264
+ outputSchema: {
265
+ type: "object",
266
+ properties: { cleaned: { type: "string" }, replaced: { type: "number" } },
267
+ },
268
+ examples: [{ userQuery: "Clean my draft of all flagged hallucinations." }],
269
+ pitfalls: ["Cures are heuristic; review the cleaned output before delivery."],
270
+ composeWith: ["mneme.antivirus.scan"],
271
+ handler: async (rt, args) => {
272
+ const draft = String(args["draft"] ?? "");
273
+ const strategy = (args["strategy"] === "annotate" ? "annotate" : "redact");
274
+ const result = await antivirus.scan(ROOT(rt), draft, { recordStats: false });
275
+ let cleaned = draft;
276
+ let replaced = 0;
277
+ // Replace from longest match first to avoid offset shifts.
278
+ const sorted = [...result.infections].sort((a, b) => b.claim.match.length - a.claim.match.length);
279
+ for (const inf of sorted) {
280
+ const replacement = strategy === "annotate"
281
+ ? `[SUSPECT: ${inf.claim.strain}] ${inf.claim.match} [/SUSPECT]`
282
+ : "[redacted]";
283
+ const before = cleaned;
284
+ cleaned = cleaned.split(inf.claim.match).join(replacement);
285
+ if (cleaned !== before)
286
+ replaced++;
287
+ }
288
+ return {
289
+ data: { cleaned, replaced, strategy },
290
+ wisdom: replaced === 0
291
+ ? `No infections to cure (draft already clean).`
292
+ : `Cured ${replaced} infection${replaced === 1 ? "" : "s"} via ${strategy}.`,
293
+ confidence: { level: "medium", notes: "Cures are heuristic; final review by you." },
294
+ };
295
+ },
296
+ };
297
+ export const antivirusTools = [
298
+ antivirusScanTool,
299
+ antivirusImmunizeTool,
300
+ antivirusLabStrainsTool,
301
+ antivirusLabVaccinesTool,
302
+ antivirusCertBenchmarkTool,
303
+ antivirusStatsTool,
304
+ antivirusCureTool,
305
+ ];
306
+ //# sourceMappingURL=_antivirus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_antivirus.js","sourceRoot":"","sources":["../../src/tools/_antivirus.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"_registry.d.ts","sourceRoot":"","sources":["../../src/tools/_registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiC3D;sEACsE;AACtE,wBAAgB,aAAa,IAAI,SAAS,EAAE,CAmC3C;AAED,mDAAmD;AACnD,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CASrD;AAED,uEAAuE;AACvE,wBAAgB,eAAe,IAAI,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAOhE"}
1
+ {"version":3,"file":"_registry.d.ts","sourceRoot":"","sources":["../../src/tools/_registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkC3D;sEACsE;AACtE,wBAAgB,aAAa,IAAI,SAAS,EAAE,CAoC3C;AAED,mDAAmD;AACnD,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CASrD;AAED,uEAAuE;AACvE,wBAAgB,eAAe,IAAI,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAOhE"}
@@ -35,6 +35,7 @@ import { systemUpgradeTool, systemHealthTool } from "./_upgrade.js";
35
35
  import { botSpawnTool } from "./_squadron.js";
36
36
  import { nucleusTools } from "./_nucleus.js";
37
37
  import { inboxTools } from "./_inbox.js";
38
+ import { antivirusTools } from "./_antivirus.js";
38
39
  /** All Mneme tools, in display order. The capabilities syllabus comes first
39
40
  * so AI clients that read tool lists top-down see it immediately. */
40
41
  export function buildAllTools() {
@@ -61,6 +62,7 @@ export function buildAllTools() {
61
62
  botSpawnTool,
62
63
  ...nucleusTools,
63
64
  ...inboxTools,
65
+ ...antivirusTools,
64
66
  smartDoTool,
65
67
  ...memoryTools,
66
68
  ...peopleTools,
@@ -1 +1 @@
1
- {"version":3,"file":"_registry.js","sourceRoot":"","sources":["../../src/tools/_registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_registry.js","sourceRoot":"","sources":["../../src/tools/_registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;sEACsE;AACtE,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,gBAAgB;QAChB,oBAAoB;QACpB,UAAU;QACV,gBAAgB;QAChB,gBAAgB;QAChB,aAAa;QACb,GAAG,WAAW;QACd,GAAG,aAAa;QAChB,aAAa;QACb,WAAW;QACX,GAAG,WAAW;QACd,GAAG,eAAe;QAClB,GAAG,sBAAsB;QACzB,GAAG,aAAa;QAChB,GAAG,aAAa;QAChB,GAAG,SAAS;QACZ,GAAG,YAAY;QACf,iBAAiB;QACjB,gBAAgB;QAChB,YAAY;QACZ,GAAG,YAAY;QACf,GAAG,UAAU;QACb,GAAG,cAAc;QACjB,WAAW;QACX,GAAG,WAAW;QACd,GAAG,WAAW;QACd,GAAG,UAAU;QACb,GAAG,cAAc;QACjB,GAAG,aAAa;QAChB,GAAG,YAAY;QACf,GAAG,UAAU;QACb,GAAG,QAAQ;QACX,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mneme-ai/mcp",
3
- "version": "1.23.5",
3
+ "version": "1.24.0",
4
4
  "description": "MCP server that exposes Mneme to Claude Code, Cursor, Continue, and other AI clients",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -45,8 +45,8 @@
45
45
  "node": ">=22.13.0 <25.0.0"
46
46
  },
47
47
  "dependencies": {
48
- "@mneme-ai/core": "1.23.5",
49
- "@mneme-ai/embeddings": "1.23.5",
48
+ "@mneme-ai/core": "1.24.0",
49
+ "@mneme-ai/embeddings": "1.24.0",
50
50
  "@modelcontextprotocol/sdk": "^1.0.4"
51
51
  }
52
52
  }