@mneme-ai/mcp 1.9.0 → 1.17.2
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/dynamic-mcp.integration.test.d.ts +15 -0
- package/dist/dynamic-mcp.integration.test.d.ts.map +1 -0
- package/dist/dynamic-mcp.integration.test.js +178 -0
- package/dist/dynamic-mcp.integration.test.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +122 -16
- package/dist/index.js.map +1 -1
- package/dist/tools/_constitution_tool.d.ts +10 -0
- package/dist/tools/_constitution_tool.d.ts.map +1 -0
- package/dist/tools/_constitution_tool.js +49 -0
- package/dist/tools/_constitution_tool.js.map +1 -0
- package/dist/tools/_dna_tool.d.ts +17 -0
- package/dist/tools/_dna_tool.d.ts.map +1 -0
- package/dist/tools/_dna_tool.js +135 -0
- package/dist/tools/_dna_tool.js.map +1 -0
- package/dist/tools/_genome_tools.d.ts +21 -0
- package/dist/tools/_genome_tools.d.ts.map +1 -0
- package/dist/tools/_genome_tools.js +247 -0
- package/dist/tools/_genome_tools.js.map +1 -0
- package/dist/tools/_registry.d.ts.map +1 -1
- package/dist/tools/_registry.js +8 -0
- package/dist/tools/_registry.js.map +1 -1
- package/dist/tools/_runtime.d.ts.map +1 -1
- package/dist/tools/_runtime.js +13 -2
- package/dist/tools/_runtime.js.map +1 -1
- package/dist/tools/_types.d.ts +7 -1
- package/dist/tools/_types.d.ts.map +1 -1
- package/dist/tools/_types.js +28 -2
- package/dist/tools/_types.js.map +1 -1
- package/dist/tools/_verify_claims_tool.d.ts +18 -0
- package/dist/tools/_verify_claims_tool.d.ts.map +1 -0
- package/dist/tools/_verify_claims_tool.js +70 -0
- package/dist/tools/_verify_claims_tool.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mneme.genome.* — MCP tools that expose the Genetic Engineering primitives
|
|
3
|
+
* (G1-G5) so AI agents discover them automatically via `tools/list`.
|
|
4
|
+
*
|
|
5
|
+
* Six tools:
|
|
6
|
+
* • mneme.genome.annotate — tag a tool list with functional domains
|
|
7
|
+
* • mneme.genome.phylogeny — build ancestry tree + cousins/distance queries
|
|
8
|
+
* • mneme.genome.circuit — run a genetic-circuit network (toggle/AND/OR/NOT/oscillator)
|
|
9
|
+
* • mneme.genome.operon_resolve — resolve which operon governs a tool + its current behavior modifier
|
|
10
|
+
* • mneme.genome.crispr_edit — apply a CRISPR edit to a pack (validate-then-commit)
|
|
11
|
+
* • mneme.genome.synthesize — de novo synthesis: recipe → cryptographically-named ToolDefinition
|
|
12
|
+
*/
|
|
13
|
+
import type { MnemeTool } from "./_types.js";
|
|
14
|
+
export declare const genomeAnnotateTool: MnemeTool;
|
|
15
|
+
export declare const genomePhylogenyTool: MnemeTool;
|
|
16
|
+
export declare const genomeCircuitTool: MnemeTool;
|
|
17
|
+
export declare const genomeOperonResolveTool: MnemeTool;
|
|
18
|
+
export declare const genomeCrisprTool: MnemeTool;
|
|
19
|
+
export declare const genomeSynthesizeTool: MnemeTool;
|
|
20
|
+
export declare const genomeTools: MnemeTool[];
|
|
21
|
+
//# sourceMappingURL=_genome_tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_genome_tools.d.ts","sourceRoot":"","sources":["../../src/tools/_genome_tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,eAAO,MAAM,kBAAkB,EAAE,SAuChC,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,SA4DjC,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,SAuC/B,CAAC;AAIF,eAAO,MAAM,uBAAuB,EAAE,SA8BrC,CAAC;AAIF,eAAO,MAAM,gBAAgB,EAAE,SA4B9B,CAAC;AAIF,eAAO,MAAM,oBAAoB,EAAE,SAqClC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAAS,EAOlC,CAAC"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mneme.genome.* — MCP tools that expose the Genetic Engineering primitives
|
|
3
|
+
* (G1-G5) so AI agents discover them automatically via `tools/list`.
|
|
4
|
+
*
|
|
5
|
+
* Six tools:
|
|
6
|
+
* • mneme.genome.annotate — tag a tool list with functional domains
|
|
7
|
+
* • mneme.genome.phylogeny — build ancestry tree + cousins/distance queries
|
|
8
|
+
* • mneme.genome.circuit — run a genetic-circuit network (toggle/AND/OR/NOT/oscillator)
|
|
9
|
+
* • mneme.genome.operon_resolve — resolve which operon governs a tool + its current behavior modifier
|
|
10
|
+
* • mneme.genome.crispr_edit — apply a CRISPR edit to a pack (validate-then-commit)
|
|
11
|
+
* • mneme.genome.synthesize — de novo synthesis: recipe → cryptographically-named ToolDefinition
|
|
12
|
+
*/
|
|
13
|
+
import { genome } from "@mneme-ai/core";
|
|
14
|
+
// ─── 1. annotate ─────────────────────────────────────────────────────
|
|
15
|
+
export const genomeAnnotateTool = {
|
|
16
|
+
name: "mneme.genome.annotate",
|
|
17
|
+
category: "meta",
|
|
18
|
+
description: "Tag a list of MCP tools with their functional domain (search · mutate · verify · compose · regulate · augment · observe · synthesize) + sub-domains + mutability + genus/species. Pure deterministic. Used by the phylogeny tool to build ancestry trees.",
|
|
19
|
+
triggers: ["annotate tools", "classify mcp tools", "what domain is this tool"],
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: "object",
|
|
22
|
+
properties: {
|
|
23
|
+
tools: {
|
|
24
|
+
type: "array",
|
|
25
|
+
items: {
|
|
26
|
+
type: "object",
|
|
27
|
+
properties: {
|
|
28
|
+
name: { type: "string" },
|
|
29
|
+
description: { type: "string" },
|
|
30
|
+
parent: { type: "string" },
|
|
31
|
+
},
|
|
32
|
+
required: ["name"],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
required: ["tools"],
|
|
37
|
+
},
|
|
38
|
+
handler: async (_rt, args) => {
|
|
39
|
+
const tools = args["tools"] ?? [];
|
|
40
|
+
const result = genome.annotateCatalog(tools);
|
|
41
|
+
return {
|
|
42
|
+
data: result,
|
|
43
|
+
wisdom: `Annotated ${result.tools.length} tool(s). Domain breakdown: ${Object.entries(result.domainCounts)
|
|
44
|
+
.map(([d, n]) => `${d}=${n}`)
|
|
45
|
+
.join(", ")}.`,
|
|
46
|
+
followUp: ["mneme.genome.phylogeny"],
|
|
47
|
+
confidence: { level: "high" },
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
// ─── 2. phylogeny ────────────────────────────────────────────────────
|
|
52
|
+
export const genomePhylogenyTool = {
|
|
53
|
+
name: "mneme.genome.phylogeny",
|
|
54
|
+
category: "meta",
|
|
55
|
+
description: "Build the phylogenetic (ancestry) tree of a tool catalog. Supports queries: ancestors of a tool, cousins (siblings within k generations), tree-distance between two tools, closest-relative search across a candidate pool. Use when AI agent needs to reason about WHICH tool to call by relatedness, not just name match.",
|
|
56
|
+
triggers: ["tool ancestors", "find similar tool", "closest relative", "speciation"],
|
|
57
|
+
inputSchema: {
|
|
58
|
+
type: "object",
|
|
59
|
+
properties: {
|
|
60
|
+
tools: { type: "array" },
|
|
61
|
+
query: {
|
|
62
|
+
type: "object",
|
|
63
|
+
properties: {
|
|
64
|
+
kind: { type: "string", enum: ["ancestors", "cousins", "distance", "closest", "speciation", "ascii"] },
|
|
65
|
+
tool: { type: "string" },
|
|
66
|
+
other: { type: "string" },
|
|
67
|
+
k: { type: "number" },
|
|
68
|
+
candidates: { type: "array", items: { type: "string" } },
|
|
69
|
+
},
|
|
70
|
+
required: ["kind"],
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
required: ["tools", "query"],
|
|
74
|
+
},
|
|
75
|
+
handler: async (_rt, args) => {
|
|
76
|
+
const tools = args["tools"] ?? [];
|
|
77
|
+
const annotated = genome.annotateCatalog(tools).tools;
|
|
78
|
+
const tree = genome.buildPhylogeny(annotated);
|
|
79
|
+
const q = args["query"];
|
|
80
|
+
let result;
|
|
81
|
+
switch (q.kind) {
|
|
82
|
+
case "ancestors":
|
|
83
|
+
result = q.tool ? genome.findAncestors(tree, q.tool) : [];
|
|
84
|
+
break;
|
|
85
|
+
case "cousins":
|
|
86
|
+
result = q.tool ? genome.findCousins(tree, q.tool, q.k ?? 1) : [];
|
|
87
|
+
break;
|
|
88
|
+
case "distance":
|
|
89
|
+
result = q.tool && q.other ? genome.treeDistance(tree, q.tool, q.other) : Infinity;
|
|
90
|
+
break;
|
|
91
|
+
case "closest":
|
|
92
|
+
result = q.tool && q.candidates ? genome.findClosestRelative(tree, q.tool, q.candidates) : null;
|
|
93
|
+
break;
|
|
94
|
+
case "speciation":
|
|
95
|
+
result = genome.speciationEvents(tree);
|
|
96
|
+
break;
|
|
97
|
+
case "ascii":
|
|
98
|
+
result = genome.renderAsciiTree(tree);
|
|
99
|
+
break;
|
|
100
|
+
default:
|
|
101
|
+
result = null;
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
data: { query: q, result, totalNodes: tree.byName.size },
|
|
105
|
+
wisdom: `Phylogeny query '${q.kind}' executed across ${tree.byName.size} nodes.`,
|
|
106
|
+
followUp: [],
|
|
107
|
+
confidence: { level: "high" },
|
|
108
|
+
};
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
// ─── 3. circuit ──────────────────────────────────────────────────────
|
|
112
|
+
export const genomeCircuitTool = {
|
|
113
|
+
name: "mneme.genome.circuit",
|
|
114
|
+
category: "meta",
|
|
115
|
+
description: "Execute a genetic-circuit network: toggle / AND / OR / NOT / oscillator gates composed declaratively. Returns whether the circuit fired + reason. Toggle state is caller-managed (pure function).",
|
|
116
|
+
triggers: ["genetic circuit", "logic gate", "toggle", "and gate", "or gate"],
|
|
117
|
+
inputSchema: {
|
|
118
|
+
type: "object",
|
|
119
|
+
properties: {
|
|
120
|
+
network: {
|
|
121
|
+
type: "object",
|
|
122
|
+
properties: { steps: { type: "array" } },
|
|
123
|
+
required: ["steps"],
|
|
124
|
+
},
|
|
125
|
+
input: {
|
|
126
|
+
type: "object",
|
|
127
|
+
properties: {
|
|
128
|
+
signals: { type: "object", additionalProperties: { type: "boolean" } },
|
|
129
|
+
payload: {},
|
|
130
|
+
toggleState: { type: "object", additionalProperties: { type: "boolean" } },
|
|
131
|
+
oscillatorTick: { type: "number" },
|
|
132
|
+
},
|
|
133
|
+
required: ["signals"],
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
required: ["network", "input"],
|
|
137
|
+
},
|
|
138
|
+
handler: async (_rt, args) => {
|
|
139
|
+
const result = genome.runCircuit(args["network"], args["input"]);
|
|
140
|
+
return {
|
|
141
|
+
data: result,
|
|
142
|
+
wisdom: `Circuit ${result.fired ? "fired ✓" : "blocked ✗"} — ${result.reason}`,
|
|
143
|
+
followUp: [],
|
|
144
|
+
confidence: { level: "high" },
|
|
145
|
+
};
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
// ─── 4. operon_resolve ───────────────────────────────────────────────
|
|
149
|
+
export const genomeOperonResolveTool = {
|
|
150
|
+
name: "mneme.genome.operon_resolve",
|
|
151
|
+
category: "meta",
|
|
152
|
+
description: "Resolve which co-regulated operon governs a tool + its current behavior modifier (requireConstitutionGate / requireStrictSniper / minConfidence / maxResults). Use to determine: should this tool's output be gated more strictly given the current PCI / compliance / governance level?",
|
|
153
|
+
triggers: ["operon", "regulator", "governance level"],
|
|
154
|
+
inputSchema: {
|
|
155
|
+
type: "object",
|
|
156
|
+
properties: {
|
|
157
|
+
toolName: { type: "string" },
|
|
158
|
+
registry: { type: "object" },
|
|
159
|
+
regulatorLevels: { type: "object", additionalProperties: { type: "string" } },
|
|
160
|
+
},
|
|
161
|
+
required: ["toolName", "registry", "regulatorLevels"],
|
|
162
|
+
},
|
|
163
|
+
handler: async (_rt, args) => {
|
|
164
|
+
const r = genome.resolveOperonForTool(args["toolName"], args["registry"], args["regulatorLevels"]);
|
|
165
|
+
return {
|
|
166
|
+
data: r,
|
|
167
|
+
wisdom: r.operon
|
|
168
|
+
? `Tool '${args["toolName"]}' governed by operon '${r.operon.id}' at level=${r.level}. Modifier: requireGate=${r.modifier?.requireConstitutionGate}, requireSniper=${r.modifier?.requireStrictSniper}, minConf=${r.modifier?.minConfidence}.`
|
|
169
|
+
: `Tool '${args["toolName"]}' is unregulated.`,
|
|
170
|
+
followUp: [],
|
|
171
|
+
confidence: { level: "high" },
|
|
172
|
+
};
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
// ─── 5. crispr_edit ──────────────────────────────────────────────────
|
|
176
|
+
export const genomeCrisprTool = {
|
|
177
|
+
name: "mneme.genome.crispr_edit",
|
|
178
|
+
category: "meta",
|
|
179
|
+
description: "Apply a CRISPR edit to a pack: delete tool by id/pattern, replace-tool, add-tool, patch-detection. Validates the post-edit pack against the schema; on validation failure, returns ok=false with structured errors and NO change is committed (fail-closed). Returns SHA-256 hashes of pack before + after.",
|
|
180
|
+
triggers: ["edit pack", "patch tool", "crispr", "tool surgery"],
|
|
181
|
+
inputSchema: {
|
|
182
|
+
type: "object",
|
|
183
|
+
properties: {
|
|
184
|
+
pack: { type: "object" },
|
|
185
|
+
edit: { type: "object" },
|
|
186
|
+
},
|
|
187
|
+
required: ["pack", "edit"],
|
|
188
|
+
},
|
|
189
|
+
handler: async (_rt, args) => {
|
|
190
|
+
const r = genome.crisprEdit(args["pack"], args["edit"]);
|
|
191
|
+
return {
|
|
192
|
+
data: r,
|
|
193
|
+
wisdom: r.ok
|
|
194
|
+
? `CRISPR edit applied: ${r.summary}. Hash ${r.beforeHash.slice(0, 8)} → ${r.afterHash?.slice(0, 8)}.`
|
|
195
|
+
: `CRISPR edit refused (fail-closed): ${r.error?.reason}.`,
|
|
196
|
+
followUp: [],
|
|
197
|
+
confidence: { level: "high" },
|
|
198
|
+
};
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
// ─── 6. synthesize ───────────────────────────────────────────────────
|
|
202
|
+
export const genomeSynthesizeTool = {
|
|
203
|
+
name: "mneme.genome.synthesize",
|
|
204
|
+
category: "meta",
|
|
205
|
+
description: "DE NOVO SYNTHESIS — compose a brand new MCP tool at runtime from genetic primitives. Recipe (search patterns + verifiers + augmenters + preconditions + authoredBy) → cryptographically-named ToolDefinition. Identical recipe → identical tool name + DNA hash (deterministic). Validated against pack schema before return. Failure modes are structured.",
|
|
206
|
+
triggers: ["synthesize tool", "create new tool", "de novo", "new gene"],
|
|
207
|
+
inputSchema: {
|
|
208
|
+
type: "object",
|
|
209
|
+
properties: {
|
|
210
|
+
intent: { type: "string", description: "Plain-English description of what the tool should do (≥10 chars)" },
|
|
211
|
+
searchPatterns: { type: "array", items: { type: "string" }, minItems: 1 },
|
|
212
|
+
fileExtensions: { type: "array", items: { type: "string" } },
|
|
213
|
+
verifiers: { type: "array", items: { type: "string", enum: ["ast", "semantic", "confidence"] }, minItems: 1 },
|
|
214
|
+
augmenters: { type: "array", items: { type: "string", enum: ["canonical-paths", "deprecated-paths", "expert-authors", "incidents", "rules"] } },
|
|
215
|
+
authoredBy: { type: "string" },
|
|
216
|
+
},
|
|
217
|
+
required: ["intent", "searchPatterns", "verifiers", "authoredBy"],
|
|
218
|
+
},
|
|
219
|
+
handler: async (_rt, args) => {
|
|
220
|
+
const recipe = {
|
|
221
|
+
intent: String(args["intent"] ?? ""),
|
|
222
|
+
searchPatterns: args["searchPatterns"] ?? [],
|
|
223
|
+
fileExtensions: args["fileExtensions"],
|
|
224
|
+
verifiers: args["verifiers"] ?? [],
|
|
225
|
+
augmenters: args["augmenters"] ?? [],
|
|
226
|
+
authoredBy: String(args["authoredBy"] ?? ""),
|
|
227
|
+
};
|
|
228
|
+
const r = genome.synthesize(recipe);
|
|
229
|
+
return {
|
|
230
|
+
data: r,
|
|
231
|
+
wisdom: r.ok
|
|
232
|
+
? `Synthesized new tool '${r.tool.name}' (DNA hash ${r.tool.dnaHash.slice(0, 12)}…). Tool is verified against pack schema and ready to register.`
|
|
233
|
+
: `Synthesis refused: ${r.error?.reason}.`,
|
|
234
|
+
followUp: r.ok ? ["mneme.dna.search"] : [],
|
|
235
|
+
confidence: { level: "high" },
|
|
236
|
+
};
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
export const genomeTools = [
|
|
240
|
+
genomeAnnotateTool,
|
|
241
|
+
genomePhylogenyTool,
|
|
242
|
+
genomeCircuitTool,
|
|
243
|
+
genomeOperonResolveTool,
|
|
244
|
+
genomeCrisprTool,
|
|
245
|
+
genomeSynthesizeTool,
|
|
246
|
+
];
|
|
247
|
+
//# sourceMappingURL=_genome_tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_genome_tools.js","sourceRoot":"","sources":["../../src/tools/_genome_tools.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;
|
|
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;AAoB3D;sEACsE;AACtE,wBAAgB,aAAa,IAAI,SAAS,EAAE,CAoB3C;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"}
|
package/dist/tools/_registry.js
CHANGED
|
@@ -18,6 +18,10 @@ import { capabilitiesTool } from "./_capabilities.js";
|
|
|
18
18
|
import { smartDoTool } from "./_smart_do.js";
|
|
19
19
|
import { graderTool } from "./_grader_tool.js";
|
|
20
20
|
import { understandIntentTool } from "./_intent_tool.js";
|
|
21
|
+
import { constitutionTool } from "./_constitution_tool.js";
|
|
22
|
+
import { verifyClaimsTool } from "./_verify_claims_tool.js";
|
|
23
|
+
import { dnaSearchTool } from "./_dna_tool.js";
|
|
24
|
+
import { genomeTools } from "./_genome_tools.js";
|
|
21
25
|
/** All Mneme tools, in display order. The capabilities syllabus comes first
|
|
22
26
|
* so AI clients that read tool lists top-down see it immediately. */
|
|
23
27
|
export function buildAllTools() {
|
|
@@ -25,6 +29,10 @@ export function buildAllTools() {
|
|
|
25
29
|
capabilitiesTool,
|
|
26
30
|
understandIntentTool,
|
|
27
31
|
graderTool,
|
|
32
|
+
verifyClaimsTool,
|
|
33
|
+
constitutionTool,
|
|
34
|
+
dnaSearchTool,
|
|
35
|
+
...genomeTools,
|
|
28
36
|
smartDoTool,
|
|
29
37
|
...memoryTools,
|
|
30
38
|
...peopleTools,
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAEjD;sEACsE;AACtE,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,gBAAgB;QAChB,oBAAoB;QACpB,UAAU;QACV,gBAAgB;QAChB,gBAAgB;QAChB,aAAa;QACb,GAAG,WAAW;QACd,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_runtime.d.ts","sourceRoot":"","sources":["../../src/tools/_runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAapE;AAED;;iFAEiF;AACjF,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,EAAE,EACnD,OAAO,GAAE;IAAE,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CAExG,IAEa,IAAI,WAAW,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;GAS7D;AAED;;;qCAGqC;AACrC,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAM,EAAO,EACtB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"_runtime.d.ts","sourceRoot":"","sources":["../../src/tools/_runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAapE;AAED;;iFAEiF;AACjF,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,EAAE,EACnD,OAAO,GAAE;IAAE,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CAExG,IAEa,IAAI,WAAW,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;GAS7D;AAED;;;qCAGqC;AACrC,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAM,EAAO,EACtB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,OAAO,CAAC,CA0ClB"}
|
package/dist/tools/_runtime.js
CHANGED
|
@@ -44,10 +44,21 @@ export function passthroughHandler(cliCommand, argMap, options = {
|
|
|
44
44
|
* non-zero exit / parse failure. */
|
|
45
45
|
export async function runCliJson(cwd, command, cliArgs = [], opts = {}) {
|
|
46
46
|
const { spawn } = await import("node:child_process");
|
|
47
|
+
// Security hardening (v1.11.0): refuse any cliArg or command that looks
|
|
48
|
+
// like shell-metacharacter injection. MCP args come from AI clients —
|
|
49
|
+
// we treat them as untrusted input.
|
|
50
|
+
const SHELL_META = /[;&|`$<>()\\\n\r"']/;
|
|
51
|
+
for (const a of [command, ...cliArgs]) {
|
|
52
|
+
if (typeof a !== "string" || SHELL_META.test(a)) {
|
|
53
|
+
throw new Error(`Refusing to spawn: argument contains shell metacharacters or is non-string: ${JSON.stringify(a).slice(0, 80)}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Windows: resolve to .cmd explicitly so we don't need shell:true
|
|
57
|
+
const exe = process.platform === "win32" ? "mneme.cmd" : "mneme";
|
|
47
58
|
return await new Promise((resolve, reject) => {
|
|
48
|
-
const child = spawn(
|
|
59
|
+
const child = spawn(exe, [command, ...cliArgs, "--json"], {
|
|
49
60
|
cwd,
|
|
50
|
-
shell:
|
|
61
|
+
shell: false,
|
|
51
62
|
});
|
|
52
63
|
let stdout = "";
|
|
53
64
|
let stderr = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_runtime.js","sourceRoot":"","sources":["../../src/tools/_runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAEvC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAE7D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED;;iFAEiF;AACjF,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,MAAmD,EACnD,UAA8G;IAC5G,MAAM,EAAE,GAAG,EAAE,CAAC,+DAA+D;CAC9E;IAED,OAAO,KAAK,EAAE,EAAe,EAAE,IAA6B,EAAE,EAAE;QAC9D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAChC,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,IAAI,QAAiB,EAAE;SAC/D,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;qCAGqC;AACrC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,OAAe,EACf,UAAoB,EAAE,EACtB,OAA+B,EAAE;IAEjC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACrD,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"_runtime.js","sourceRoot":"","sources":["../../src/tools/_runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/_types.d.ts
CHANGED
|
@@ -194,7 +194,13 @@ export interface MnemeTool<TArgs = Record<string, unknown>, TData = unknown> {
|
|
|
194
194
|
}
|
|
195
195
|
/** Convert a wrapped tool response into MCP's expected CallToolResult.
|
|
196
196
|
* We serialise the entire envelope (data + wisdom + followUp + confidence)
|
|
197
|
-
* so the AI sees the full picture in one shot.
|
|
197
|
+
* so the AI sees the full picture in one shot.
|
|
198
|
+
*
|
|
199
|
+
* v1.11.1 — by default, every wisdom + secondBrain.presentation field
|
|
200
|
+
* is run through the prompt-injection scrubber. Untrusted content
|
|
201
|
+
* (commit messages, PR text, issue text from federation) cannot smuggle
|
|
202
|
+
* control tokens like `<system>`, `[INST]`, or "ignore prior instructions"
|
|
203
|
+
* into the AI's context. Set MNEME_NO_AUTO_SECURITY=1 to disable. */
|
|
198
204
|
export declare function toCallResult(r: ToolResponse): CallToolResult;
|
|
199
205
|
/** Convert a thrown error into MCP's expected error result */
|
|
200
206
|
export declare function toErrorResult(message: string): CallToolResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../src/tools/_types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../src/tools/_types.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/_types.js
CHANGED
|
@@ -6,19 +6,45 @@
|
|
|
6
6
|
* a 1-3 sentence narrative the AI can quote (or paraphrase) directly to the
|
|
7
7
|
* user. Citations live in `data`, the human meaning lives in `wisdom`.
|
|
8
8
|
*/
|
|
9
|
+
import { security } from "@mneme-ai/core";
|
|
9
10
|
/** Convert a wrapped tool response into MCP's expected CallToolResult.
|
|
10
11
|
* We serialise the entire envelope (data + wisdom + followUp + confidence)
|
|
11
|
-
* so the AI sees the full picture in one shot.
|
|
12
|
+
* so the AI sees the full picture in one shot.
|
|
13
|
+
*
|
|
14
|
+
* v1.11.1 — by default, every wisdom + secondBrain.presentation field
|
|
15
|
+
* is run through the prompt-injection scrubber. Untrusted content
|
|
16
|
+
* (commit messages, PR text, issue text from federation) cannot smuggle
|
|
17
|
+
* control tokens like `<system>`, `[INST]`, or "ignore prior instructions"
|
|
18
|
+
* into the AI's context. Set MNEME_NO_AUTO_SECURITY=1 to disable. */
|
|
12
19
|
export function toCallResult(r) {
|
|
20
|
+
// v1.11.1 — auto-scrub the human-language fields. We intentionally do
|
|
21
|
+
// NOT scrub `data` (which is structured JSON the AI client should treat
|
|
22
|
+
// as data, not as instruction).
|
|
23
|
+
const skipScrub = process.env["MNEME_NO_AUTO_SECURITY"] === "1";
|
|
24
|
+
let wisdom = r.wisdom;
|
|
25
|
+
let secondBrain = r.secondBrain;
|
|
26
|
+
if (!skipScrub) {
|
|
27
|
+
try {
|
|
28
|
+
if (typeof wisdom === "string")
|
|
29
|
+
wisdom = security.scrubber.scrubForPrompt(wisdom).scrubbed;
|
|
30
|
+
if (secondBrain && typeof secondBrain.presentation === "string") {
|
|
31
|
+
secondBrain = { ...secondBrain, presentation: security.scrubber.scrubForPrompt(secondBrain.presentation).scrubbed };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// best-effort — never block a tool result on scrubber failure
|
|
36
|
+
}
|
|
37
|
+
}
|
|
13
38
|
return {
|
|
14
39
|
content: [
|
|
15
40
|
{
|
|
16
41
|
type: "text",
|
|
17
42
|
text: JSON.stringify({
|
|
18
43
|
data: r.data,
|
|
19
|
-
wisdom
|
|
44
|
+
wisdom,
|
|
20
45
|
followUp: r.followUp ?? [],
|
|
21
46
|
confidence: r.confidence ?? { level: "medium" },
|
|
47
|
+
...(secondBrain ? { secondBrain } : {}),
|
|
22
48
|
}, null, 2),
|
|
23
49
|
},
|
|
24
50
|
],
|
package/dist/tools/_types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_types.js","sourceRoot":"","sources":["../../src/tools/_types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"_types.js","sourceRoot":"","sources":["../../src/tools/_types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAuM1C;;;;;;;;sEAQsE;AACtE,MAAM,UAAU,YAAY,CAAC,CAAe;IAC1C,sEAAsE;IACtE,wEAAwE;IACxE,gCAAgC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,GAAG,CAAC;IAChE,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,IAAI,WAAW,GAAI,CAA4D,CAAC,WAAW,CAAC;IAC5F,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,CAAC;YACH,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;YAC3F,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAChE,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;IACH,CAAC;IACD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;oBACE,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,MAAM;oBACN,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;oBAC1B,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAC/C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxC,EACD,IAAI,EACJ,CAAC,CACF;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mneme.verify_claims — Hallucination Auto-Block (MVP).
|
|
3
|
+
*
|
|
4
|
+
* The post-draft verifier. AI client passes a draft answer string and
|
|
5
|
+
* Mneme runs every commit-hash claim through `git rev-parse` to detect
|
|
6
|
+
* hallucinated hashes. Returns the list of fake refs + a recommendation
|
|
7
|
+
* to rewrite.
|
|
8
|
+
*
|
|
9
|
+
* Future v1.11.0+: when MCP spec supports token-stream interception,
|
|
10
|
+
* this will run pre-delivery (catch lies BEFORE user sees them).
|
|
11
|
+
*
|
|
12
|
+
* For v1.10.0 the AI is expected to call this between drafting and
|
|
13
|
+
* delivering — same loop as mneme.grade.answer, but specifically for
|
|
14
|
+
* citation correctness.
|
|
15
|
+
*/
|
|
16
|
+
import type { MnemeTool } from "./_types.js";
|
|
17
|
+
export declare const verifyClaimsTool: MnemeTool;
|
|
18
|
+
//# sourceMappingURL=_verify_claims_tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_verify_claims_tool.d.ts","sourceRoot":"","sources":["../../src/tools/_verify_claims_tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAS7C,eAAO,MAAM,gBAAgB,EAAE,SAqD9B,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mneme.verify_claims — Hallucination Auto-Block (MVP).
|
|
3
|
+
*
|
|
4
|
+
* The post-draft verifier. AI client passes a draft answer string and
|
|
5
|
+
* Mneme runs every commit-hash claim through `git rev-parse` to detect
|
|
6
|
+
* hallucinated hashes. Returns the list of fake refs + a recommendation
|
|
7
|
+
* to rewrite.
|
|
8
|
+
*
|
|
9
|
+
* Future v1.11.0+: when MCP spec supports token-stream interception,
|
|
10
|
+
* this will run pre-delivery (catch lies BEFORE user sees them).
|
|
11
|
+
*
|
|
12
|
+
* For v1.10.0 the AI is expected to call this between drafting and
|
|
13
|
+
* delivering — same loop as mneme.grade.answer, but specifically for
|
|
14
|
+
* citation correctness.
|
|
15
|
+
*/
|
|
16
|
+
import { spawnSync } from "node:child_process";
|
|
17
|
+
export const verifyClaimsTool = {
|
|
18
|
+
name: "mneme.verify_claims",
|
|
19
|
+
category: "meta",
|
|
20
|
+
description: "Hallucination Auto-Block. Pass an AI draft answer; Mneme extracts every commit-hash-looking string " +
|
|
21
|
+
"and verifies each via `git rev-parse`. Returns the list of HALLUCINATED hashes (not present in this repo). " +
|
|
22
|
+
"AI client MUST call this AFTER drafting and BEFORE delivering ANY answer that includes commit hashes — " +
|
|
23
|
+
"if hallucinated hashes are found, rewrite the answer using only the ones in `resolved` (or remove the " +
|
|
24
|
+
"claim entirely). This is the post-draft pre-delivery citation gate.",
|
|
25
|
+
triggers: [
|
|
26
|
+
"verify the commit hashes in this draft",
|
|
27
|
+
"check for hallucinated citations",
|
|
28
|
+
"are these hashes real",
|
|
29
|
+
],
|
|
30
|
+
inputSchema: {
|
|
31
|
+
type: "object",
|
|
32
|
+
properties: {
|
|
33
|
+
draft: { type: "string", description: "The draft answer text to verify" },
|
|
34
|
+
},
|
|
35
|
+
required: ["draft"],
|
|
36
|
+
},
|
|
37
|
+
handler: async (rt, args) => {
|
|
38
|
+
const draft = String(args["draft"] ?? "");
|
|
39
|
+
const hashes = Array.from(new Set(draft.match(/\b[a-f0-9]{7,40}\b/gi) ?? []));
|
|
40
|
+
const resolved = [];
|
|
41
|
+
const hallucinated = [];
|
|
42
|
+
for (const h of hashes) {
|
|
43
|
+
const r = spawnSync("git", ["rev-parse", "--verify", h], { cwd: rt.meta.rootPath, stdio: "pipe" });
|
|
44
|
+
if (r.status === 0)
|
|
45
|
+
resolved.push(h);
|
|
46
|
+
else
|
|
47
|
+
hallucinated.push(h);
|
|
48
|
+
}
|
|
49
|
+
const result = {
|
|
50
|
+
total: hashes.length,
|
|
51
|
+
resolved,
|
|
52
|
+
hallucinated,
|
|
53
|
+
recommendedRewrite: hallucinated.length > 0,
|
|
54
|
+
};
|
|
55
|
+
return {
|
|
56
|
+
data: result,
|
|
57
|
+
wisdom: hallucinated.length === 0
|
|
58
|
+
? `All ${resolved.length} cited hash${resolved.length === 1 ? "" : "es"} resolve to real commits. Safe to deliver.`
|
|
59
|
+
: `STOP — ${hallucinated.length} hallucinated hash${hallucinated.length === 1 ? "" : "es"} detected: ${hallucinated.slice(0, 3).join(", ")}${hallucinated.length > 3 ? ", ..." : ""}. Rewrite the draft using only the hashes in data.resolved (${resolved.length} real ones), OR remove the unbacked claim entirely.`,
|
|
60
|
+
followUp: hallucinated.length > 0 ? ["mneme.memory.search_commits"] : [],
|
|
61
|
+
confidence: { level: "high" },
|
|
62
|
+
secondBrain: {
|
|
63
|
+
presentation: hallucinated.length === 0
|
|
64
|
+
? "Deliver the draft to the user."
|
|
65
|
+
: "DO NOT deliver this draft. Either rewrite using data.resolved hashes only, or call mneme.memory.search_commits to find real related commits, then rewrite. Re-call mneme.verify_claims with the new draft. Loop until hallucinated.length === 0.",
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=_verify_claims_tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_verify_claims_tool.js","sourceRoot":"","sources":["../../src/tools/_verify_claims_tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,qGAAqG;QACrG,6GAA6G;QAC7G,yGAAyG;QACzG,wGAAwG;QACxG,qEAAqE;IACvE,QAAQ,EAAE;QACR,wCAAwC;QACxC,kCAAkC;QAClC,uBAAuB;KACxB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;SAC1E;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACnG,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;gBAChC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,MAAM,GAAiB;YAC3B,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,QAAQ;YACR,YAAY;YACZ,kBAAkB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;SAC5C,CAAC;QACF,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,MAAM,EACJ,YAAY,CAAC,MAAM,KAAK,CAAC;gBACvB,CAAC,CAAC,OAAO,QAAQ,CAAC,MAAM,cAAc,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,4CAA4C;gBACnH,CAAC,CAAC,UAAU,YAAY,CAAC,MAAM,qBAAqB,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,cAAc,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,+DAA+D,QAAQ,CAAC,MAAM,qDAAqD;YAC1T,QAAQ,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,EAAE;YACxE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YAC7B,WAAW,EAAE;gBACX,YAAY,EACV,YAAY,CAAC,MAAM,KAAK,CAAC;oBACvB,CAAC,CAAC,gCAAgC;oBAClC,CAAC,CAAC,kPAAkP;aACzP;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mneme-ai/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.2",
|
|
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",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"node": ">=22.13.0 <25.0.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@mneme-ai/core": "1.
|
|
41
|
-
"@mneme-ai/embeddings": "1.
|
|
40
|
+
"@mneme-ai/core": "1.17.2",
|
|
41
|
+
"@mneme-ai/embeddings": "1.17.2",
|
|
42
42
|
"@modelcontextprotocol/sdk": "^1.0.4"
|
|
43
43
|
}
|
|
44
44
|
}
|