Improve memory server schema validation (#2726)

- Add explicit property filtering in saveGraph method
- Add additionalProperties constraints to input schemas
This commit is contained in:
Aonan Guan
2025-09-18 07:11:12 -07:00
committed by GitHub
parent 1bd3734e72
commit 52ab84cd63

View File

@@ -60,8 +60,18 @@ class KnowledgeGraphManager {
private async saveGraph(graph: KnowledgeGraph): Promise<void> {
const lines = [
...graph.entities.map(e => JSON.stringify({ type: "entity", ...e })),
...graph.relations.map(r => JSON.stringify({ type: "relation", ...r })),
...graph.entities.map(e => JSON.stringify({
type: "entity",
name: e.name,
entityType: e.entityType,
observations: e.observations
})),
...graph.relations.map(r => JSON.stringify({
type: "relation",
from: r.from,
to: r.to,
relationType: r.relationType
})),
];
await fs.writeFile(MEMORY_FILE_PATH, lines.join("\n"));
}
@@ -219,10 +229,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
},
},
required: ["name", "entityType", "observations"],
additionalProperties: false,
},
},
},
required: ["entities"],
additionalProperties: false,
},
},
{
@@ -241,10 +253,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
relationType: { type: "string", description: "The type of the relation" },
},
required: ["from", "to", "relationType"],
additionalProperties: false,
},
},
},
required: ["relations"],
additionalProperties: false,
},
},
{
@@ -266,10 +280,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
},
},
required: ["entityName", "contents"],
additionalProperties: false,
},
},
},
required: ["observations"],
additionalProperties: false,
},
},
{
@@ -285,6 +301,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
},
},
required: ["entityNames"],
additionalProperties: false,
},
},
{
@@ -306,10 +323,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
},
},
required: ["entityName", "observations"],
additionalProperties: false,
},
},
},
required: ["deletions"],
additionalProperties: false,
},
},
{
@@ -328,11 +347,13 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
relationType: { type: "string", description: "The type of the relation" },
},
required: ["from", "to", "relationType"],
additionalProperties: false,
},
description: "An array of relations to delete"
},
},
required: ["relations"],
additionalProperties: false,
},
},
{
@@ -341,6 +362,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
inputSchema: {
type: "object",
properties: {},
additionalProperties: false,
},
},
{
@@ -352,6 +374,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
query: { type: "string", description: "The search query to match against entity names, types, and observation content" },
},
required: ["query"],
additionalProperties: false,
},
},
{
@@ -367,6 +390,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
},
},
required: ["names"],
additionalProperties: false,
},
},
],