backpack-ontology 0.2.0 → 0.2.1
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/bin/backpack-app.d.ts +3 -0
- package/dist/bin/backpack-app.d.ts.map +1 -0
- package/dist/bin/backpack-app.js +27 -0
- package/dist/bin/backpack-app.js.map +1 -0
- package/dist/bin/backpack.js +1 -4
- package/dist/bin/backpack.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +16 -4
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +12 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/storage/backpack-app-backend.d.ts +23 -0
- package/dist/storage/backpack-app-backend.d.ts.map +1 -0
- package/dist/storage/backpack-app-backend.js +80 -0
- package/dist/storage/backpack-app-backend.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backpack-app.d.ts","sourceRoot":"","sources":["../../src/bin/backpack-app.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
+
import { createMcpServer } from "../mcp/server.js";
|
|
4
|
+
import { shutdown as shutdownTelemetry } from "../core/telemetry.js";
|
|
5
|
+
async function main() {
|
|
6
|
+
const apiUrl = process.env.BACKPACK_APP_URL;
|
|
7
|
+
const apiToken = process.env.BACKPACK_APP_TOKEN;
|
|
8
|
+
if (!apiUrl || !apiToken) {
|
|
9
|
+
console.error("Required env vars: BACKPACK_APP_URL, BACKPACK_APP_TOKEN");
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
const server = await createMcpServer({ mode: "app", url: apiUrl, token: apiToken });
|
|
13
|
+
const transport = new StdioServerTransport();
|
|
14
|
+
await server.connect(transport);
|
|
15
|
+
console.error(`Backpack App MCP server running on stdio (${apiUrl})`);
|
|
16
|
+
}
|
|
17
|
+
async function gracefulShutdown() {
|
|
18
|
+
await shutdownTelemetry();
|
|
19
|
+
process.exit(0);
|
|
20
|
+
}
|
|
21
|
+
process.on("SIGINT", gracefulShutdown);
|
|
22
|
+
process.on("SIGTERM", gracefulShutdown);
|
|
23
|
+
main().catch((error) => {
|
|
24
|
+
console.error("Fatal error:", error);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=backpack-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backpack-app.js","sourceRoot":"","sources":["../../src/bin/backpack-app.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAErE,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAEhD,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,6CAA6C,MAAM,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,MAAM,iBAAiB,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACvC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAExC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/bin/backpack.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
3
|
import { createMcpServer } from "../mcp/server.js";
|
|
4
|
-
import { JsonFileBackend } from "../storage/json-file-backend.js";
|
|
5
4
|
import { loadConfig } from "../core/config.js";
|
|
6
5
|
import { shutdown as shutdownTelemetry } from "../core/telemetry.js";
|
|
7
6
|
async function main() {
|
|
8
7
|
const config = await loadConfig();
|
|
9
|
-
|
|
10
|
-
const backend = new JsonFileBackend(config.dataDir);
|
|
11
|
-
const server = await createMcpServer(backend);
|
|
8
|
+
const server = await createMcpServer({ mode: "local", dataDir: config.dataDir });
|
|
12
9
|
const transport = new StdioServerTransport();
|
|
13
10
|
await server.connect(transport);
|
|
14
11
|
// Log to stderr because stdout is reserved for the MCP protocol
|
package/dist/bin/backpack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backpack.js","sourceRoot":"","sources":["../../src/bin/backpack.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"backpack.js","sourceRoot":"","sources":["../../src/bin/backpack.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAErE,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,gEAAgE;IAChE,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACxD,CAAC;AAED,kDAAkD;AAClD,KAAK,UAAU,gBAAgB;IAC7B,MAAM,iBAAiB,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACvC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAExC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,8 +3,9 @@ export { Graph } from "./core/graph.js";
|
|
|
3
3
|
export { configDir, dataDir, configFile } from "./core/paths.js";
|
|
4
4
|
export { loadConfig } from "./core/config.js";
|
|
5
5
|
export type { BackpackConfig } from "./core/config.js";
|
|
6
|
-
export type { Node, Edge, OntologyData, OntologyMetadata, OntologySummary, NodeSummary, EdgeSummary, NodeTypeInfo, EdgeTypeInfo, ListNodesResult, GetNodeResult, NeighborResult, NeighborEntry,
|
|
6
|
+
export type { Node, Edge, OntologyData, OntologyMetadata, OntologySummary, NodeSummary, EdgeSummary, NodeTypeInfo, EdgeTypeInfo, ListNodesResult, GetNodeResult, NeighborResult, NeighborEntry, } from "./core/types.js";
|
|
7
7
|
export { JsonFileBackend } from "./storage/json-file-backend.js";
|
|
8
8
|
export { initTelemetry, trackEvent, shutdown as shutdownTelemetry } from "./core/telemetry.js";
|
|
9
9
|
export { createMcpServer } from "./mcp/server.js";
|
|
10
|
+
export type { BackpackServerConfig, BackpackLocalConfig, BackpackAppConfig } from "./mcp/server.js";
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EACV,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EACV,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG/F,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkB9C,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/F,qBAAqB;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
|
|
2
|
+
/** Configuration for local file-based storage. */
|
|
3
|
+
export interface BackpackLocalConfig {
|
|
4
|
+
mode: "local";
|
|
5
|
+
dataDir?: string;
|
|
6
|
+
}
|
|
7
|
+
/** Configuration for Backpack App cloud storage. */
|
|
8
|
+
export interface BackpackAppConfig {
|
|
9
|
+
mode: "app";
|
|
10
|
+
url: string;
|
|
11
|
+
token: string;
|
|
12
|
+
}
|
|
13
|
+
export type BackpackServerConfig = BackpackLocalConfig | BackpackAppConfig;
|
|
3
14
|
/**
|
|
4
15
|
* Create and configure the MCP server.
|
|
5
16
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
17
|
+
* Supports two modes:
|
|
18
|
+
* - "local" (default): JSON files on disk
|
|
19
|
+
* - "app": Backpack App cloud API
|
|
8
20
|
*/
|
|
9
|
-
export declare function createMcpServer(
|
|
21
|
+
export declare function createMcpServer(config?: BackpackServerConfig): Promise<McpServer>;
|
|
10
22
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWpE,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE3E;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,SAAS,CAAC,CAqCpB"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { Backpack } from "../core/backpack.js";
|
|
3
3
|
import { JsonFileBackend } from "../storage/json-file-backend.js";
|
|
4
|
+
import { BackpackAppBackend } from "../storage/backpack-app-backend.js";
|
|
4
5
|
import { initTelemetry } from "../core/telemetry.js";
|
|
5
6
|
import { registerOntologyTools } from "./tools/ontology-tools.js";
|
|
6
7
|
import { registerNodeTools } from "./tools/node-tools.js";
|
|
@@ -9,11 +10,18 @@ import { registerBulkTools } from "./tools/bulk-tools.js";
|
|
|
9
10
|
/**
|
|
10
11
|
* Create and configure the MCP server.
|
|
11
12
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
13
|
+
* Supports two modes:
|
|
14
|
+
* - "local" (default): JSON files on disk
|
|
15
|
+
* - "app": Backpack App cloud API
|
|
14
16
|
*/
|
|
15
|
-
export async function createMcpServer(
|
|
16
|
-
|
|
17
|
+
export async function createMcpServer(config) {
|
|
18
|
+
let backend;
|
|
19
|
+
if (!config || config.mode === "local") {
|
|
20
|
+
backend = new JsonFileBackend(config?.dataDir);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
backend = new BackpackAppBackend(config.url, config.token);
|
|
24
|
+
}
|
|
17
25
|
const backpack = new Backpack(backend);
|
|
18
26
|
await backpack.initialize();
|
|
19
27
|
// Initialize telemetry (non-blocking, fails silently)
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAiB1D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAA6B;IAE7B,IAAI,OAAuB,CAAC;IAC5B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvC,OAAO,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;IAE5B,sDAAsD;IACtD,IAAI,CAAC;QAAC,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;;;;;;oLAMgK;KAC/K,CACF,CAAC;IAEF,2BAA2B;IAC3B,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { StorageBackend, OntologyData, OntologySummary } from "../core/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Storage backend that delegates to the Backpack App HTTP API.
|
|
4
|
+
*
|
|
5
|
+
* Expects:
|
|
6
|
+
* - baseUrl: e.g. "https://app.backpackontology.com"
|
|
7
|
+
* - token: a Bearer JWT from the Backpack App token system
|
|
8
|
+
*/
|
|
9
|
+
export declare class BackpackAppBackend implements StorageBackend {
|
|
10
|
+
private baseUrl;
|
|
11
|
+
private token;
|
|
12
|
+
constructor(baseUrl: string, token: string);
|
|
13
|
+
private headers;
|
|
14
|
+
private request;
|
|
15
|
+
initialize(): Promise<void>;
|
|
16
|
+
listOntologies(): Promise<OntologySummary[]>;
|
|
17
|
+
loadOntology(name: string): Promise<OntologyData>;
|
|
18
|
+
saveOntology(name: string, data: OntologyData): Promise<void>;
|
|
19
|
+
createOntology(name: string, description: string): Promise<OntologyData>;
|
|
20
|
+
deleteOntology(name: string): Promise<void>;
|
|
21
|
+
ontologyExists(name: string): Promise<boolean>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=backpack-app-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backpack-app-backend.d.ts","sourceRoot":"","sources":["../../src/storage/backpack-app-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAM1C,OAAO,CAAC,OAAO;YAOD,OAAO;IAaf,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,cAAc,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAK5C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKjD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7D,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAgBxE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAQrD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage backend that delegates to the Backpack App HTTP API.
|
|
3
|
+
*
|
|
4
|
+
* Expects:
|
|
5
|
+
* - baseUrl: e.g. "https://app.backpackontology.com"
|
|
6
|
+
* - token: a Bearer JWT from the Backpack App token system
|
|
7
|
+
*/
|
|
8
|
+
export class BackpackAppBackend {
|
|
9
|
+
baseUrl;
|
|
10
|
+
token;
|
|
11
|
+
constructor(baseUrl, token) {
|
|
12
|
+
// Strip trailing slash
|
|
13
|
+
this.baseUrl = baseUrl.replace(/\/+$/, "");
|
|
14
|
+
this.token = token;
|
|
15
|
+
}
|
|
16
|
+
headers() {
|
|
17
|
+
return {
|
|
18
|
+
Authorization: `Bearer ${this.token}`,
|
|
19
|
+
"Content-Type": "application/json",
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
async request(path, init) {
|
|
23
|
+
const url = `${this.baseUrl}${path}`;
|
|
24
|
+
const res = await fetch(url, {
|
|
25
|
+
...init,
|
|
26
|
+
headers: { ...this.headers(), ...init?.headers },
|
|
27
|
+
});
|
|
28
|
+
if (!res.ok) {
|
|
29
|
+
const body = await res.text().catch(() => "");
|
|
30
|
+
throw new Error(`Backpack App API ${init?.method ?? "GET"} ${path} failed (${res.status}): ${body}`);
|
|
31
|
+
}
|
|
32
|
+
return res;
|
|
33
|
+
}
|
|
34
|
+
async initialize() {
|
|
35
|
+
// Verify connectivity by listing ontologies
|
|
36
|
+
await this.request("/api/ontologies");
|
|
37
|
+
}
|
|
38
|
+
async listOntologies() {
|
|
39
|
+
const res = await this.request("/api/ontologies");
|
|
40
|
+
return (await res.json());
|
|
41
|
+
}
|
|
42
|
+
async loadOntology(name) {
|
|
43
|
+
const res = await this.request(`/api/ontologies/${encodeURIComponent(name)}`);
|
|
44
|
+
return (await res.json());
|
|
45
|
+
}
|
|
46
|
+
async saveOntology(name, data) {
|
|
47
|
+
await this.request(`/api/ontologies/${encodeURIComponent(name)}`, {
|
|
48
|
+
method: "PUT",
|
|
49
|
+
body: JSON.stringify(data),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async createOntology(name, description) {
|
|
53
|
+
const now = new Date().toISOString();
|
|
54
|
+
const data = {
|
|
55
|
+
metadata: { name, description, createdAt: now, updatedAt: now },
|
|
56
|
+
nodes: [],
|
|
57
|
+
edges: [],
|
|
58
|
+
};
|
|
59
|
+
await this.request("/api/ontologies", {
|
|
60
|
+
method: "POST",
|
|
61
|
+
body: JSON.stringify({ name, description, data }),
|
|
62
|
+
});
|
|
63
|
+
return data;
|
|
64
|
+
}
|
|
65
|
+
async deleteOntology(name) {
|
|
66
|
+
await this.request(`/api/ontologies/${encodeURIComponent(name)}`, {
|
|
67
|
+
method: "DELETE",
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async ontologyExists(name) {
|
|
71
|
+
try {
|
|
72
|
+
await this.request(`/api/ontologies/${encodeURIComponent(name)}`);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=backpack-app-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backpack-app-backend.js","sourceRoot":"","sources":["../../src/storage/backpack-app-backend.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "backpack-ontology",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "A persistent ontology engine for Claude Code via MCP — progressive discovery of structured knowledge graphs",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Noah Irzinger",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"bin": {
|
|
9
9
|
"backpack": "./dist/bin/backpack.js",
|
|
10
|
+
"backpack-app": "./dist/bin/backpack-app.js",
|
|
10
11
|
"backpack-init": "./dist/bin/init.js"
|
|
11
12
|
},
|
|
12
13
|
"main": "./dist/index.js",
|