@naumu/mcp 0.6.0 → 0.6.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/index.js +2314 -49
- package/package.json +6 -4
- package/dist/client.d.ts +0 -15
- package/dist/client.js +0 -82
- package/dist/client.js.map +0 -1
- package/dist/errors.d.ts +0 -35
- package/dist/errors.js +0 -52
- package/dist/errors.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/tools/add-attribute.d.ts +0 -3
- package/dist/tools/add-attribute.js +0 -58
- package/dist/tools/add-attribute.js.map +0 -1
- package/dist/tools/add-connection.d.ts +0 -3
- package/dist/tools/add-connection.js +0 -46
- package/dist/tools/add-connection.js.map +0 -1
- package/dist/tools/add-edge.d.ts +0 -3
- package/dist/tools/add-edge.js +0 -33
- package/dist/tools/add-edge.js.map +0 -1
- package/dist/tools/add-node-type.d.ts +0 -3
- package/dist/tools/add-node-type.js +0 -67
- package/dist/tools/add-node-type.js.map +0 -1
- package/dist/tools/add-node.d.ts +0 -3
- package/dist/tools/add-node.js +0 -36
- package/dist/tools/add-node.js.map +0 -1
- package/dist/tools/add-reaction.d.ts +0 -3
- package/dist/tools/add-reaction.js +0 -34
- package/dist/tools/add-reaction.js.map +0 -1
- package/dist/tools/ask-naumu.d.ts +0 -3
- package/dist/tools/ask-naumu.js +0 -44
- package/dist/tools/ask-naumu.js.map +0 -1
- package/dist/tools/ask.d.ts +0 -3
- package/dist/tools/ask.js +0 -37
- package/dist/tools/ask.js.map +0 -1
- package/dist/tools/batch-reparent.d.ts +0 -3
- package/dist/tools/batch-reparent.js +0 -31
- package/dist/tools/batch-reparent.js.map +0 -1
- package/dist/tools/canvas-add-element.d.ts +0 -3
- package/dist/tools/canvas-add-element.js +0 -46
- package/dist/tools/canvas-add-element.js.map +0 -1
- package/dist/tools/canvas-remove-element.d.ts +0 -3
- package/dist/tools/canvas-remove-element.js +0 -17
- package/dist/tools/canvas-remove-element.js.map +0 -1
- package/dist/tools/canvas-update-element.d.ts +0 -3
- package/dist/tools/canvas-update-element.js +0 -20
- package/dist/tools/canvas-update-element.js.map +0 -1
- package/dist/tools/create-canvas.d.ts +0 -3
- package/dist/tools/create-canvas.js +0 -17
- package/dist/tools/create-canvas.js.map +0 -1
- package/dist/tools/create-graph.d.ts +0 -3
- package/dist/tools/create-graph.js +0 -19
- package/dist/tools/create-graph.js.map +0 -1
- package/dist/tools/create-note.d.ts +0 -3
- package/dist/tools/create-note.js +0 -17
- package/dist/tools/create-note.js.map +0 -1
- package/dist/tools/create-thread.d.ts +0 -3
- package/dist/tools/create-thread.js +0 -63
- package/dist/tools/create-thread.js.map +0 -1
- package/dist/tools/filter.d.ts +0 -3
- package/dist/tools/filter.js +0 -54
- package/dist/tools/filter.js.map +0 -1
- package/dist/tools/get-ai-thread.d.ts +0 -3
- package/dist/tools/get-ai-thread.js +0 -18
- package/dist/tools/get-ai-thread.js.map +0 -1
- package/dist/tools/get-canvas-elements.d.ts +0 -3
- package/dist/tools/get-canvas-elements.js +0 -16
- package/dist/tools/get-canvas-elements.js.map +0 -1
- package/dist/tools/get-canvas-image.d.ts +0 -3
- package/dist/tools/get-canvas-image.js +0 -77
- package/dist/tools/get-canvas-image.js.map +0 -1
- package/dist/tools/get-node.d.ts +0 -3
- package/dist/tools/get-node.js +0 -17
- package/dist/tools/get-node.js.map +0 -1
- package/dist/tools/get-schema.d.ts +0 -3
- package/dist/tools/get-schema.js +0 -55
- package/dist/tools/get-schema.js.map +0 -1
- package/dist/tools/get-thread.d.ts +0 -3
- package/dist/tools/get-thread.js +0 -25
- package/dist/tools/get-thread.js.map +0 -1
- package/dist/tools/get-view.d.ts +0 -3
- package/dist/tools/get-view.js +0 -17
- package/dist/tools/get-view.js.map +0 -1
- package/dist/tools/index.d.ts +0 -13
- package/dist/tools/index.js +0 -147
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/list-canvases.d.ts +0 -3
- package/dist/tools/list-canvases.js +0 -16
- package/dist/tools/list-canvases.js.map +0 -1
- package/dist/tools/list-dense-nodes.d.ts +0 -3
- package/dist/tools/list-dense-nodes.js +0 -29
- package/dist/tools/list-dense-nodes.js.map +0 -1
- package/dist/tools/list-graphs.d.ts +0 -3
- package/dist/tools/list-graphs.js +0 -14
- package/dist/tools/list-graphs.js.map +0 -1
- package/dist/tools/list-node-connections.d.ts +0 -3
- package/dist/tools/list-node-connections.js +0 -32
- package/dist/tools/list-node-connections.js.map +0 -1
- package/dist/tools/list-schema-violations.d.ts +0 -3
- package/dist/tools/list-schema-violations.js +0 -16
- package/dist/tools/list-schema-violations.js.map +0 -1
- package/dist/tools/list-threads.d.ts +0 -3
- package/dist/tools/list-threads.js +0 -43
- package/dist/tools/list-threads.js.map +0 -1
- package/dist/tools/list-view-nodes.d.ts +0 -3
- package/dist/tools/list-view-nodes.js +0 -29
- package/dist/tools/list-view-nodes.js.map +0 -1
- package/dist/tools/naumu-typing.d.ts +0 -3
- package/dist/tools/naumu-typing.js +0 -30
- package/dist/tools/naumu-typing.js.map +0 -1
- package/dist/tools/note-append.d.ts +0 -3
- package/dist/tools/note-append.js +0 -17
- package/dist/tools/note-append.js.map +0 -1
- package/dist/tools/note-delete-section.d.ts +0 -3
- package/dist/tools/note-delete-section.js +0 -22
- package/dist/tools/note-delete-section.js.map +0 -1
- package/dist/tools/note-find-replace.d.ts +0 -3
- package/dist/tools/note-find-replace.js +0 -26
- package/dist/tools/note-find-replace.js.map +0 -1
- package/dist/tools/note-insert.d.ts +0 -3
- package/dist/tools/note-insert.js +0 -24
- package/dist/tools/note-insert.js.map +0 -1
- package/dist/tools/note-read.d.ts +0 -3
- package/dist/tools/note-read.js +0 -16
- package/dist/tools/note-read.js.map +0 -1
- package/dist/tools/note-replace-section.d.ts +0 -3
- package/dist/tools/note-replace-section.js +0 -26
- package/dist/tools/note-replace-section.js.map +0 -1
- package/dist/tools/note-replace.d.ts +0 -3
- package/dist/tools/note-replace.js +0 -17
- package/dist/tools/note-replace.js.map +0 -1
- package/dist/tools/post-message.d.ts +0 -3
- package/dist/tools/post-message.js +0 -45
- package/dist/tools/post-message.js.map +0 -1
- package/dist/tools/react-to-message.d.ts +0 -3
- package/dist/tools/react-to-message.js +0 -34
- package/dist/tools/react-to-message.js.map +0 -1
- package/dist/tools/read-thread.d.ts +0 -3
- package/dist/tools/read-thread.js +0 -43
- package/dist/tools/read-thread.js.map +0 -1
- package/dist/tools/remove-edge.d.ts +0 -3
- package/dist/tools/remove-edge.js +0 -25
- package/dist/tools/remove-edge.js.map +0 -1
- package/dist/tools/remove-edges-bulk.d.ts +0 -3
- package/dist/tools/remove-edges-bulk.js +0 -26
- package/dist/tools/remove-edges-bulk.js.map +0 -1
- package/dist/tools/remove-node.d.ts +0 -3
- package/dist/tools/remove-node.js +0 -17
- package/dist/tools/remove-node.js.map +0 -1
- package/dist/tools/remove-reaction.d.ts +0 -3
- package/dist/tools/remove-reaction.js +0 -34
- package/dist/tools/remove-reaction.js.map +0 -1
- package/dist/tools/reparent.d.ts +0 -3
- package/dist/tools/reparent.js +0 -21
- package/dist/tools/reparent.js.map +0 -1
- package/dist/tools/request-attachment-upload.d.ts +0 -3
- package/dist/tools/request-attachment-upload.js +0 -59
- package/dist/tools/request-attachment-upload.js.map +0 -1
- package/dist/tools/search.d.ts +0 -3
- package/dist/tools/search.js +0 -34
- package/dist/tools/search.js.map +0 -1
- package/dist/tools/semantic-search.d.ts +0 -3
- package/dist/tools/semantic-search.js +0 -34
- package/dist/tools/semantic-search.js.map +0 -1
- package/dist/tools/text-search.d.ts +0 -3
- package/dist/tools/text-search.js +0 -18
- package/dist/tools/text-search.js.map +0 -1
- package/dist/tools/traverse.d.ts +0 -3
- package/dist/tools/traverse.js +0 -19
- package/dist/tools/traverse.js.map +0 -1
- package/dist/tools/update-node.d.ts +0 -30
- package/dist/tools/update-node.js +0 -152
- package/dist/tools/update-node.js.map +0 -1
- package/dist/tools/update-schema.d.ts +0 -3
- package/dist/tools/update-schema.js +0 -60
- package/dist/tools/update-schema.js.map +0 -1
- package/dist/tools/whoami.d.ts +0 -3
- package/dist/tools/whoami.js +0 -23
- package/dist/tools/whoami.js.map +0 -1
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
const MAX_INLINE_BYTES = 4 * 1024 * 1024;
|
|
3
|
-
export function registerGetCanvasImage(server, client) {
|
|
4
|
-
server.registerTool('naumu_get_canvas_image', {
|
|
5
|
-
title: 'Get Canvas Image',
|
|
6
|
-
description: 'Render a canvas to a PNG image so you can visually inspect what was drawn — freehand strokes, spatial layout, sketches. Returns the image inline by default so any MCP host can see it directly. Use `mode: "url"` if you specifically need a signed URL (e.g. very large canvases, or to share the link).',
|
|
7
|
-
inputSchema: z.object({
|
|
8
|
-
canvasId: z.string().describe('The canvas ID'),
|
|
9
|
-
scale: z
|
|
10
|
-
.union([z.literal(1), z.literal(2)])
|
|
11
|
-
.default(2)
|
|
12
|
-
.describe('Pixel density (1 or 2). Default is 2 for retina-quality output.'),
|
|
13
|
-
theme: z
|
|
14
|
-
.enum(['light', 'dark'])
|
|
15
|
-
.default('light')
|
|
16
|
-
.describe('Background theme to render with.'),
|
|
17
|
-
mode: z
|
|
18
|
-
.enum(['inline', 'url'])
|
|
19
|
-
.default('inline')
|
|
20
|
-
.describe('`inline` (default) embeds the PNG directly so vision-capable hosts see it. `url` returns a signed S3 URL that expires in 1 hour — useful for large canvases or sharing.'),
|
|
21
|
-
}),
|
|
22
|
-
}, async ({ canvasId, scale, theme, mode }) => {
|
|
23
|
-
if (mode === 'url') {
|
|
24
|
-
return await fetchAsUrl(client, canvasId, scale, theme);
|
|
25
|
-
}
|
|
26
|
-
const params = new URLSearchParams({
|
|
27
|
-
scale: String(scale),
|
|
28
|
-
theme,
|
|
29
|
-
});
|
|
30
|
-
const { buffer, contentType } = await client.getBinary(`/api/canvases/${encodeURIComponent(canvasId)}/image?${params.toString()}`);
|
|
31
|
-
if (buffer.byteLength > MAX_INLINE_BYTES) {
|
|
32
|
-
// Too big for inline base64 — fall back to URL automatically.
|
|
33
|
-
return await fetchAsUrl(client, canvasId, scale, theme, {
|
|
34
|
-
reason: `Canvas PNG is ${formatBytes(buffer.byteLength)}, exceeds inline limit ${formatBytes(MAX_INLINE_BYTES)} — returning signed URL instead.`,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
const base64 = bufferToBase64(buffer);
|
|
38
|
-
return {
|
|
39
|
-
content: [
|
|
40
|
-
{
|
|
41
|
-
type: 'image',
|
|
42
|
-
data: base64,
|
|
43
|
-
mimeType: contentType.startsWith('image/') ? contentType : 'image/png',
|
|
44
|
-
},
|
|
45
|
-
],
|
|
46
|
-
};
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
async function fetchAsUrl(client, canvasId, scale, theme, extra) {
|
|
50
|
-
const params = new URLSearchParams({
|
|
51
|
-
as: 'url',
|
|
52
|
-
scale: String(scale),
|
|
53
|
-
theme,
|
|
54
|
-
});
|
|
55
|
-
const data = await client.get(`/api/canvases/${encodeURIComponent(canvasId)}/image?${params.toString()}`);
|
|
56
|
-
const payload = extra ? { ...data, note: extra.reason } : data;
|
|
57
|
-
return {
|
|
58
|
-
content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }],
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
function bufferToBase64(buffer) {
|
|
62
|
-
if (typeof Buffer !== 'undefined') {
|
|
63
|
-
return Buffer.from(buffer).toString('base64');
|
|
64
|
-
}
|
|
65
|
-
let binary = '';
|
|
66
|
-
for (let i = 0; i < buffer.byteLength; i++) {
|
|
67
|
-
binary += String.fromCharCode(buffer[i]);
|
|
68
|
-
}
|
|
69
|
-
// eslint-disable-next-line no-undef
|
|
70
|
-
return btoa(binary);
|
|
71
|
-
}
|
|
72
|
-
function formatBytes(bytes) {
|
|
73
|
-
if (bytes >= 1024 * 1024)
|
|
74
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
75
|
-
return `${(bytes / 1024).toFixed(1)}KB`;
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=get-canvas-image.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-canvas-image.js","sourceRoot":"","sources":["../../src/tools/get-canvas-image.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/get-node.d.ts
DELETED
package/dist/tools/get-node.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export function registerGetNode(server, client) {
|
|
3
|
-
server.registerTool('naumu_get_node', {
|
|
4
|
-
title: 'Get Node',
|
|
5
|
-
description: 'Get a single node with all its properties and connections (incoming and outgoing edges).',
|
|
6
|
-
inputSchema: z.object({
|
|
7
|
-
graphId: z.string().describe('The graph ID'),
|
|
8
|
-
nodeId: z.string().describe('The node ID'),
|
|
9
|
-
}),
|
|
10
|
-
}, async ({ graphId, nodeId }) => {
|
|
11
|
-
const data = await client.get(`/api/graphs/${graphId}/nodes/${nodeId}`);
|
|
12
|
-
return {
|
|
13
|
-
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
14
|
-
};
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=get-node.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-node.js","sourceRoot":"","sources":["../../src/tools/get-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,MAAmB;IACrE,MAAM,CAAC,YAAY,CAClB,gBAAgB,EAChB;QACC,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,0FAA0F;QACvG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;SAC1C,CAAC;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,OAAO,UAAU,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACH,CAAC,CACD,CAAC;AACH,CAAC"}
|
package/dist/tools/get-schema.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/** Format raw schema into a structured, LLM-friendly representation. */
|
|
3
|
-
function formatSchema(schema) {
|
|
4
|
-
return {
|
|
5
|
-
description: schema.description ?? null,
|
|
6
|
-
types: schema.nodes.map((node) => {
|
|
7
|
-
const result = { type: node.type };
|
|
8
|
-
if (node.description)
|
|
9
|
-
result.description = node.description;
|
|
10
|
-
if (node.connections.parent) {
|
|
11
|
-
result.parent = `${node.connections.parent.relation} → ${node.connections.parent.target_node}`;
|
|
12
|
-
}
|
|
13
|
-
const connections = [
|
|
14
|
-
...node.connections.required.map((c) => `${c.relation} → ${c.target_node} (required)`),
|
|
15
|
-
...node.connections.suggested.map((c) => `${c.relation} → ${c.target_node}`),
|
|
16
|
-
];
|
|
17
|
-
if (connections.length > 0)
|
|
18
|
-
result.connections = connections;
|
|
19
|
-
if (node.attributes && node.attributes.length > 0) {
|
|
20
|
-
result.attributes = Object.fromEntries(node.attributes.map((a) => {
|
|
21
|
-
const values = (a.values ?? []).map((v) => v.description ? { label: v.label, description: v.description } : v.label);
|
|
22
|
-
const attrDetail = { values };
|
|
23
|
-
if (a.description)
|
|
24
|
-
attrDetail.description = a.description;
|
|
25
|
-
// If no description AND values are bare strings, keep the legacy compact shape
|
|
26
|
-
// (attribute name -> string[]) for back-compat with prompt formatters and tests.
|
|
27
|
-
const hasDesc = !!a.description;
|
|
28
|
-
const hasValueDescs = values.some((v) => typeof v !== 'string');
|
|
29
|
-
if (!hasDesc && !hasValueDescs) {
|
|
30
|
-
return [a.name, (a.values ?? []).map((v) => v.label)];
|
|
31
|
-
}
|
|
32
|
-
return [a.name, attrDetail];
|
|
33
|
-
}));
|
|
34
|
-
}
|
|
35
|
-
return result;
|
|
36
|
-
}),
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
export function registerGetSchema(server, client) {
|
|
40
|
-
server.registerTool('naumu_get_schema', {
|
|
41
|
-
title: 'Get Graph Schema',
|
|
42
|
-
description: 'Get the schema definition for a knowledge graph. Returns node types, their allowed attributes (with valid values), allowed relationships, and any descriptions authored on types/attributes/values. Call this before classifying a new node into a type, before picking an attribute value, or before extending the schema — descriptions are short, contrastive notes from the schema author explaining what each type/attribute/value is for and how it differs from similar-sounding ones.',
|
|
43
|
-
inputSchema: z.object({
|
|
44
|
-
graphId: z.string().describe('The graph ID'),
|
|
45
|
-
}),
|
|
46
|
-
}, async ({ graphId }) => {
|
|
47
|
-
const data = (await client.get(`/api/graphs/${graphId}/schema`));
|
|
48
|
-
const schema = JSON.parse(data.definition);
|
|
49
|
-
const formatted = formatSchema(schema);
|
|
50
|
-
return {
|
|
51
|
-
content: [{ type: 'text', text: JSON.stringify(formatted, null, 2) }],
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=get-schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-schema.js","sourceRoot":"","sources":["../../src/tools/get-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/get-thread.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export function registerGetThread(server, client) {
|
|
3
|
-
server.registerTool('naumu_get_thread', {
|
|
4
|
-
title: 'Get Thread',
|
|
5
|
-
description: 'Fetch a single thread, including the human participant roster (`participantDetails` — userId, name, image) and bot roster (`identityParticipants` — id, name, isSystem). Use this when `naumu_list_threads` surfaced a candidate and you want to know exactly who is in it before posting. Pair with `naumu_read_thread` for message history.',
|
|
6
|
-
inputSchema: z.object({
|
|
7
|
-
threadId: z.string().describe('The thread ID to fetch.'),
|
|
8
|
-
}),
|
|
9
|
-
}, async ({ threadId }) => {
|
|
10
|
-
try {
|
|
11
|
-
const data = await client.get(`/api/threads/${threadId}`);
|
|
12
|
-
return {
|
|
13
|
-
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
catch (err) {
|
|
17
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
18
|
-
return {
|
|
19
|
-
content: [{ type: 'text', text: `Error: ${message}` }],
|
|
20
|
-
isError: true,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=get-thread.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-thread.js","sourceRoot":"","sources":["../../src/tools/get-thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAmB;IACvE,MAAM,CAAC,YAAY,CAClB,kBAAkB,EAClB;QACC,KAAK,EAAE,YAAY;QACnB,WAAW,EACV,+UAA+U;QAChV,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SACxD,CAAC;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;YAC1D,OAAO;gBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACzE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI;aACb,CAAC;QACH,CAAC;IACF,CAAC,CACD,CAAC;AACH,CAAC"}
|
package/dist/tools/get-view.d.ts
DELETED
package/dist/tools/get-view.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export function registerGetView(server, client) {
|
|
3
|
-
server.registerTool('naumu_get_view', {
|
|
4
|
-
title: 'Get View',
|
|
5
|
-
description: 'Fetch a saved Naumu view\'s configuration plus a one-line natural-language summary of its filters. Call this BEFORE naumu_list_view_nodes whenever you encounter a view URL — the summary tells you what data the view returns so you can decide whether to page through it. Returns: id, name, description, summary, filters, and table column config.',
|
|
6
|
-
inputSchema: z.object({
|
|
7
|
-
graphId: z.string().describe('The graph (space) ID. From naumu.ai URLs this is the value after /spaces/.'),
|
|
8
|
-
viewId: z.string().describe('The view ID (typically prefixed with "view_").'),
|
|
9
|
-
}),
|
|
10
|
-
}, async ({ graphId, viewId }) => {
|
|
11
|
-
const data = await client.get(`/api/graphs/${graphId}/views/${viewId}`);
|
|
12
|
-
return {
|
|
13
|
-
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
14
|
-
};
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=get-view.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-view.js","sourceRoot":"","sources":["../../src/tools/get-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,MAAmB;IACrE,MAAM,CAAC,YAAY,CAClB,gBAAgB,EAChB;QACC,KAAK,EAAE,UAAU;QACjB,WAAW,EACV,yVAAyV;QAC1V,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC;YAC1G,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;SAC7E,CAAC;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,OAAO,UAAU,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACH,CAAC,CACD,CAAC;AACH,CAAC"}
|
package/dist/tools/index.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type { NaumuClient } from '../client.js';
|
|
3
|
-
/**
|
|
4
|
-
* Register every MCP tool. Used by user-key sessions, where no per-Identity
|
|
5
|
-
* filtering applies.
|
|
6
|
-
*/
|
|
7
|
-
export declare function registerAllTools(server: McpServer, client: NaumuClient): void;
|
|
8
|
-
/**
|
|
9
|
-
* Register only the named subset — the bot-key path. Names not present in the
|
|
10
|
-
* registrar map are silently skipped (forward compat with future tools the
|
|
11
|
-
* backend manifest may include).
|
|
12
|
-
*/
|
|
13
|
-
export declare function registerNamedTools(server: McpServer, client: NaumuClient, toolNames: readonly string[]): void;
|
package/dist/tools/index.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { registerListGraphs } from './list-graphs.js';
|
|
2
|
-
import { registerCreateGraph } from './create-graph.js';
|
|
3
|
-
import { registerGetSchema } from './get-schema.js';
|
|
4
|
-
import { registerUpdateSchema } from './update-schema.js';
|
|
5
|
-
import { registerAddNodeType } from './add-node-type.js';
|
|
6
|
-
import { registerAddConnection } from './add-connection.js';
|
|
7
|
-
import { registerAddAttribute } from './add-attribute.js';
|
|
8
|
-
import { registerSearch } from './search.js';
|
|
9
|
-
import { registerFilter } from './filter.js';
|
|
10
|
-
import { registerGetNode } from './get-node.js';
|
|
11
|
-
import { registerAddNode } from './add-node.js';
|
|
12
|
-
import { registerUpdateNode } from './update-node.js';
|
|
13
|
-
import { registerAddEdge } from './add-edge.js';
|
|
14
|
-
import { registerRemoveNode } from './remove-node.js';
|
|
15
|
-
import { registerRemoveEdge } from './remove-edge.js';
|
|
16
|
-
import { registerRemoveEdgesBulk } from './remove-edges-bulk.js';
|
|
17
|
-
import { registerAsk } from './ask.js';
|
|
18
|
-
import { registerGetAiThread } from './get-ai-thread.js';
|
|
19
|
-
import { registerTraverse } from './traverse.js';
|
|
20
|
-
import { registerGetView } from './get-view.js';
|
|
21
|
-
import { registerListViewNodes } from './list-view-nodes.js';
|
|
22
|
-
import { registerListCanvases } from './list-canvases.js';
|
|
23
|
-
import { registerGetCanvasElements } from './get-canvas-elements.js';
|
|
24
|
-
import { registerGetCanvasImage } from './get-canvas-image.js';
|
|
25
|
-
import { registerPostMessage } from './post-message.js';
|
|
26
|
-
import { registerReadThread } from './read-thread.js';
|
|
27
|
-
import { registerAskNaumu } from './ask-naumu.js';
|
|
28
|
-
import { registerWhoami } from './whoami.js';
|
|
29
|
-
import { registerListThreads } from './list-threads.js';
|
|
30
|
-
import { registerGetThread } from './get-thread.js';
|
|
31
|
-
import { registerCreateThread } from './create-thread.js';
|
|
32
|
-
import { registerRequestAttachmentUpload } from './request-attachment-upload.js';
|
|
33
|
-
import { registerAddReaction } from './add-reaction.js';
|
|
34
|
-
import { registerRemoveReaction } from './remove-reaction.js';
|
|
35
|
-
import { registerNaumuTyping } from './naumu-typing.js';
|
|
36
|
-
import { registerNoteRead } from './note-read.js';
|
|
37
|
-
import { registerNoteAppend } from './note-append.js';
|
|
38
|
-
import { registerNoteInsert } from './note-insert.js';
|
|
39
|
-
import { registerNoteReplaceSection } from './note-replace-section.js';
|
|
40
|
-
import { registerNoteDeleteSection } from './note-delete-section.js';
|
|
41
|
-
import { registerNoteReplace } from './note-replace.js';
|
|
42
|
-
import { registerNoteFindReplace } from './note-find-replace.js';
|
|
43
|
-
import { registerCanvasAddElement } from './canvas-add-element.js';
|
|
44
|
-
import { registerCanvasUpdateElement } from './canvas-update-element.js';
|
|
45
|
-
import { registerCanvasRemoveElement } from './canvas-remove-element.js';
|
|
46
|
-
import { registerCreateNote } from './create-note.js';
|
|
47
|
-
import { registerCreateCanvas } from './create-canvas.js';
|
|
48
|
-
import { registerListSchemaViolations } from './list-schema-violations.js';
|
|
49
|
-
import { registerListDenseNodes } from './list-dense-nodes.js';
|
|
50
|
-
import { registerListNodeConnections } from './list-node-connections.js';
|
|
51
|
-
import { registerReparent } from './reparent.js';
|
|
52
|
-
import { registerBatchReparent } from './batch-reparent.js';
|
|
53
|
-
/**
|
|
54
|
-
* MCP tool name → registrar. Source of truth for which tool name a registrar
|
|
55
|
-
* binds to (the registrars themselves don't expose the name in a typed shape,
|
|
56
|
-
* so the entries are kept in sync by hand).
|
|
57
|
-
*
|
|
58
|
-
* Bot keys (`Bearer nmu_bot_*`) get a filtered subset based on the manifest
|
|
59
|
-
* fetched at startup. User keys still get every tool.
|
|
60
|
-
*/
|
|
61
|
-
const TOOL_REGISTRARS = {
|
|
62
|
-
naumu_list_graphs: registerListGraphs,
|
|
63
|
-
naumu_create_graph: registerCreateGraph,
|
|
64
|
-
naumu_get_schema: registerGetSchema,
|
|
65
|
-
naumu_update_schema: registerUpdateSchema,
|
|
66
|
-
naumu_add_node_type: registerAddNodeType,
|
|
67
|
-
naumu_add_connection: registerAddConnection,
|
|
68
|
-
naumu_add_attribute: registerAddAttribute,
|
|
69
|
-
naumu_search: registerSearch,
|
|
70
|
-
naumu_filter: registerFilter,
|
|
71
|
-
naumu_get_node: registerGetNode,
|
|
72
|
-
naumu_get_view: registerGetView,
|
|
73
|
-
naumu_list_view_nodes: registerListViewNodes,
|
|
74
|
-
naumu_add_node: registerAddNode,
|
|
75
|
-
naumu_update_node: registerUpdateNode,
|
|
76
|
-
naumu_add_edge: registerAddEdge,
|
|
77
|
-
naumu_remove_node: registerRemoveNode,
|
|
78
|
-
naumu_remove_edge: registerRemoveEdge,
|
|
79
|
-
naumu_remove_edges_bulk: registerRemoveEdgesBulk,
|
|
80
|
-
naumu_ask: registerAsk,
|
|
81
|
-
naumu_get_ai_thread: registerGetAiThread,
|
|
82
|
-
naumu_traverse: registerTraverse,
|
|
83
|
-
naumu_list_canvases: registerListCanvases,
|
|
84
|
-
naumu_get_canvas_elements: registerGetCanvasElements,
|
|
85
|
-
naumu_get_canvas_image: registerGetCanvasImage,
|
|
86
|
-
naumu_post_message: registerPostMessage,
|
|
87
|
-
naumu_read_thread: registerReadThread,
|
|
88
|
-
naumu_ask_naumu: registerAskNaumu,
|
|
89
|
-
naumu_whoami: registerWhoami,
|
|
90
|
-
naumu_list_threads: registerListThreads,
|
|
91
|
-
naumu_get_thread: registerGetThread,
|
|
92
|
-
naumu_create_thread: registerCreateThread,
|
|
93
|
-
naumu_request_attachment_upload: registerRequestAttachmentUpload,
|
|
94
|
-
naumu_add_reaction: registerAddReaction,
|
|
95
|
-
naumu_remove_reaction: registerRemoveReaction,
|
|
96
|
-
naumu_typing: registerNaumuTyping,
|
|
97
|
-
naumu_note_read: registerNoteRead,
|
|
98
|
-
naumu_note_append: registerNoteAppend,
|
|
99
|
-
naumu_note_insert: registerNoteInsert,
|
|
100
|
-
naumu_note_replace_section: registerNoteReplaceSection,
|
|
101
|
-
naumu_note_delete_section: registerNoteDeleteSection,
|
|
102
|
-
naumu_note_replace: registerNoteReplace,
|
|
103
|
-
naumu_note_find_replace: registerNoteFindReplace,
|
|
104
|
-
naumu_canvas_add_element: registerCanvasAddElement,
|
|
105
|
-
naumu_canvas_update_element: registerCanvasUpdateElement,
|
|
106
|
-
naumu_canvas_remove_element: registerCanvasRemoveElement,
|
|
107
|
-
naumu_create_note: registerCreateNote,
|
|
108
|
-
naumu_create_canvas: registerCreateCanvas,
|
|
109
|
-
naumu_list_schema_violations: registerListSchemaViolations,
|
|
110
|
-
naumu_list_dense_nodes: registerListDenseNodes,
|
|
111
|
-
naumu_list_node_connections: registerListNodeConnections,
|
|
112
|
-
naumu_reparent: registerReparent,
|
|
113
|
-
naumu_batch_reparent: registerBatchReparent,
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* Register every MCP tool. Used by user-key sessions, where no per-Identity
|
|
117
|
-
* filtering applies.
|
|
118
|
-
*/
|
|
119
|
-
export function registerAllTools(server, client) {
|
|
120
|
-
for (const registrar of Object.values(TOOL_REGISTRARS)) {
|
|
121
|
-
registrar(server, client);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Register only the named subset — the bot-key path. Names not present in the
|
|
126
|
-
* registrar map are silently skipped (forward compat with future tools the
|
|
127
|
-
* backend manifest may include).
|
|
128
|
-
*/
|
|
129
|
-
export function registerNamedTools(server, client, toolNames) {
|
|
130
|
-
const registered = [];
|
|
131
|
-
const skipped = [];
|
|
132
|
-
for (const name of toolNames) {
|
|
133
|
-
const registrar = TOOL_REGISTRARS[name];
|
|
134
|
-
if (registrar) {
|
|
135
|
-
registrar(server, client);
|
|
136
|
-
registered.push(name);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
skipped.push(name);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (skipped.length) {
|
|
143
|
-
console.error(`[mcp] skipped ${skipped.length} tool(s) absent from this build: ${skipped.join(', ')}`);
|
|
144
|
-
}
|
|
145
|
-
console.error(`[mcp] registered ${registered.length} tool(s) for bot key`);
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export function registerListCanvases(server, client) {
|
|
3
|
-
server.registerTool('naumu_list_canvases', {
|
|
4
|
-
title: 'List Canvases',
|
|
5
|
-
description: 'List freeform drawing canvases in a graph. Each canvas is an Excalidraw-style sketch surface that may contain shapes, text, freehand strokes, images, bookmark cards, and embedded references to graph nodes.',
|
|
6
|
-
inputSchema: z.object({
|
|
7
|
-
graphId: z.string().describe('The graph ID to list canvases for'),
|
|
8
|
-
}),
|
|
9
|
-
}, async ({ graphId }) => {
|
|
10
|
-
const data = await client.get(`/api/canvases?graphId=${encodeURIComponent(graphId)}`);
|
|
11
|
-
return {
|
|
12
|
-
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
13
|
-
};
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=list-canvases.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-canvases.js","sourceRoot":"","sources":["../../src/tools/list-canvases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAmB;IAC1E,MAAM,CAAC,YAAY,CAClB,qBAAqB,EACrB;QACC,KAAK,EAAE,eAAe;QACtB,WAAW,EACV,+MAA+M;QAChN,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SACjE,CAAC;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,yBAAyB,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtF,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACH,CAAC,CACD,CAAC;AACH,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export function registerListDenseNodes(server, client) {
|
|
3
|
-
server.registerTool('naumu_list_dense_nodes', {
|
|
4
|
-
title: 'List Dense Nodes',
|
|
5
|
-
description: 'Return nodes whose total edge count (in+out, non-system) is ≥ minConnections, grouped by type. Built for /restructure hub detection: each row includes `same_typed_child_count` — the number of children of the SAME type as the node (the Naumu hub-pattern signal). Sort the response by `same_typed_child_count` descending and route any node with ≥10 same-typed children through a mini-hub split. Pass `nodeTypes` (comma-separated) to restrict to a subset (e.g. ["Feature","Company"]). Cheap to call — runs a single Cypher aggregation.',
|
|
6
|
-
inputSchema: z.object({
|
|
7
|
-
graphId: z.string().describe('The graph ID'),
|
|
8
|
-
minConnections: z
|
|
9
|
-
.number()
|
|
10
|
-
.int()
|
|
11
|
-
.min(1)
|
|
12
|
-
.describe('Minimum total edge count (in + out, excluding system relations). Typical: 10 for hub detection, 11 to count only hubs that exceed the round-4 ≤10 threshold.'),
|
|
13
|
-
nodeTypes: z
|
|
14
|
-
.array(z.string())
|
|
15
|
-
.optional()
|
|
16
|
-
.describe('Optional list of node types to restrict the scan to.'),
|
|
17
|
-
}),
|
|
18
|
-
}, async ({ graphId, minConnections, nodeTypes }) => {
|
|
19
|
-
const params = new URLSearchParams();
|
|
20
|
-
params.set('minConnections', String(minConnections));
|
|
21
|
-
if (nodeTypes?.length)
|
|
22
|
-
params.set('nodeTypes', nodeTypes.join(','));
|
|
23
|
-
const data = await client.get(`/api/graphs/${graphId}/dense-nodes?${params.toString()}`);
|
|
24
|
-
return {
|
|
25
|
-
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
26
|
-
};
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=list-dense-nodes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-dense-nodes.js","sourceRoot":"","sources":["../../src/tools/list-dense-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAmB;IAC5E,MAAM,CAAC,YAAY,CAClB,wBAAwB,EACxB;QACC,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACV,qhBAAqhB;QACthB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC5C,cAAc,EAAE,CAAC;iBACf,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,8JAA8J,CAAC;YAC1K,SAAS,EAAE,CAAC;iBACV,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;SAClE,CAAC;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QACrD,IAAI,SAAS,EAAE,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAC5B,eAAe,OAAO,gBAAgB,MAAM,CAAC,QAAQ,EAAE,EAAE,CACzD,CAAC;QACF,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACH,CAAC,CACD,CAAC;AACH,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export function registerListGraphs(server, client) {
|
|
3
|
-
server.registerTool('naumu_list_graphs', {
|
|
4
|
-
title: 'List Graphs',
|
|
5
|
-
description: 'List all knowledge graphs (spaces) the authenticated user has access to. Returns graph IDs, names, and roles.',
|
|
6
|
-
inputSchema: z.object({}),
|
|
7
|
-
}, async () => {
|
|
8
|
-
const data = await client.get('/api/graphs');
|
|
9
|
-
return {
|
|
10
|
-
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
11
|
-
};
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=list-graphs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-graphs.js","sourceRoot":"","sources":["../../src/tools/list-graphs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAmB;IACxE,MAAM,CAAC,YAAY,CAClB,mBAAmB,EACnB;QACC,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,+GAA+G;QAC5H,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KACzB,EACD,KAAK,IAAI,EAAE;QACV,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACH,CAAC,CACD,CAAC;AACH,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export function registerListNodeConnections(server, client) {
|
|
3
|
-
server.registerTool('naumu_list_node_connections', {
|
|
4
|
-
title: 'List Node Connections',
|
|
5
|
-
description: 'Return a single node\'s edges (non-system) with the connected node on the other side. Used during /restructure to confirm mini-hub candidates and verify reparenting outcomes. Filter with `edgeType` (relation label) and `direction` ("in" | "out" | "both", default both). Response: `{ node: {id,label,type}, edges: [{relation, direction, isParent, other: {id,label,type}}] }`.',
|
|
6
|
-
inputSchema: z.object({
|
|
7
|
-
graphId: z.string().describe('The graph ID'),
|
|
8
|
-
nodeId: z.string().describe('The node ID to inspect'),
|
|
9
|
-
edgeType: z
|
|
10
|
-
.string()
|
|
11
|
-
.optional()
|
|
12
|
-
.describe('Restrict to a specific relation label (e.g. "ASSOCIATED_WITH"). Case-insensitive; non-alphanum chars are normalized.'),
|
|
13
|
-
direction: z
|
|
14
|
-
.enum(['in', 'out', 'both'])
|
|
15
|
-
.optional()
|
|
16
|
-
.describe('Edge direction filter — "in" (incoming), "out" (outgoing), "both" (default).'),
|
|
17
|
-
}),
|
|
18
|
-
}, async ({ graphId, nodeId, edgeType, direction }) => {
|
|
19
|
-
const params = new URLSearchParams();
|
|
20
|
-
if (edgeType)
|
|
21
|
-
params.set('edgeType', edgeType);
|
|
22
|
-
if (direction)
|
|
23
|
-
params.set('direction', direction);
|
|
24
|
-
const qs = params.toString();
|
|
25
|
-
const path = `/api/graphs/${graphId}/nodes/${nodeId}/connections${qs ? `?${qs}` : ''}`;
|
|
26
|
-
const data = await client.get(path);
|
|
27
|
-
return {
|
|
28
|
-
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
29
|
-
};
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=list-node-connections.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-node-connections.js","sourceRoot":"","sources":["../../src/tools/list-node-connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,MAAmB;IACjF,MAAM,CAAC,YAAY,CAClB,6BAA6B,EAC7B;QACC,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACV,wXAAwX;QACzX,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACrD,QAAQ,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sHAAsH,CAAC;YAClI,SAAS,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBAC3B,QAAQ,EAAE;iBACV,QAAQ,CAAC,8EAA8E,CAAC;SAC1F,CAAC;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,eAAe,OAAO,UAAU,MAAM,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACvF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACH,CAAC,CACD,CAAC;AACH,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export function registerListSchemaViolations(server, client) {
|
|
3
|
-
server.registerTool('naumu_list_schema_violations', {
|
|
4
|
-
title: 'List Schema Violations',
|
|
5
|
-
description: 'List every schema-validation issue in a graph. Returns each node with issues and a summary by violation kind: parent_missing (schema expects a parent edge that does not exist), parent_multiple (more than one parent edge on a node that should have one), parent_mismatch (parent edge has wrong target type or relation label), unknown_relation (edge uses a relation label not defined in the schema), invalid_connection_target (edge connects to a type the schema does not allow for this source). Use for audits, import-verification, and CI-style checks after batch writes.',
|
|
6
|
-
inputSchema: z.object({
|
|
7
|
-
graphId: z.string().describe('The graph ID'),
|
|
8
|
-
}),
|
|
9
|
-
}, async ({ graphId }) => {
|
|
10
|
-
const data = (await client.get(`/api/graphs/${graphId}/schema/validation`));
|
|
11
|
-
return {
|
|
12
|
-
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
13
|
-
};
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=list-schema-violations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-schema-violations.js","sourceRoot":"","sources":["../../src/tools/list-schema-violations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2BxB,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,MAAmB;IAClF,MAAM,CAAC,YAAY,CAClB,8BAA8B,EAC9B;QACC,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACV,0jBAA0jB;QAC3jB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;SAC5C,CAAC;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAC7B,eAAe,OAAO,oBAAoB,CAC1C,CAAuB,CAAC;QACzB,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACH,CAAC,CACD,CAAC;AACH,CAAC"}
|