@hebbianvault/mcp 0.5.0 → 0.6.0
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/tools/traverse.d.ts
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* src/tools/traverse.ts
|
|
3
|
-
*
|
|
4
2
|
* Tool: hebbian_traverse
|
|
5
|
-
* Walk the workspace graph outward from a starting node up to N hops.
|
|
6
3
|
*
|
|
7
|
-
*
|
|
8
|
-
* carries its inline edges. We do a breadth-first walk from the start node;
|
|
9
|
-
* only nodes the caller's token may see are present in the graph, so traversal
|
|
10
|
-
* never crosses an access boundary.
|
|
4
|
+
* Return a bounded, weight-ranked neighbourhood from the scoped workspace graph.
|
|
11
5
|
*/
|
|
12
6
|
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
13
7
|
import type { HebbianClient } from "../client.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../src/tools/traverse.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../src/tools/traverse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgBlD,eAAO,MAAM,gBAAgB,EAAE,IAgC9B,CAAC;AAEF,UAAU,YAAY;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAyFD,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,CAAC,CA8LjB"}
|
package/dist/tools/traverse.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* src/tools/traverse.ts
|
|
3
|
-
*
|
|
4
2
|
* Tool: hebbian_traverse
|
|
5
|
-
* Walk the workspace graph outward from a starting node up to N hops.
|
|
6
3
|
*
|
|
7
|
-
*
|
|
8
|
-
* carries its inline edges. We do a breadth-first walk from the start node;
|
|
9
|
-
* only nodes the caller's token may see are present in the graph, so traversal
|
|
10
|
-
* never crosses an access boundary.
|
|
4
|
+
* Return a bounded, weight-ranked neighbourhood from the scoped workspace graph.
|
|
11
5
|
*/
|
|
12
6
|
import { HebbianApiError } from "../client.js";
|
|
13
7
|
import { fetchGraph, normaliseEdge, summarise } from "./graph_helpers.js";
|
|
14
|
-
import { stringifyUntrustedResult } from "./untrusted_content.js";
|
|
8
|
+
import { frameUntrustedText, stringifyUntrustedResult } from "./untrusted_content.js";
|
|
15
9
|
const MAX_HOPS = 3;
|
|
16
10
|
const DEFAULT_HOPS = 2;
|
|
11
|
+
// neighbourhood_v0 response budgets. PROVISIONAL — not ratified by any lane, including
|
|
12
|
+
// graph. Ported from the Python reference (py/src/hebbianvault_mcp/tools.py:39-41), but the
|
|
13
|
+
// two runtimes do NOT measure the same byte stream: Python frames untrusted text per field,
|
|
14
|
+
// TypeScript frames the whole response once at the MCP boundary (src/index.ts:185). Retune
|
|
15
|
+
// here, in one place, and only against measurements taken on THIS runtime.
|
|
16
|
+
const NEIGHBOURHOOD_MAX_NODES = 50;
|
|
17
|
+
const NEIGHBOURHOOD_MAX_CHARS = 15_000;
|
|
18
|
+
const NEIGHBOURHOOD_MAX_DEPTH = 3;
|
|
17
19
|
export const HEBBIAN_TRAVERSE = {
|
|
18
20
|
name: "hebbian_traverse",
|
|
19
21
|
description: "Walk your Hebbian workspace graph from a starting node, returning connected " +
|
|
@@ -32,9 +34,10 @@ export const HEBBIAN_TRAVERSE = {
|
|
|
32
34
|
max_hops: {
|
|
33
35
|
type: "number",
|
|
34
36
|
description: `Maximum number of hops to traverse. Default: ${DEFAULT_HOPS}. Max: ${MAX_HOPS}. ` +
|
|
35
|
-
"Each extra hop multiplies the size of the response, not its relevance.
|
|
36
|
-
"
|
|
37
|
-
"
|
|
37
|
+
"Each extra hop multiplies the size of the response, not its relevance. The " +
|
|
38
|
+
"response is bounded to about 50 nodes and 15,000 characters; inspect " +
|
|
39
|
+
"truncated_at_hop, bound_hit, and nodes_dropped to detect truncation. Start " +
|
|
40
|
+
"at 1 or 2 and widen only if the answer is genuinely missing.",
|
|
38
41
|
minimum: 1,
|
|
39
42
|
maximum: MAX_HOPS,
|
|
40
43
|
},
|
|
@@ -43,76 +46,219 @@ export const HEBBIAN_TRAVERSE = {
|
|
|
43
46
|
additionalProperties: false,
|
|
44
47
|
},
|
|
45
48
|
};
|
|
49
|
+
function isUuidV5(uuid) {
|
|
50
|
+
const groups = uuid.split("-");
|
|
51
|
+
return groups.length >= 3 && groups[2].length > 0 && groups[2].startsWith("5");
|
|
52
|
+
}
|
|
53
|
+
function deduplicateNeighbourhoodNodes(nodes) {
|
|
54
|
+
const twinsByTitle = new Map();
|
|
55
|
+
for (const [index, node] of nodes.entries()) {
|
|
56
|
+
if (typeof node.uuid !== "string" || node.uuid.length === 0)
|
|
57
|
+
continue;
|
|
58
|
+
const title = typeof node.title === "string" && node.title.length > 0
|
|
59
|
+
? node.title
|
|
60
|
+
: `__uuid__:${node.uuid}`;
|
|
61
|
+
const twins = twinsByTitle.get(title) ?? [];
|
|
62
|
+
twins.push({ node, index });
|
|
63
|
+
twinsByTitle.set(title, twins);
|
|
64
|
+
}
|
|
65
|
+
const winners = [];
|
|
66
|
+
const aliases = new Map();
|
|
67
|
+
let duplicatesDropped = 0;
|
|
68
|
+
for (const twins of twinsByTitle.values()) {
|
|
69
|
+
const winner = twins.reduce((best, candidate) => {
|
|
70
|
+
const bestHasTags = Array.isArray(best.node.tags) && best.node.tags.length > 0;
|
|
71
|
+
const candidateHasTags = Array.isArray(candidate.node.tags) && candidate.node.tags.length > 0;
|
|
72
|
+
if (isUuidV5(candidate.node.uuid) !== isUuidV5(best.node.uuid)) {
|
|
73
|
+
return isUuidV5(candidate.node.uuid) ? candidate : best;
|
|
74
|
+
}
|
|
75
|
+
if (candidateHasTags !== bestHasTags)
|
|
76
|
+
return candidateHasTags ? candidate : best;
|
|
77
|
+
return candidate.index < best.index ? candidate : best;
|
|
78
|
+
});
|
|
79
|
+
winners.push(winner);
|
|
80
|
+
for (const twin of twins)
|
|
81
|
+
aliases.set(twin.node.uuid, winner.node.uuid);
|
|
82
|
+
duplicatesDropped += twins.length - 1;
|
|
83
|
+
}
|
|
84
|
+
winners.sort((left, right) => left.index - right.index);
|
|
85
|
+
return { nodes: winners.map(({ node }) => node), aliases, duplicatesDropped };
|
|
86
|
+
}
|
|
87
|
+
function neighbourhoodWeight(value) {
|
|
88
|
+
if (typeof value !== "number" && typeof value !== "string")
|
|
89
|
+
return 0;
|
|
90
|
+
const weight = Number(value);
|
|
91
|
+
return Number.isFinite(weight) ? weight : 0;
|
|
92
|
+
}
|
|
93
|
+
function neighbourhoodSummary(node, depth) {
|
|
94
|
+
const result = summarise(node);
|
|
95
|
+
for (const key of ["domain", "archetype", "tags"]) {
|
|
96
|
+
const value = result[key];
|
|
97
|
+
if (Array.isArray(value) ? value.length === 0 : !value)
|
|
98
|
+
delete result[key];
|
|
99
|
+
}
|
|
100
|
+
if (depth > 1) {
|
|
101
|
+
const snippet = result.snippet;
|
|
102
|
+
delete result.snippet;
|
|
103
|
+
if (snippet)
|
|
104
|
+
result.snippet_withheld = "depth_policy";
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
46
108
|
export async function handleTraverse(client, args) {
|
|
47
109
|
const { start_uuid, max_hops = DEFAULT_HOPS } = args;
|
|
48
110
|
if (!start_uuid || typeof start_uuid !== "string" || start_uuid.trim().length === 0) {
|
|
49
111
|
throw new Error("start_uuid is required and must be a non-empty string");
|
|
50
112
|
}
|
|
51
|
-
const
|
|
113
|
+
const requestedHops = Math.max(1, typeof max_hops === "number" && Number.isFinite(max_hops) ? Math.trunc(max_hops) : DEFAULT_HOPS);
|
|
114
|
+
const hops = Math.min(requestedHops, MAX_HOPS);
|
|
52
115
|
const start = start_uuid.trim();
|
|
53
116
|
try {
|
|
54
117
|
const graph = await fetchGraph(client);
|
|
55
|
-
const
|
|
118
|
+
const deduplicated = deduplicateNeighbourhoodNodes(graph.nodes);
|
|
56
119
|
const byUuid = new Map();
|
|
57
|
-
for (const
|
|
58
|
-
byUuid.set(
|
|
59
|
-
|
|
120
|
+
for (const node of deduplicated.nodes)
|
|
121
|
+
byUuid.set(node.uuid, node);
|
|
122
|
+
const canonicalStart = deduplicated.aliases.get(start) ?? start;
|
|
123
|
+
const emptyDiagnostics = {
|
|
124
|
+
truncated_at_hop: null,
|
|
125
|
+
nodes_dropped: 0,
|
|
126
|
+
duplicates_dropped: deduplicated.duplicatesDropped,
|
|
127
|
+
bound_hit: null,
|
|
128
|
+
weight_spread: null,
|
|
129
|
+
distinct_weights: 0,
|
|
130
|
+
edges_considered: 0,
|
|
131
|
+
};
|
|
132
|
+
if (!byUuid.has(canonicalStart)) {
|
|
60
133
|
return JSON.stringify({
|
|
61
134
|
start_uuid: start,
|
|
62
135
|
message: "Start node not found in the visible workspace graph. It may not exist " +
|
|
63
136
|
"or may be outside your token's scope.",
|
|
64
137
|
nodes: [],
|
|
65
138
|
edges: [],
|
|
139
|
+
...emptyDiagnostics,
|
|
66
140
|
...(graph.truncated ? { truncated: true } : {}),
|
|
67
141
|
}, null, 2);
|
|
68
142
|
}
|
|
69
|
-
//
|
|
70
|
-
const visited = new Set([
|
|
143
|
+
// The start is hop 0 and, like every accepted node, consumes response budget.
|
|
144
|
+
const visited = new Set([canonicalStart]);
|
|
145
|
+
const resultNodes = [neighbourhoodSummary(byUuid.get(canonicalStart), 0)];
|
|
71
146
|
const collectedEdges = [];
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
147
|
+
let frontier = [{ uuid: canonicalStart, score: 0 }];
|
|
148
|
+
const weights = [];
|
|
149
|
+
let edgesConsidered = 0;
|
|
150
|
+
let truncatedAtHop = null;
|
|
151
|
+
let nodesDropped = 0;
|
|
152
|
+
let boundHit = null;
|
|
153
|
+
const payload = (nodes, edges, markerHop, dropped, hit) => {
|
|
154
|
+
const minWeight = weights.length > 0 ? Math.min(...weights) : null;
|
|
155
|
+
const weightSpread = minWeight !== null && minWeight > 0
|
|
156
|
+
? Number(((Math.max(...weights) - minWeight) / minWeight).toFixed(5))
|
|
157
|
+
: null;
|
|
158
|
+
return {
|
|
159
|
+
start_uuid: start,
|
|
160
|
+
max_hops: hops,
|
|
161
|
+
node_count: nodes.length,
|
|
162
|
+
edge_count: edges.length,
|
|
163
|
+
nodes,
|
|
164
|
+
edges,
|
|
165
|
+
truncated_at_hop: markerHop,
|
|
166
|
+
nodes_dropped: dropped,
|
|
167
|
+
duplicates_dropped: deduplicated.duplicatesDropped,
|
|
168
|
+
bound_hit: hit,
|
|
169
|
+
weight_spread: weightSpread,
|
|
170
|
+
distinct_weights: new Set(weights).size,
|
|
171
|
+
edges_considered: edgesConsidered,
|
|
172
|
+
...(graph.truncated ? { truncated: true } : {}),
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
const expandFrontier = (activeFrontier) => {
|
|
176
|
+
const candidates = new Map();
|
|
177
|
+
let discoveryIndex = 0;
|
|
178
|
+
for (const { uuid, score: accumulatedWeight } of activeFrontier) {
|
|
77
179
|
const node = byUuid.get(uuid);
|
|
78
180
|
if (!node || !Array.isArray(node.edges))
|
|
79
181
|
continue;
|
|
80
|
-
for (const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
182
|
+
for (const rawEdge of node.edges) {
|
|
183
|
+
if (rawEdge === null || typeof rawEdge !== "object" || Array.isArray(rawEdge))
|
|
184
|
+
continue;
|
|
185
|
+
edgesConsidered += 1;
|
|
186
|
+
const normalised = normaliseEdge(rawEdge, uuid);
|
|
187
|
+
const source = deduplicated.aliases.get(normalised.source) ?? normalised.source;
|
|
188
|
+
const target = deduplicated.aliases.get(normalised.target) ?? normalised.target;
|
|
189
|
+
const rawWeight = normalised.weight;
|
|
190
|
+
const weight = neighbourhoodWeight(rawWeight);
|
|
191
|
+
weights.push(weight);
|
|
192
|
+
const neighbour = source === uuid ? target : source;
|
|
193
|
+
if (visited.has(neighbour) || !byUuid.has(neighbour))
|
|
194
|
+
continue;
|
|
195
|
+
const candidate = {
|
|
196
|
+
uuid: neighbour,
|
|
197
|
+
score: accumulatedWeight + weight,
|
|
198
|
+
edge: { source, target, relation: normalised.relation, weight: rawWeight },
|
|
199
|
+
discoveryIndex,
|
|
200
|
+
};
|
|
201
|
+
const existing = candidates.get(neighbour);
|
|
202
|
+
if (!existing || candidate.score > existing.score)
|
|
203
|
+
candidates.set(neighbour, candidate);
|
|
204
|
+
discoveryIndex += 1;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return [...candidates.values()].sort((left, right) => right.score - left.score || left.discoveryIndex - right.discoveryIndex);
|
|
208
|
+
};
|
|
209
|
+
for (let depth = 1; depth <= requestedHops; depth += 1) {
|
|
210
|
+
const candidates = expandFrontier(frontier);
|
|
211
|
+
if (depth > NEIGHBOURHOOD_MAX_DEPTH) {
|
|
212
|
+
if (candidates.length > 0) {
|
|
213
|
+
truncatedAtHop = NEIGHBOURHOOD_MAX_DEPTH;
|
|
214
|
+
nodesDropped = candidates.length;
|
|
215
|
+
boundHit = "depth";
|
|
97
216
|
}
|
|
217
|
+
break;
|
|
98
218
|
}
|
|
99
|
-
|
|
219
|
+
if (candidates.length === 0)
|
|
220
|
+
break;
|
|
221
|
+
const nextFrontier = [];
|
|
222
|
+
for (let position = 0; position < candidates.length; position += 1) {
|
|
223
|
+
const candidate = candidates[position];
|
|
224
|
+
if (resultNodes.length >= NEIGHBOURHOOD_MAX_NODES) {
|
|
225
|
+
truncatedAtHop = depth;
|
|
226
|
+
nodesDropped = candidates.length - position;
|
|
227
|
+
boundHit = "nodes";
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
const nodeSummary = neighbourhoodSummary(byUuid.get(candidate.uuid), depth);
|
|
231
|
+
const edgeSummary = {
|
|
232
|
+
source_uuid: candidate.edge.source,
|
|
233
|
+
target_uuid: candidate.edge.target,
|
|
234
|
+
relation_type: candidate.edge.relation,
|
|
235
|
+
weight: candidate.edge.weight,
|
|
236
|
+
};
|
|
237
|
+
const candidatePayload = payload([...resultNodes, nodeSummary], [...collectedEdges, edgeSummary], depth, candidates.length - position, "chars");
|
|
238
|
+
if (frameUntrustedText(stringifyUntrustedResult(candidatePayload)).length > NEIGHBOURHOOD_MAX_CHARS) {
|
|
239
|
+
truncatedAtHop = depth;
|
|
240
|
+
nodesDropped = candidates.length - position;
|
|
241
|
+
boundHit = "chars";
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
visited.add(candidate.uuid);
|
|
245
|
+
resultNodes.push(nodeSummary);
|
|
246
|
+
collectedEdges.push(edgeSummary);
|
|
247
|
+
nextFrontier.push({ uuid: candidate.uuid, score: candidate.score });
|
|
248
|
+
}
|
|
249
|
+
if (boundHit)
|
|
250
|
+
break;
|
|
251
|
+
frontier = nextFrontier;
|
|
100
252
|
if (frontier.length === 0)
|
|
101
253
|
break;
|
|
102
254
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
node_count: resultNodes.length,
|
|
111
|
-
edge_count: collectedEdges.length,
|
|
112
|
-
nodes: resultNodes,
|
|
113
|
-
edges: collectedEdges,
|
|
114
|
-
...(graph.truncated ? { truncated: true } : {}),
|
|
115
|
-
});
|
|
255
|
+
if (boundHit === null &&
|
|
256
|
+
frameUntrustedText(stringifyUntrustedResult(payload(resultNodes, collectedEdges, 0, 0, "chars"))).length >
|
|
257
|
+
NEIGHBOURHOOD_MAX_CHARS) {
|
|
258
|
+
truncatedAtHop = 0;
|
|
259
|
+
boundHit = "chars";
|
|
260
|
+
}
|
|
261
|
+
return stringifyUntrustedResult(payload(resultNodes, collectedEdges, truncatedAtHop, nodesDropped, boundHit));
|
|
116
262
|
}
|
|
117
263
|
catch (err) {
|
|
118
264
|
if (err instanceof HebbianApiError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../src/tools/traverse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../src/tools/traverse.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hebbianvault/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Customer-installable MCP server for the Hebbian tenant brain. One package, scope-by-token (Employee or Company). Install in Claude Code, Claude Desktop, Cursor, Cowork, or any MCP-compatible agent.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|