Skip to content

Commit 52ab84c

Browse files
authored
Improve memory server schema validation (#2726)
- Add explicit property filtering in saveGraph method - Add additionalProperties constraints to input schemas
1 parent 1bd3734 commit 52ab84c

1 file changed

Lines changed: 26 additions & 2 deletions

File tree

src/memory/index.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,18 @@ class KnowledgeGraphManager {
6060

6161
private async saveGraph(graph: KnowledgeGraph): Promise<void> {
6262
const lines = [
63-
...graph.entities.map(e => JSON.stringify({ type: "entity", ...e })),
64-
...graph.relations.map(r => JSON.stringify({ type: "relation", ...r })),
63+
...graph.entities.map(e => JSON.stringify({
64+
type: "entity",
65+
name: e.name,
66+
entityType: e.entityType,
67+
observations: e.observations
68+
})),
69+
...graph.relations.map(r => JSON.stringify({
70+
type: "relation",
71+
from: r.from,
72+
to: r.to,
73+
relationType: r.relationType
74+
})),
6575
];
6676
await fs.writeFile(MEMORY_FILE_PATH, lines.join("\n"));
6777
}
@@ -219,10 +229,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
219229
},
220230
},
221231
required: ["name", "entityType", "observations"],
232+
additionalProperties: false,
222233
},
223234
},
224235
},
225236
required: ["entities"],
237+
additionalProperties: false,
226238
},
227239
},
228240
{
@@ -241,10 +253,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
241253
relationType: { type: "string", description: "The type of the relation" },
242254
},
243255
required: ["from", "to", "relationType"],
256+
additionalProperties: false,
244257
},
245258
},
246259
},
247260
required: ["relations"],
261+
additionalProperties: false,
248262
},
249263
},
250264
{
@@ -266,10 +280,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
266280
},
267281
},
268282
required: ["entityName", "contents"],
283+
additionalProperties: false,
269284
},
270285
},
271286
},
272287
required: ["observations"],
288+
additionalProperties: false,
273289
},
274290
},
275291
{
@@ -285,6 +301,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
285301
},
286302
},
287303
required: ["entityNames"],
304+
additionalProperties: false,
288305
},
289306
},
290307
{
@@ -306,10 +323,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
306323
},
307324
},
308325
required: ["entityName", "observations"],
326+
additionalProperties: false,
309327
},
310328
},
311329
},
312330
required: ["deletions"],
331+
additionalProperties: false,
313332
},
314333
},
315334
{
@@ -328,11 +347,13 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
328347
relationType: { type: "string", description: "The type of the relation" },
329348
},
330349
required: ["from", "to", "relationType"],
350+
additionalProperties: false,
331351
},
332352
description: "An array of relations to delete"
333353
},
334354
},
335355
required: ["relations"],
356+
additionalProperties: false,
336357
},
337358
},
338359
{
@@ -341,6 +362,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
341362
inputSchema: {
342363
type: "object",
343364
properties: {},
365+
additionalProperties: false,
344366
},
345367
},
346368
{
@@ -352,6 +374,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
352374
query: { type: "string", description: "The search query to match against entity names, types, and observation content" },
353375
},
354376
required: ["query"],
377+
additionalProperties: false,
355378
},
356379
},
357380
{
@@ -367,6 +390,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
367390
},
368391
},
369392
required: ["names"],
393+
additionalProperties: false,
370394
},
371395
},
372396
],

0 commit comments

Comments
 (0)