backpack-ontology 0.2.24 → 0.3.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/README.md +153 -3
- package/dist/bin/backpack-benchmark.d.ts +3 -0
- package/dist/bin/backpack-benchmark.d.ts.map +1 -0
- package/dist/bin/backpack-benchmark.js +213 -0
- package/dist/bin/backpack-benchmark.js.map +1 -0
- package/dist/bin/backpack.js +3 -3
- package/dist/bin/backpack.js.map +1 -1
- package/dist/bin/init.js +8 -11
- package/dist/bin/init.js.map +1 -1
- package/dist/core/backpack.d.ts +78 -2
- package/dist/core/backpack.d.ts.map +1 -1
- package/dist/core/backpack.js +226 -3
- package/dist/core/backpack.js.map +1 -1
- package/dist/core/draft.d.ts +42 -0
- package/dist/core/draft.d.ts.map +1 -0
- package/dist/core/draft.js +232 -0
- package/dist/core/draft.js.map +1 -0
- package/dist/core/events.d.ts +114 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +375 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/graph.d.ts +3 -1
- package/dist/core/graph.d.ts.map +1 -1
- package/dist/core/graph.js +50 -0
- package/dist/core/graph.js.map +1 -1
- package/dist/core/hooks.d.ts +11 -3
- package/dist/core/hooks.d.ts.map +1 -1
- package/dist/core/hooks.js +53 -47
- package/dist/core/hooks.js.map +1 -1
- package/dist/core/normalize.d.ts +28 -0
- package/dist/core/normalize.d.ts.map +1 -0
- package/dist/core/normalize.js +133 -0
- package/dist/core/normalize.js.map +1 -0
- package/dist/core/remote-fetch.d.ts +50 -0
- package/dist/core/remote-fetch.d.ts.map +1 -0
- package/dist/core/remote-fetch.js +338 -0
- package/dist/core/remote-fetch.js.map +1 -0
- package/dist/core/remote-registry.d.ts +95 -0
- package/dist/core/remote-registry.d.ts.map +1 -0
- package/dist/core/remote-registry.js +296 -0
- package/dist/core/remote-registry.js.map +1 -0
- package/dist/core/remote-schema.d.ts +31 -0
- package/dist/core/remote-schema.d.ts.map +1 -0
- package/dist/core/remote-schema.js +252 -0
- package/dist/core/remote-schema.js.map +1 -0
- package/dist/core/role-audit.d.ts +20 -0
- package/dist/core/role-audit.d.ts.map +1 -0
- package/dist/core/role-audit.js +197 -0
- package/dist/core/role-audit.js.map +1 -0
- package/dist/core/telemetry.d.ts +2 -0
- package/dist/core/telemetry.d.ts.map +1 -1
- package/dist/core/telemetry.js +27 -0
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/token-estimate.d.ts +16 -0
- package/dist/core/token-estimate.d.ts.map +1 -0
- package/dist/core/token-estimate.js +29 -0
- package/dist/core/token-estimate.js.map +1 -0
- package/dist/core/types.d.ts +30 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +11 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/bulk-tools.d.ts.map +1 -1
- package/dist/mcp/tools/bulk-tools.js +80 -12
- package/dist/mcp/tools/bulk-tools.js.map +1 -1
- package/dist/mcp/tools/edge-tools.d.ts.map +1 -1
- package/dist/mcp/tools/edge-tools.js +14 -18
- package/dist/mcp/tools/edge-tools.js.map +1 -1
- package/dist/mcp/tools/error-helpers.d.ts +16 -0
- package/dist/mcp/tools/error-helpers.d.ts.map +1 -0
- package/dist/mcp/tools/error-helpers.js +34 -0
- package/dist/mcp/tools/error-helpers.js.map +1 -0
- package/dist/mcp/tools/intelligence-tools.d.ts +4 -0
- package/dist/mcp/tools/intelligence-tools.d.ts.map +1 -0
- package/dist/mcp/tools/intelligence-tools.js +184 -0
- package/dist/mcp/tools/intelligence-tools.js.map +1 -0
- package/dist/mcp/tools/node-tools.d.ts.map +1 -1
- package/dist/mcp/tools/node-tools.js +43 -40
- package/dist/mcp/tools/node-tools.js.map +1 -1
- package/dist/mcp/tools/ontology-tools.d.ts.map +1 -1
- package/dist/mcp/tools/ontology-tools.js +237 -12
- package/dist/mcp/tools/ontology-tools.js.map +1 -1
- package/dist/mcp/tools/remote-tools.d.ts +5 -0
- package/dist/mcp/tools/remote-tools.d.ts.map +1 -0
- package/dist/mcp/tools/remote-tools.js +295 -0
- package/dist/mcp/tools/remote-tools.js.map +1 -0
- package/dist/mcp/tools/version-tools.d.ts.map +1 -1
- package/dist/mcp/tools/version-tools.js +86 -0
- package/dist/mcp/tools/version-tools.js.map +1 -1
- package/dist/storage/backpack-app-backend.d.ts +1 -1
- package/dist/storage/backpack-app-backend.d.ts.map +1 -1
- package/dist/storage/backpack-app-backend.js +3 -1
- package/dist/storage/backpack-app-backend.js.map +1 -1
- package/dist/storage/event-sourced-backend.d.ts +174 -0
- package/dist/storage/event-sourced-backend.d.ts.map +1 -0
- package/dist/storage/event-sourced-backend.js +840 -0
- package/dist/storage/event-sourced-backend.js.map +1 -0
- package/dist/storage/json-file-backend.d.ts +1 -54
- package/dist/storage/json-file-backend.d.ts.map +1 -1
- package/dist/storage/json-file-backend.js +11 -470
- package/dist/storage/json-file-backend.js.map +1 -1
- package/package.json +3 -3
- package/hooks/auto-capture-prompt.md +0 -40
- package/hooks/hooks.json +0 -16
- package/hooks/suggest-viewer.sh +0 -4
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { trackEvent } from "../../core/telemetry.js";
|
|
3
3
|
import { formatTermsHint } from "./terms-hint.js";
|
|
4
|
+
import { formatWriteError } from "./error-helpers.js";
|
|
4
5
|
export function registerBulkTools(server, backpack) {
|
|
5
6
|
server.registerTool("backpack_import_nodes", {
|
|
6
7
|
title: "Import Nodes",
|
|
7
|
-
description: "Add multiple items and their relationships to a learning graph in one call.
|
|
8
|
+
description: "Add multiple items and their relationships to a learning graph in one call. The batch is validated first: errors block the commit, warnings (type drift, duplicates, three-role rule violations) are surfaced in the response. Pass dryRun=true to get the validation result without committing. Edges reference new nodes by array index (0-based) or existing nodes by ID string.",
|
|
8
9
|
inputSchema: {
|
|
9
10
|
ontology: z.string().describe("Name of the learning graph"),
|
|
10
11
|
nodes: z
|
|
@@ -33,16 +34,62 @@ export function registerBulkTools(server, backpack) {
|
|
|
33
34
|
}))
|
|
34
35
|
.optional()
|
|
35
36
|
.describe("Optional array of edges to create between imported and/or existing nodes"),
|
|
37
|
+
dryRun: z
|
|
38
|
+
.boolean()
|
|
39
|
+
.optional()
|
|
40
|
+
.describe("If true, validate and return warnings/errors without committing. Use this to review a batch before writing."),
|
|
36
41
|
},
|
|
37
|
-
}, async ({ ontology, nodes, edges }) => {
|
|
42
|
+
}, async ({ ontology, nodes, edges, dryRun }) => {
|
|
38
43
|
try {
|
|
39
|
-
const
|
|
44
|
+
const proposedNodes = nodes;
|
|
45
|
+
const proposedEdges = edges;
|
|
46
|
+
// Always validate the batch before any write
|
|
47
|
+
const validation = await backpack.validateImport(ontology, proposedNodes, proposedEdges ?? []);
|
|
48
|
+
// Errors block the commit regardless of dryRun
|
|
49
|
+
if (!validation.ok) {
|
|
50
|
+
trackEvent("tool_call", {
|
|
51
|
+
tool: "backpack_import_nodes",
|
|
52
|
+
outcome: "validation_error",
|
|
53
|
+
});
|
|
54
|
+
return {
|
|
55
|
+
content: [
|
|
56
|
+
{
|
|
57
|
+
type: "text",
|
|
58
|
+
text: `Import refused: ${validation.errors.length} error(s).\n${JSON.stringify({ errors: validation.errors, warnings: validation.warnings }, null, 2)}\n\nFix the errors and retry.`,
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
isError: true,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Dry run — return validation result without writing
|
|
65
|
+
if (dryRun) {
|
|
66
|
+
trackEvent("tool_call", {
|
|
67
|
+
tool: "backpack_import_nodes",
|
|
68
|
+
outcome: "dry_run",
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
content: [
|
|
72
|
+
{
|
|
73
|
+
type: "text",
|
|
74
|
+
text: `Dry run OK. Would import ${validation.newNodeCount} node(s) and ${validation.newEdgeCount} edge(s).${validation.warnings.length > 0
|
|
75
|
+
? `\n\n${validation.warnings.length} warning(s):\n${JSON.stringify(validation.warnings, null, 2)}\n\nReview the warnings, then call again with dryRun=false (or omit) to commit.`
|
|
76
|
+
: "\n\nNo warnings — safe to commit."}`,
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// Commit
|
|
82
|
+
const result = await backpack.importNodes(ontology, proposedNodes, proposedEdges);
|
|
40
83
|
trackEvent("tool_call", { tool: "backpack_import_nodes" });
|
|
41
84
|
const terms = await backpack.getTermsContext(ontology);
|
|
85
|
+
const summary = `Imported ${result.count} node(s) and ${result.edgeCount} edge(s).\nNode IDs: ${JSON.stringify(result.ids)}\nEdge IDs: ${JSON.stringify(result.edgeIds)}`;
|
|
86
|
+
const warningsSection = validation.warnings.length > 0
|
|
87
|
+
? `\n\n${validation.warnings.length} warning(s) to review (committed anyway):\n${JSON.stringify(validation.warnings, null, 2)}`
|
|
88
|
+
: "";
|
|
42
89
|
const content = [
|
|
43
90
|
{
|
|
44
91
|
type: "text",
|
|
45
|
-
text:
|
|
92
|
+
text: summary + warningsSection,
|
|
46
93
|
},
|
|
47
94
|
];
|
|
48
95
|
if (terms) {
|
|
@@ -51,12 +98,7 @@ export function registerBulkTools(server, backpack) {
|
|
|
51
98
|
return { content };
|
|
52
99
|
}
|
|
53
100
|
catch (err) {
|
|
54
|
-
return
|
|
55
|
-
content: [
|
|
56
|
-
{ type: "text", text: `Error: ${err.message}` },
|
|
57
|
-
],
|
|
58
|
-
isError: true,
|
|
59
|
-
};
|
|
101
|
+
return formatWriteError(backpack, ontology, err);
|
|
60
102
|
}
|
|
61
103
|
});
|
|
62
104
|
server.registerTool("backpack_connect", {
|
|
@@ -90,13 +132,39 @@ export function registerBulkTools(server, backpack) {
|
|
|
90
132
|
};
|
|
91
133
|
}
|
|
92
134
|
catch (err) {
|
|
135
|
+
return formatWriteError(backpack, ontology, err);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
server.registerTool("backpack_extract", {
|
|
139
|
+
title: "Extract Subgraph",
|
|
140
|
+
description: "Extract a subgraph (selected nodes + auto-detected edges) into a new learning graph. Node IDs are preserved.",
|
|
141
|
+
inputSchema: {
|
|
142
|
+
ontology: z.string().describe("Source learning graph"),
|
|
143
|
+
nodeIds: z
|
|
144
|
+
.array(z.string())
|
|
145
|
+
.describe("Node IDs to extract"),
|
|
146
|
+
newName: z.string().describe("Name for the new learning graph"),
|
|
147
|
+
description: z
|
|
148
|
+
.string()
|
|
149
|
+
.optional()
|
|
150
|
+
.describe("Description for the new graph"),
|
|
151
|
+
},
|
|
152
|
+
}, async ({ ontology, nodeIds, newName, description }) => {
|
|
153
|
+
try {
|
|
154
|
+
const result = await backpack.extractSubgraph(ontology, nodeIds, newName, description);
|
|
155
|
+
trackEvent("tool_call", { tool: "backpack_extract" });
|
|
93
156
|
return {
|
|
94
157
|
content: [
|
|
95
|
-
{
|
|
158
|
+
{
|
|
159
|
+
type: "text",
|
|
160
|
+
text: `Created learning graph "${newName}" with ${result.nodeCount} node(s) and ${result.edgeCount} edge(s).`,
|
|
161
|
+
},
|
|
96
162
|
],
|
|
97
|
-
isError: true,
|
|
98
163
|
};
|
|
99
164
|
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
return formatWriteError(backpack, ontology, err);
|
|
167
|
+
}
|
|
100
168
|
});
|
|
101
169
|
}
|
|
102
170
|
//# sourceMappingURL=bulk-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/bulk-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"bulk-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/bulk-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/edge-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"edge-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/edge-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAMvD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAgIN"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { trackEvent } from "../../core/telemetry.js";
|
|
3
|
+
import { estimateTokens, formatSavingsFooter } from "../../core/token-estimate.js";
|
|
3
4
|
import { viewerUrl } from "./viewer-url.js";
|
|
5
|
+
import { formatWriteError } from "./error-helpers.js";
|
|
4
6
|
export function registerEdgeTools(server, backpack) {
|
|
5
7
|
server.registerTool("backpack_add_edge", {
|
|
6
8
|
title: "Add Edge",
|
|
@@ -28,12 +30,7 @@ export function registerEdgeTools(server, backpack) {
|
|
|
28
30
|
};
|
|
29
31
|
}
|
|
30
32
|
catch (err) {
|
|
31
|
-
return
|
|
32
|
-
content: [
|
|
33
|
-
{ type: "text", text: `Error: ${err.message}` },
|
|
34
|
-
],
|
|
35
|
-
isError: true,
|
|
36
|
-
};
|
|
33
|
+
return formatWriteError(backpack, ontology, err);
|
|
37
34
|
}
|
|
38
35
|
});
|
|
39
36
|
server.registerTool("backpack_remove_edge", {
|
|
@@ -55,12 +52,7 @@ export function registerEdgeTools(server, backpack) {
|
|
|
55
52
|
};
|
|
56
53
|
}
|
|
57
54
|
catch (err) {
|
|
58
|
-
return
|
|
59
|
-
content: [
|
|
60
|
-
{ type: "text", text: `Error: ${err.message}` },
|
|
61
|
-
],
|
|
62
|
-
isError: true,
|
|
63
|
-
};
|
|
55
|
+
return formatWriteError(backpack, ontology, err);
|
|
64
56
|
}
|
|
65
57
|
});
|
|
66
58
|
server.registerTool("backpack_get_neighbors", {
|
|
@@ -91,12 +83,16 @@ export function registerEdgeTools(server, backpack) {
|
|
|
91
83
|
const result = await backpack.getNeighbors(ontology, nodeId, edgeType, direction, depth);
|
|
92
84
|
trackEvent("tool_call", { tool: "backpack_get_neighbors" });
|
|
93
85
|
const allIds = [nodeId, ...result.neighbors.map((n) => n.node.id)];
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
86
|
+
const responseText = JSON.stringify(result, null, 2);
|
|
87
|
+
const graphTokens = await backpack.getGraphTokens(ontology);
|
|
88
|
+
const footer = formatSavingsFooter(graphTokens, estimateTokens(responseText));
|
|
89
|
+
const content = [
|
|
90
|
+
{ type: "text", text: responseText },
|
|
91
|
+
{ type: "text", text: `View in graph: ${viewerUrl(ontology, allIds)}` },
|
|
92
|
+
];
|
|
93
|
+
if (footer)
|
|
94
|
+
content.push({ type: "text", text: footer });
|
|
95
|
+
return { content };
|
|
100
96
|
}
|
|
101
97
|
catch (err) {
|
|
102
98
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/edge-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"edge-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/edge-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,iBAAiB,CAC/B,MAAiB,EACjB,QAAkB;IAElB,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,oIAAoI;QACtI,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC3D,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CACP,iEAAiE,CAClE;YACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACtD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACtD,UAAU,EAAE,CAAC;iBACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CACP,8EAA8E,CAC/E;SACJ;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC3D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CACjC,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,QAAQ,EACP,UAAsC,IAAI,EAAE,CAC9C,CAAC;YACF,UAAU,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;iBAC/D;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,8DAA8D;QAC3E,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;QACtC,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;SACxD;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5C,UAAU,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gBAAgB,MAAM,GAAG,EAAE;iBAC3D;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,0JAA0J;QAC5J,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;QACnC,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACtD,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;YAC7C,SAAS,EAAE,CAAC;iBACT,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;iBACtC,OAAO,CAAC,MAAM,CAAC;iBACf,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,GAAG,CAAC,CAAC,CAAC;iBACN,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,8CAA8C,CAAC;SAC5D;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CACxC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,CACN,CAAC;YACF,UAAU,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7F,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAqC;gBAChD,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,EAAE;gBAC7C,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;aACjF,CAAC;YACF,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAClE,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAW,GAAa,CAAC,OAAO,EAAE,EAAE;iBACpE;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Backpack } from "../../core/backpack.js";
|
|
2
|
+
/**
|
|
3
|
+
* Format an error from a write tool into an MCP tool response.
|
|
4
|
+
*
|
|
5
|
+
* Special-cases ConcurrencyError by looking up the current lock holder
|
|
6
|
+
* and surfacing it in the response — so the agent knows who they
|
|
7
|
+
* collided with and what to do next.
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatWriteError(backpack: Backpack, ontology: string, err: unknown): Promise<{
|
|
10
|
+
content: {
|
|
11
|
+
type: "text";
|
|
12
|
+
text: string;
|
|
13
|
+
}[];
|
|
14
|
+
isError: true;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=error-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-helpers.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/error-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,OAAO,GACX,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CAwBvE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format an error from a write tool into an MCP tool response.
|
|
3
|
+
*
|
|
4
|
+
* Special-cases ConcurrencyError by looking up the current lock holder
|
|
5
|
+
* and surfacing it in the response — so the agent knows who they
|
|
6
|
+
* collided with and what to do next.
|
|
7
|
+
*/
|
|
8
|
+
export async function formatWriteError(backpack, ontology, err) {
|
|
9
|
+
const e = err;
|
|
10
|
+
if (e.name === "ConcurrencyError") {
|
|
11
|
+
let lockNote = "";
|
|
12
|
+
try {
|
|
13
|
+
const lock = await backpack.getLockInfo(ontology);
|
|
14
|
+
if (lock) {
|
|
15
|
+
lockNote = `\n\nMost recent editor: ${JSON.stringify(lock, null, 2)}`;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
catch { }
|
|
19
|
+
return {
|
|
20
|
+
content: [
|
|
21
|
+
{
|
|
22
|
+
type: "text",
|
|
23
|
+
text: `Conflict: another writer modified "${ontology}" since you last read it. Your change was rejected and nothing was committed.${lockNote}\n\nFix: re-read the graph (e.g. backpack_describe), re-apply your change against the fresh state, and retry.`,
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
isError: true,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
content: [{ type: "text", text: `Error: ${e.message}` }],
|
|
31
|
+
isError: true,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=error-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-helpers.js","sourceRoot":"","sources":["../../../src/mcp/tools/error-helpers.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAkB,EAClB,QAAgB,EAChB,GAAY;IAEZ,MAAM,CAAC,GAAG,GAAY,CAAC;IACvB,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAClC,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,GAAG,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACxE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,sCAAsC,QAAQ,gFAAgF,QAAQ,+GAA+G;iBAC5P;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { Backpack } from "../../core/backpack.js";
|
|
3
|
+
export declare function registerIntelligenceTools(server: McpServer, backpack: Backpack): void;
|
|
4
|
+
//# sourceMappingURL=intelligence-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intelligence-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/intelligence-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CA2MN"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { trackEvent } from "../../core/telemetry.js";
|
|
3
|
+
import { estimateTokens, formatSavingsFooter } from "../../core/token-estimate.js";
|
|
4
|
+
export function registerIntelligenceTools(server, backpack) {
|
|
5
|
+
// backpack_expand: Claude expands a node with related entities
|
|
6
|
+
server.registerTool("backpack_expand", {
|
|
7
|
+
title: "Expand Node",
|
|
8
|
+
description: "Expand a node by adding related entities and connections. Load the node and its neighbors to understand context, then add new nodes and edges that deepen the knowledge in the specified direction. Returns the current node with its neighbors for context.",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
ontology: z.string().describe("Name of the learning graph"),
|
|
11
|
+
nodeId: z.string().describe("ID of the node to expand"),
|
|
12
|
+
direction: z.string().optional().describe("Direction to expand (e.g. 'historical context', 'related concepts', 'technical details')"),
|
|
13
|
+
},
|
|
14
|
+
}, async ({ ontology, nodeId, direction }) => {
|
|
15
|
+
try {
|
|
16
|
+
const nodeResult = await backpack.getNode(ontology, nodeId);
|
|
17
|
+
const neighbors = await backpack.getNeighbors(ontology, nodeId, undefined, "both", 1);
|
|
18
|
+
trackEvent("tool_call", { tool: "backpack_expand" });
|
|
19
|
+
const directionHint = direction ? `\nExpansion direction: ${direction}` : "";
|
|
20
|
+
const responseText = `Node to expand:\n${JSON.stringify(nodeResult, null, 2)}\n\nNeighbors:\n${JSON.stringify(neighbors, null, 2)}${directionHint}\n\nNow use backpack_import_nodes to add related entities with edges connecting them to node ${nodeId}. Add 5-15 new nodes that deepen understanding in the requested direction. Always include edges.`;
|
|
21
|
+
const graphTokens = await backpack.getGraphTokens(ontology);
|
|
22
|
+
const footer = formatSavingsFooter(graphTokens, estimateTokens(responseText));
|
|
23
|
+
const content = [
|
|
24
|
+
{ type: "text", text: responseText },
|
|
25
|
+
];
|
|
26
|
+
if (footer)
|
|
27
|
+
content.push({ type: "text", text: footer });
|
|
28
|
+
return { content };
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
return {
|
|
32
|
+
content: [{ type: "text", text: `Error: ${err.message}` }],
|
|
33
|
+
isError: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
// backpack_explain_path: Find and explain the connection between two nodes
|
|
38
|
+
server.registerTool("backpack_explain_path", {
|
|
39
|
+
title: "Explain Path",
|
|
40
|
+
description: "Find the shortest path between two nodes and explain the semantic meaning of their connection. Returns the path with full node/edge details for you to explain.",
|
|
41
|
+
annotations: { readOnlyHint: true },
|
|
42
|
+
inputSchema: {
|
|
43
|
+
ontology: z.string().describe("Name of the learning graph"),
|
|
44
|
+
sourceId: z.string().describe("ID of the starting node"),
|
|
45
|
+
targetId: z.string().describe("ID of the ending node"),
|
|
46
|
+
},
|
|
47
|
+
}, async ({ ontology, sourceId, targetId }) => {
|
|
48
|
+
try {
|
|
49
|
+
const graph = await backpack.getGraph(ontology);
|
|
50
|
+
const visited = new Set([sourceId]);
|
|
51
|
+
const queue = [
|
|
52
|
+
{ nodeId: sourceId, path: [{ nodeId: sourceId }] }
|
|
53
|
+
];
|
|
54
|
+
let foundPath = null;
|
|
55
|
+
while (queue.length > 0) {
|
|
56
|
+
const { nodeId, path } = queue.shift();
|
|
57
|
+
if (nodeId === targetId) {
|
|
58
|
+
foundPath = path;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
for (const edge of graph.data.edges) {
|
|
62
|
+
let neighbor = null;
|
|
63
|
+
let edgeType = edge.type;
|
|
64
|
+
if (edge.sourceId === nodeId)
|
|
65
|
+
neighbor = edge.targetId;
|
|
66
|
+
else if (edge.targetId === nodeId)
|
|
67
|
+
neighbor = edge.sourceId;
|
|
68
|
+
if (neighbor && !visited.has(neighbor)) {
|
|
69
|
+
visited.add(neighbor);
|
|
70
|
+
queue.push({
|
|
71
|
+
nodeId: neighbor,
|
|
72
|
+
path: [...path, { nodeId: neighbor, edgeType }],
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!foundPath) {
|
|
78
|
+
return {
|
|
79
|
+
content: [{ type: "text", text: "No path found between these two nodes. They are in disconnected parts of the graph." }],
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const pathDetails = [];
|
|
83
|
+
for (const step of foundPath) {
|
|
84
|
+
const node = graph.getNode(step.nodeId);
|
|
85
|
+
if (node) {
|
|
86
|
+
pathDetails.push({
|
|
87
|
+
id: node.id,
|
|
88
|
+
type: node.type,
|
|
89
|
+
label: Object.values(node.properties).find(v => typeof v === "string") ?? node.id,
|
|
90
|
+
properties: node.properties,
|
|
91
|
+
edgeType: step.edgeType,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
trackEvent("tool_call", { tool: "backpack_explain_path" });
|
|
96
|
+
const responseText = `Path found (${foundPath.length} nodes, ${foundPath.length - 1} hops):\n\n${JSON.stringify(pathDetails, null, 2)}\n\nExplain the semantic meaning of this path — why are these nodes connected through these relationships? What does the chain of connections reveal?`;
|
|
97
|
+
const graphTokens = await backpack.getGraphTokens(ontology);
|
|
98
|
+
const footer = formatSavingsFooter(graphTokens, estimateTokens(responseText));
|
|
99
|
+
const content = [
|
|
100
|
+
{ type: "text", text: responseText },
|
|
101
|
+
];
|
|
102
|
+
if (footer)
|
|
103
|
+
content.push({ type: "text", text: footer });
|
|
104
|
+
return { content };
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
return {
|
|
108
|
+
content: [{ type: "text", text: `Error: ${err.message}` }],
|
|
109
|
+
isError: true,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
// backpack_enrich: Load a node's context for enrichment
|
|
114
|
+
server.registerTool("backpack_enrich", {
|
|
115
|
+
title: "Enrich Node",
|
|
116
|
+
description: "Enrich a node with deeper knowledge. Load the node and its context, then add additional properties, related nodes, and connections based on your knowledge or external sources.",
|
|
117
|
+
inputSchema: {
|
|
118
|
+
ontology: z.string().describe("Name of the learning graph"),
|
|
119
|
+
nodeId: z.string().describe("ID of the node to enrich"),
|
|
120
|
+
},
|
|
121
|
+
}, async ({ ontology, nodeId }) => {
|
|
122
|
+
try {
|
|
123
|
+
const nodeResult = await backpack.getNode(ontology, nodeId);
|
|
124
|
+
const neighbors = await backpack.getNeighbors(ontology, nodeId, undefined, "both", 1);
|
|
125
|
+
const describe = await backpack.describeOntology(ontology);
|
|
126
|
+
trackEvent("tool_call", { tool: "backpack_enrich" });
|
|
127
|
+
const responseText = `Node to enrich:\n${JSON.stringify(nodeResult, null, 2)}\n\nNeighbors:\n${JSON.stringify(neighbors, null, 2)}\n\nGraph context:\n${JSON.stringify({ nodeTypes: describe.nodeTypes, edgeTypes: describe.edgeTypes }, null, 2)}\n\nEnrich this node: add missing properties (use backpack_update_node), add related entities (use backpack_import_nodes with edges to ${nodeId}), and add missing connections to existing nodes (use backpack_connect).`;
|
|
128
|
+
const graphTokens = await backpack.getGraphTokens(ontology);
|
|
129
|
+
const footer = formatSavingsFooter(graphTokens, estimateTokens(responseText));
|
|
130
|
+
const content = [
|
|
131
|
+
{ type: "text", text: responseText },
|
|
132
|
+
];
|
|
133
|
+
if (footer)
|
|
134
|
+
content.push({ type: "text", text: footer });
|
|
135
|
+
return { content };
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
return {
|
|
139
|
+
content: [{ type: "text", text: `Error: ${err.message}` }],
|
|
140
|
+
isError: true,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
// backpack_synthesize: Multi-source graph building
|
|
145
|
+
server.registerTool("backpack_synthesize", {
|
|
146
|
+
title: "Synthesize Sources",
|
|
147
|
+
description: "Build a learning graph from multiple sources. Provide the content from each source (already loaded), and the tool will guide you to extract entities and relationships. Use this when combining knowledge from databases, code, documents, APIs, or other people's work.",
|
|
148
|
+
inputSchema: {
|
|
149
|
+
ontology: z.string().describe("Name of the learning graph (will be created if it doesn't exist)"),
|
|
150
|
+
sources: z
|
|
151
|
+
.array(z.object({
|
|
152
|
+
label: z.string().describe("Description of the source (e.g. 'Snowflake customer table', 'GitLab project README')"),
|
|
153
|
+
content: z.string().describe("The actual content from the source"),
|
|
154
|
+
}))
|
|
155
|
+
.describe("Array of sources to synthesize"),
|
|
156
|
+
focus: z.string().optional().describe("What to focus on (e.g. 'business opportunities', 'technical architecture', 'character relationships')"),
|
|
157
|
+
},
|
|
158
|
+
}, async ({ ontology, sources, focus }) => {
|
|
159
|
+
try {
|
|
160
|
+
try {
|
|
161
|
+
await backpack.describeOntology(ontology);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
await backpack.storage.createOntology(ontology, focus ?? "Synthesized learning graph");
|
|
165
|
+
}
|
|
166
|
+
trackEvent("tool_call", { tool: "backpack_synthesize" });
|
|
167
|
+
const sourceList = sources.map((s, i) => `Source ${i + 1} (${s.label}):\n${s.content}`).join("\n\n---\n\n");
|
|
168
|
+
const focusHint = focus ? `\nFocus area: ${focus}` : "";
|
|
169
|
+
return {
|
|
170
|
+
content: [{
|
|
171
|
+
type: "text",
|
|
172
|
+
text: `Synthesize these ${sources.length} sources into the "${ontology}" learning graph:${focusHint}\n\n${sourceList}\n\nExtract entities and relationships from ALL sources. Cross-reference across sources — if the same entity appears in multiple sources, create one node with combined properties. Use backpack_import_nodes with edges to write everything in one atomic call. Include 10-50 nodes depending on source richness.`,
|
|
173
|
+
}],
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
return {
|
|
178
|
+
content: [{ type: "text", text: `Error: ${err.message}` }],
|
|
179
|
+
isError: true,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=intelligence-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intelligence-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/intelligence-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/node-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"node-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/node-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAOvD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CA6QN"}
|