Improve memory server schema validation (#2726)
- Add explicit property filtering in saveGraph method - Add additionalProperties constraints to input schemas
This commit is contained in:
parent
1bd3734e72
commit
52ab84cd63
1 changed files with 26 additions and 2 deletions
|
|
@ -60,8 +60,18 @@ class KnowledgeGraphManager {
|
||||||
|
|
||||||
private async saveGraph(graph: KnowledgeGraph): Promise<void> {
|
private async saveGraph(graph: KnowledgeGraph): Promise<void> {
|
||||||
const lines = [
|
const lines = [
|
||||||
...graph.entities.map(e => JSON.stringify({ type: "entity", ...e })),
|
...graph.entities.map(e => JSON.stringify({
|
||||||
...graph.relations.map(r => JSON.stringify({ type: "relation", ...r })),
|
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"));
|
await fs.writeFile(MEMORY_FILE_PATH, lines.join("\n"));
|
||||||
}
|
}
|
||||||
|
|
@ -219,10 +229,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
required: ["name", "entityType", "observations"],
|
required: ["name", "entityType", "observations"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
required: ["entities"],
|
required: ["entities"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -241,10 +253,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||||
relationType: { type: "string", description: "The type of the relation" },
|
relationType: { type: "string", description: "The type of the relation" },
|
||||||
},
|
},
|
||||||
required: ["from", "to", "relationType"],
|
required: ["from", "to", "relationType"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
required: ["relations"],
|
required: ["relations"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -266,10 +280,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
required: ["entityName", "contents"],
|
required: ["entityName", "contents"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
required: ["observations"],
|
required: ["observations"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -285,6 +301,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
required: ["entityNames"],
|
required: ["entityNames"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -306,10 +323,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
required: ["entityName", "observations"],
|
required: ["entityName", "observations"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
required: ["deletions"],
|
required: ["deletions"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -328,11 +347,13 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||||
relationType: { type: "string", description: "The type of the relation" },
|
relationType: { type: "string", description: "The type of the relation" },
|
||||||
},
|
},
|
||||||
required: ["from", "to", "relationType"],
|
required: ["from", "to", "relationType"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
description: "An array of relations to delete"
|
description: "An array of relations to delete"
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
required: ["relations"],
|
required: ["relations"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -341,6 +362,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||||
inputSchema: {
|
inputSchema: {
|
||||||
type: "object",
|
type: "object",
|
||||||
properties: {},
|
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" },
|
query: { type: "string", description: "The search query to match against entity names, types, and observation content" },
|
||||||
},
|
},
|
||||||
required: ["query"],
|
required: ["query"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -367,6 +390,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
required: ["names"],
|
required: ["names"],
|
||||||
|
additionalProperties: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue