backpack-ontology 0.7.13 → 0.8.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.
Files changed (128) hide show
  1. package/README.md +123 -0
  2. package/dist/bin/bp.d.ts +3 -0
  3. package/dist/bin/bp.d.ts.map +1 -0
  4. package/dist/bin/bp.js +6 -0
  5. package/dist/bin/bp.js.map +1 -0
  6. package/dist/cli/colors.d.ts +20 -0
  7. package/dist/cli/colors.d.ts.map +1 -0
  8. package/dist/cli/colors.js +34 -0
  9. package/dist/cli/colors.js.map +1 -0
  10. package/dist/cli/commands/auth.d.ts +4 -0
  11. package/dist/cli/commands/auth.d.ts.map +1 -0
  12. package/dist/cli/commands/auth.js +48 -0
  13. package/dist/cli/commands/auth.js.map +1 -0
  14. package/dist/cli/commands/cat.d.ts +3 -0
  15. package/dist/cli/commands/cat.d.ts.map +1 -0
  16. package/dist/cli/commands/cat.js +28 -0
  17. package/dist/cli/commands/cat.js.map +1 -0
  18. package/dist/cli/commands/cloud-admin.d.ts +7 -0
  19. package/dist/cli/commands/cloud-admin.d.ts.map +1 -0
  20. package/dist/cli/commands/cloud-admin.js +169 -0
  21. package/dist/cli/commands/cloud-admin.js.map +1 -0
  22. package/dist/cli/commands/completion.d.ts +3 -0
  23. package/dist/cli/commands/completion.d.ts.map +1 -0
  24. package/dist/cli/commands/completion.js +156 -0
  25. package/dist/cli/commands/completion.js.map +1 -0
  26. package/dist/cli/commands/containers.d.ts +3 -0
  27. package/dist/cli/commands/containers.d.ts.map +1 -0
  28. package/dist/cli/commands/containers.js +29 -0
  29. package/dist/cli/commands/containers.js.map +1 -0
  30. package/dist/cli/commands/context.d.ts +4 -0
  31. package/dist/cli/commands/context.d.ts.map +1 -0
  32. package/dist/cli/commands/context.js +59 -0
  33. package/dist/cli/commands/context.js.map +1 -0
  34. package/dist/cli/commands/doctor.d.ts +3 -0
  35. package/dist/cli/commands/doctor.d.ts.map +1 -0
  36. package/dist/cli/commands/doctor.js +65 -0
  37. package/dist/cli/commands/doctor.js.map +1 -0
  38. package/dist/cli/commands/graphs.d.ts +3 -0
  39. package/dist/cli/commands/graphs.d.ts.map +1 -0
  40. package/dist/cli/commands/graphs.js +57 -0
  41. package/dist/cli/commands/graphs.js.map +1 -0
  42. package/dist/cli/commands/init.d.ts +3 -0
  43. package/dist/cli/commands/init.d.ts.map +1 -0
  44. package/dist/cli/commands/init.js +46 -0
  45. package/dist/cli/commands/init.js.map +1 -0
  46. package/dist/cli/commands/kbs.d.ts +3 -0
  47. package/dist/cli/commands/kbs.d.ts.map +1 -0
  48. package/dist/cli/commands/kbs.js +247 -0
  49. package/dist/cli/commands/kbs.js.map +1 -0
  50. package/dist/cli/commands/ls.d.ts +3 -0
  51. package/dist/cli/commands/ls.d.ts.map +1 -0
  52. package/dist/cli/commands/ls.js +81 -0
  53. package/dist/cli/commands/ls.js.map +1 -0
  54. package/dist/cli/commands/mutate.d.ts +7 -0
  55. package/dist/cli/commands/mutate.d.ts.map +1 -0
  56. package/dist/cli/commands/mutate.js +241 -0
  57. package/dist/cli/commands/mutate.js.map +1 -0
  58. package/dist/cli/commands/open.d.ts +3 -0
  59. package/dist/cli/commands/open.d.ts.map +1 -0
  60. package/dist/cli/commands/open.js +88 -0
  61. package/dist/cli/commands/open.js.map +1 -0
  62. package/dist/cli/commands/search.d.ts +3 -0
  63. package/dist/cli/commands/search.d.ts.map +1 -0
  64. package/dist/cli/commands/search.js +59 -0
  65. package/dist/cli/commands/search.js.map +1 -0
  66. package/dist/cli/commands/show.d.ts +3 -0
  67. package/dist/cli/commands/show.d.ts.map +1 -0
  68. package/dist/cli/commands/show.js +74 -0
  69. package/dist/cli/commands/show.js.map +1 -0
  70. package/dist/cli/commands/version.d.ts +2 -0
  71. package/dist/cli/commands/version.d.ts.map +1 -0
  72. package/dist/cli/commands/version.js +16 -0
  73. package/dist/cli/commands/version.js.map +1 -0
  74. package/dist/cli/help.d.ts +3 -0
  75. package/dist/cli/help.d.ts.map +1 -0
  76. package/dist/cli/help.js +118 -0
  77. package/dist/cli/help.js.map +1 -0
  78. package/dist/cli/output.d.ts +23 -0
  79. package/dist/cli/output.d.ts.map +1 -0
  80. package/dist/cli/output.js +189 -0
  81. package/dist/cli/output.js.map +1 -0
  82. package/dist/cli/parser.d.ts +9 -0
  83. package/dist/cli/parser.d.ts.map +1 -0
  84. package/dist/cli/parser.js +106 -0
  85. package/dist/cli/parser.js.map +1 -0
  86. package/dist/cli/router.d.ts +2 -0
  87. package/dist/cli/router.d.ts.map +1 -0
  88. package/dist/cli/router.js +123 -0
  89. package/dist/cli/router.js.map +1 -0
  90. package/dist/cli/util/confirm.d.ts +3 -0
  91. package/dist/cli/util/confirm.d.ts.map +1 -0
  92. package/dist/cli/util/confirm.js +37 -0
  93. package/dist/cli/util/confirm.js.map +1 -0
  94. package/dist/core/backpack.d.ts +1 -92
  95. package/dist/core/backpack.d.ts.map +1 -1
  96. package/dist/core/backpack.js +23 -127
  97. package/dist/core/backpack.js.map +1 -1
  98. package/dist/core/backpacks-registry.d.ts +2 -2
  99. package/dist/core/backpacks-registry.js +2 -2
  100. package/dist/mcp/tools/cloud-tools.d.ts +2 -3
  101. package/dist/mcp/tools/cloud-tools.d.ts.map +1 -1
  102. package/dist/mcp/tools/cloud-tools.js +240 -81
  103. package/dist/mcp/tools/cloud-tools.js.map +1 -1
  104. package/dist/mcp/tools/share-tools.js +1 -1
  105. package/dist/mcp/tools/share-tools.js.map +1 -1
  106. package/dist/mcp/tools/signal-tools.js +1 -1
  107. package/dist/mcp/tools/signal-tools.js.map +1 -1
  108. package/dist/ops/auth.d.ts +25 -0
  109. package/dist/ops/auth.d.ts.map +1 -0
  110. package/dist/ops/auth.js +144 -0
  111. package/dist/ops/auth.js.map +1 -0
  112. package/dist/ops/containers.d.ts +25 -0
  113. package/dist/ops/containers.d.ts.map +1 -0
  114. package/dist/ops/containers.js +144 -0
  115. package/dist/ops/containers.js.map +1 -0
  116. package/dist/ops/context.d.ts +30 -0
  117. package/dist/ops/context.d.ts.map +1 -0
  118. package/dist/ops/context.js +133 -0
  119. package/dist/ops/context.js.map +1 -0
  120. package/dist/ops/graphs.d.ts +48 -0
  121. package/dist/ops/graphs.d.ts.map +1 -0
  122. package/dist/ops/graphs.js +249 -0
  123. package/dist/ops/graphs.js.map +1 -0
  124. package/dist/ops/kb.d.ts +28 -0
  125. package/dist/ops/kb.d.ts.map +1 -0
  126. package/dist/ops/kb.js +162 -0
  127. package/dist/ops/kb.js.map +1 -0
  128. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/ops/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { LearningGraphData } from "../core/types.js";
2
+ export interface GraphSummary {
3
+ name: string;
4
+ description?: string;
5
+ tags?: string[];
6
+ nodeCount: number;
7
+ edgeCount: number;
8
+ encrypted?: boolean;
9
+ sourceBackpack?: string;
10
+ origin: "local" | "cloud";
11
+ }
12
+ export declare function listGraphs(): Promise<GraphSummary[]>;
13
+ export type GraphFetchResult = {
14
+ kind: "ok";
15
+ data: LearningGraphData;
16
+ } | {
17
+ kind: "missing";
18
+ } | {
19
+ kind: "encrypted";
20
+ };
21
+ export declare function getGraph(name: string): Promise<GraphFetchResult>;
22
+ export declare function getGraphSummary(name: string): Promise<GraphSummary | null>;
23
+ export declare function createGraph(name: string, opts?: {
24
+ description?: string;
25
+ }): Promise<void>;
26
+ export declare function deleteGraph(name: string): Promise<void>;
27
+ export declare function renameGraph(oldName: string, newName: string): Promise<void>;
28
+ export declare function applyGraph(name: string, data: LearningGraphData): Promise<{
29
+ created: boolean;
30
+ }>;
31
+ export interface SearchHit {
32
+ graphName: string;
33
+ nodeId: string;
34
+ nodeType: string;
35
+ label: string;
36
+ }
37
+ export interface SearchResult {
38
+ hits: SearchHit[];
39
+ graphsScanned: number;
40
+ graphsInScope: number;
41
+ graphsSkipped: number;
42
+ truncated: boolean;
43
+ }
44
+ export declare function searchGraphs(query: string, opts?: {
45
+ hitsPerGraph?: number;
46
+ maxGraphs?: number;
47
+ }): Promise<SearchResult>;
48
+ //# sourceMappingURL=graphs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphs.d.ts","sourceRoot":"","sources":["../../src/ops/graphs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAK1D,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;AAkCD,wBAAsB,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAgC1D;AACD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,iBAAiB,CAAC;CAC3B,GAAG;IACA,IAAI,EAAE,SAAS,CAAC;CACnB,GAAG;IACA,IAAI,EAAE,WAAW,CAAC;CACrB,CAAC;AACF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiCtE;AACD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAGhF;AACD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BrB;AACD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB7D;AACD,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBjF;AACD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAC7E,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC,CA4BD;AACD,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACtB;AAGD,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,YAAY,CAAC,CA0C7B"}
@@ -0,0 +1,249 @@
1
+ import { Backpack } from "../core/backpack.js";
2
+ import { JsonFileBackend } from "../storage/json-file-backend.js";
3
+ import { getContext } from "./context.js";
4
+ import { resolveCloudToken, getRelayUrl, assertSafeRelay } from "./auth.js";
5
+ async function localBackpack() {
6
+ const ctx = await getContext();
7
+ if (ctx.source !== "local" || !ctx.backpackPath) {
8
+ throw new Error("active context is not a local backpack");
9
+ }
10
+ const backend = new JsonFileBackend(undefined, { graphsDirOverride: ctx.backpackPath });
11
+ await backend.initialize();
12
+ return new Backpack(backend);
13
+ }
14
+ async function fetchCloudGraphs(token) {
15
+ assertSafeRelay(getRelayUrl());
16
+ const res = await fetch(`${getRelayUrl()}/api/graphs`, {
17
+ headers: { Authorization: `Bearer ${token}` },
18
+ });
19
+ if (!res.ok) {
20
+ if (res.status === 401)
21
+ throw new Error("cloud session expired — run `bp login` to refresh");
22
+ throw new Error(`cloud /api/graphs returned HTTP ${res.status}`);
23
+ }
24
+ const body = await res.json();
25
+ return Array.isArray(body) ? body : [];
26
+ }
27
+ export async function listGraphs() {
28
+ const ctx = await getContext();
29
+ if (ctx.source === "local") {
30
+ const bp = await localBackpack();
31
+ const summaries = await bp.listOntologies();
32
+ return summaries.map((s) => ({
33
+ name: s.name,
34
+ description: s.description,
35
+ tags: s.tags,
36
+ nodeCount: s.nodeCount,
37
+ edgeCount: s.edgeCount,
38
+ origin: "local",
39
+ }));
40
+ }
41
+ const token = await resolveCloudToken();
42
+ if (!token)
43
+ throw new Error("not signed in — run `bp login` first");
44
+ const rows = await fetchCloudGraphs(token);
45
+ const wantContainer = (ctx.cloudContainer ?? "").trim();
46
+ const filtered = wantContainer
47
+ ? rows.filter((g) => g.sourceBackpack === wantContainer)
48
+ : rows;
49
+ return filtered.map((g) => ({
50
+ name: g.name,
51
+ description: g.description,
52
+ tags: [],
53
+ nodeCount: g.nodeCount ?? 0,
54
+ edgeCount: g.edgeCount ?? 0,
55
+ encrypted: g.encrypted,
56
+ sourceBackpack: g.sourceBackpack,
57
+ origin: "cloud",
58
+ }));
59
+ }
60
+ export async function getGraph(name) {
61
+ const ctx = await getContext();
62
+ if (ctx.source === "local") {
63
+ const bp = await localBackpack();
64
+ try {
65
+ const data = await bp.loadOntology(name);
66
+ return { kind: "ok", data };
67
+ }
68
+ catch (err) {
69
+ const msg = err.message;
70
+ if (/not found/i.test(msg))
71
+ return { kind: "missing" };
72
+ throw err;
73
+ }
74
+ }
75
+ const token = await resolveCloudToken();
76
+ if (!token)
77
+ throw new Error("not signed in — run `bp login` first");
78
+ assertSafeRelay(getRelayUrl());
79
+ const res = await fetch(`${getRelayUrl()}/api/graphs/${encodeURIComponent(name)}`, {
80
+ headers: { Authorization: `Bearer ${token}` },
81
+ });
82
+ if (res.status === 404)
83
+ return { kind: "missing" };
84
+ if (!res.ok) {
85
+ if (res.status === 401)
86
+ throw new Error("cloud session expired — run `bp login` to refresh");
87
+ throw new Error(`cloud /api/graphs/${name} returned HTTP ${res.status}`);
88
+ }
89
+ const data = await res.json();
90
+ if (data === null)
91
+ return { kind: "encrypted" };
92
+ return { kind: "ok", data: data };
93
+ }
94
+ export async function getGraphSummary(name) {
95
+ const all = await listGraphs();
96
+ return all.find((g) => g.name === name) ?? null;
97
+ }
98
+ export async function createGraph(name, opts = {}) {
99
+ const ctx = await getContext();
100
+ if (ctx.source === "local") {
101
+ const bp = await localBackpack();
102
+ await bp.createOntology(name, opts.description ?? "");
103
+ return;
104
+ }
105
+ const token = await resolveCloudToken();
106
+ if (!token)
107
+ throw new Error("not signed in — run `bp login` first");
108
+ assertSafeRelay(getRelayUrl());
109
+ const now = new Date().toISOString();
110
+ const empty = {
111
+ metadata: { name, description: opts.description ?? "", createdAt: now, updatedAt: now },
112
+ nodes: [],
113
+ edges: [],
114
+ };
115
+ const res = await fetch(`${getRelayUrl()}/api/graphs/${encodeURIComponent(name)}`, {
116
+ method: "PUT",
117
+ headers: { "Content-Type": "application/json", "Authorization": `Bearer ${token}` },
118
+ body: JSON.stringify(empty),
119
+ });
120
+ if (!res.ok) {
121
+ if (res.status === 401)
122
+ throw new Error("cloud session expired — run `bp login` to refresh");
123
+ throw new Error(`cloud create returned HTTP ${res.status}`);
124
+ }
125
+ }
126
+ export async function deleteGraph(name) {
127
+ const ctx = await getContext();
128
+ if (ctx.source === "local") {
129
+ const bp = await localBackpack();
130
+ await bp.deleteOntology(name);
131
+ return;
132
+ }
133
+ const token = await resolveCloudToken();
134
+ if (!token)
135
+ throw new Error("not signed in — run `bp login` first");
136
+ assertSafeRelay(getRelayUrl());
137
+ const res = await fetch(`${getRelayUrl()}/api/graphs/${encodeURIComponent(name)}`, {
138
+ method: "DELETE",
139
+ headers: { Authorization: `Bearer ${token}` },
140
+ });
141
+ if (res.status === 404)
142
+ throw new Error(`graph "${name}" not found in the current scope`);
143
+ if (!res.ok) {
144
+ if (res.status === 401)
145
+ throw new Error("cloud session expired — run `bp login` to refresh");
146
+ throw new Error(`cloud delete returned HTTP ${res.status}`);
147
+ }
148
+ }
149
+ export async function renameGraph(oldName, newName) {
150
+ const ctx = await getContext();
151
+ if (ctx.source === "local") {
152
+ const bp = await localBackpack();
153
+ await bp.renameOntology(oldName, newName);
154
+ return;
155
+ }
156
+ const token = await resolveCloudToken();
157
+ if (!token)
158
+ throw new Error("not signed in — run `bp login` first");
159
+ assertSafeRelay(getRelayUrl());
160
+ const res = await fetch(`${getRelayUrl()}/api/graphs/${encodeURIComponent(oldName)}/rename`, {
161
+ method: "POST",
162
+ headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}` },
163
+ body: JSON.stringify({ name: newName }),
164
+ });
165
+ if (res.status === 404)
166
+ throw new Error(`graph "${oldName}" not found in the current scope`);
167
+ if (!res.ok) {
168
+ if (res.status === 401)
169
+ throw new Error("cloud session expired — run `bp login` to refresh");
170
+ if (res.status === 409)
171
+ throw new Error(`a graph named "${newName}" already exists`);
172
+ throw new Error(`cloud rename returned HTTP ${res.status}`);
173
+ }
174
+ }
175
+ export async function applyGraph(name, data) {
176
+ const ctx = await getContext();
177
+ if (ctx.source === "local") {
178
+ const bp = await localBackpack();
179
+ const exists = await bp.ontologyExists(name);
180
+ if (exists) {
181
+ await bp.saveOntologyData(name, data);
182
+ }
183
+ else {
184
+ await bp.createOntologyFromData(name, data);
185
+ }
186
+ return { created: !exists };
187
+ }
188
+ const token = await resolveCloudToken();
189
+ if (!token)
190
+ throw new Error("not signed in — run `bp login` first");
191
+ assertSafeRelay(getRelayUrl());
192
+ const res = await fetch(`${getRelayUrl()}/api/graphs/${encodeURIComponent(name)}`, {
193
+ method: "PUT",
194
+ headers: { "Content-Type": "application/json", "Authorization": `Bearer ${token}` },
195
+ body: JSON.stringify(data),
196
+ });
197
+ if (!res.ok) {
198
+ if (res.status === 401)
199
+ throw new Error("cloud session expired — run `bp login` to refresh");
200
+ throw new Error(`cloud apply returned HTTP ${res.status}`);
201
+ }
202
+ return { created: false };
203
+ }
204
+ const SEARCH_DEFAULT_MAX_GRAPHS = 50;
205
+ const SEARCH_DEFAULT_HITS_PER_GRAPH = 5;
206
+ export async function searchGraphs(query, opts = {}) {
207
+ const trimmed = query.trim();
208
+ if (!trimmed) {
209
+ return { hits: [], graphsScanned: 0, graphsInScope: 0, graphsSkipped: 0, truncated: false };
210
+ }
211
+ const q = trimmed.toLowerCase();
212
+ const hitsPerGraph = opts.hitsPerGraph ?? SEARCH_DEFAULT_HITS_PER_GRAPH;
213
+ const maxGraphs = opts.maxGraphs ?? SEARCH_DEFAULT_MAX_GRAPHS;
214
+ const summaries = await listGraphs();
215
+ const scannable = summaries.filter((s) => !s.encrypted);
216
+ const truncated = scannable.length > maxGraphs;
217
+ const targets = scannable.slice(0, maxGraphs);
218
+ const hits = [];
219
+ for (const s of targets) {
220
+ let result;
221
+ try {
222
+ result = await getGraph(s.name);
223
+ }
224
+ catch {
225
+ continue;
226
+ }
227
+ if (result.kind !== "ok")
228
+ continue;
229
+ let countInThis = 0;
230
+ for (const n of result.data.nodes) {
231
+ const label = Object.values(n.properties ?? {}).find((v) => typeof v === "string") ?? n.id;
232
+ const haystack = (n.type + " " + Object.values(n.properties ?? {}).filter((v) => typeof v === "string").join(" ")).toLowerCase();
233
+ if (haystack.includes(q)) {
234
+ hits.push({ graphName: s.name, nodeId: n.id, nodeType: n.type, label });
235
+ countInThis++;
236
+ if (countInThis >= hitsPerGraph)
237
+ break;
238
+ }
239
+ }
240
+ }
241
+ return {
242
+ hits,
243
+ graphsScanned: targets.length,
244
+ graphsInScope: summaries.length,
245
+ graphsSkipped: summaries.length - targets.length,
246
+ truncated,
247
+ };
248
+ }
249
+ //# sourceMappingURL=graphs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphs.js","sourceRoot":"","sources":["../../src/ops/graphs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface KBSummary {
2
+ id: string;
3
+ title: string;
4
+ tags: string[];
5
+ sourceGraphs: string[];
6
+ collection?: string;
7
+ sourceBackpack?: string;
8
+ origin: "local" | "cloud";
9
+ }
10
+ export declare function listKB(): Promise<KBSummary[]>;
11
+ export interface KBDocument extends KBSummary {
12
+ content: string;
13
+ }
14
+ export interface KBSaveInput {
15
+ id?: string;
16
+ title: string;
17
+ content: string;
18
+ tags?: string[];
19
+ sourceGraphs?: string[];
20
+ collection?: string;
21
+ }
22
+ export declare function saveKB(input: KBSaveInput): Promise<{
23
+ id: string;
24
+ created: boolean;
25
+ }>;
26
+ export declare function deleteKB(id: string): Promise<void>;
27
+ export declare function getKB(id: string): Promise<KBDocument | null>;
28
+ //# sourceMappingURL=kb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kb.d.ts","sourceRoot":"","sources":["../../src/ops/kb.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;AAuBD,wBAAsB,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CA4CnD;AACD,MAAM,WAAW,UAAW,SAAQ,SAAS;IACzC,OAAO,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,WAAW;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AACD,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC,CAoCD;AACD,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBxD;AACD,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA4ClE"}
package/dist/ops/kb.js ADDED
@@ -0,0 +1,162 @@
1
+ import { DocumentStore } from "../core/document-store.js";
2
+ import { getKBMounts } from "../core/backpacks-registry.js";
3
+ import { getContext } from "./context.js";
4
+ import { resolveCloudToken, getRelayUrl, assertSafeRelay } from "./auth.js";
5
+ async function localStore() {
6
+ const ctx = await getContext();
7
+ if (ctx.source !== "local" || !ctx.backpackPath) {
8
+ throw new Error("active context is not a local backpack");
9
+ }
10
+ const mountConfigs = await getKBMounts(ctx.backpackPath);
11
+ const mounts = mountConfigs.map((m) => ({
12
+ name: m.name,
13
+ path: m.path,
14
+ writable: m.writable !== false,
15
+ }));
16
+ return new DocumentStore(mounts);
17
+ }
18
+ export async function listKB() {
19
+ const ctx = await getContext();
20
+ if (ctx.source === "local") {
21
+ const store = await localStore();
22
+ const result = await store.list({ limit: 1000 });
23
+ return result.documents.map((d) => ({
24
+ id: d.id,
25
+ title: d.title,
26
+ tags: d.tags ?? [],
27
+ sourceGraphs: d.sourceGraphs ?? [],
28
+ collection: d.collection,
29
+ origin: "local",
30
+ }));
31
+ }
32
+ const token = await resolveCloudToken();
33
+ if (!token)
34
+ throw new Error("not signed in — run `bp login` first");
35
+ assertSafeRelay(getRelayUrl());
36
+ const res = await fetch(`${getRelayUrl()}/api/kb/documents?limit=1000`, {
37
+ headers: { Authorization: `Bearer ${token}` },
38
+ });
39
+ if (!res.ok) {
40
+ if (res.status === 404)
41
+ return [];
42
+ if (res.status === 401)
43
+ throw new Error("cloud session expired — run `bp login` to refresh");
44
+ throw new Error(`cloud /api/kb/documents returned HTTP ${res.status}`);
45
+ }
46
+ const body = await res.json();
47
+ const all = (body.documents ?? []).map((d) => ({
48
+ id: d.id,
49
+ title: d.title ?? d.id,
50
+ tags: d.tags ?? [],
51
+ sourceGraphs: d.sourceGraphs ?? [],
52
+ collection: d.collection,
53
+ sourceBackpack: d.sourceBackpack,
54
+ origin: "cloud",
55
+ }));
56
+ const wantContainer = (ctx.cloudContainer ?? "").trim();
57
+ return wantContainer
58
+ ? all.filter((d) => d.sourceBackpack === wantContainer)
59
+ : all;
60
+ }
61
+ export async function saveKB(input) {
62
+ const ctx = await getContext();
63
+ if (ctx.source === "local") {
64
+ const store = await localStore();
65
+ const before = input.id ? await store.read(input.id).catch(() => null) : null;
66
+ const saved = await store.save(input);
67
+ return { id: saved.id, created: !before };
68
+ }
69
+ const token = await resolveCloudToken();
70
+ if (!token)
71
+ throw new Error("not signed in — run `bp login` first");
72
+ assertSafeRelay(getRelayUrl());
73
+ const haveId = !!input.id;
74
+ const url = haveId
75
+ ? `${getRelayUrl()}/api/kb/documents/${encodeURIComponent(input.id)}`
76
+ : `${getRelayUrl()}/api/kb/documents`;
77
+ const res = await fetch(url, {
78
+ method: haveId ? "PUT" : "POST",
79
+ headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}` },
80
+ body: JSON.stringify({
81
+ title: input.title,
82
+ content: input.content,
83
+ tags: input.tags ?? [],
84
+ sourceGraphs: input.sourceGraphs ?? [],
85
+ collection: input.collection,
86
+ }),
87
+ });
88
+ if (!res.ok) {
89
+ if (res.status === 401)
90
+ throw new Error("cloud session expired — run `bp login` to refresh");
91
+ throw new Error(`cloud KB save returned HTTP ${res.status}`);
92
+ }
93
+ const body = await res.json();
94
+ return { id: body.id, created: res.status === 201 };
95
+ }
96
+ export async function deleteKB(id) {
97
+ const ctx = await getContext();
98
+ if (ctx.source === "local") {
99
+ const store = await localStore();
100
+ await store.delete(id);
101
+ return;
102
+ }
103
+ const token = await resolveCloudToken();
104
+ if (!token)
105
+ throw new Error("not signed in — run `bp login` first");
106
+ assertSafeRelay(getRelayUrl());
107
+ const res = await fetch(`${getRelayUrl()}/api/kb/documents/${encodeURIComponent(id)}`, {
108
+ method: "DELETE",
109
+ headers: { Authorization: `Bearer ${token}` },
110
+ });
111
+ if (res.status === 404)
112
+ throw new Error(`kb doc "${id}" not found`);
113
+ if (!res.ok) {
114
+ if (res.status === 401)
115
+ throw new Error("cloud session expired — run `bp login` to refresh");
116
+ throw new Error(`cloud KB delete returned HTTP ${res.status}`);
117
+ }
118
+ }
119
+ export async function getKB(id) {
120
+ const ctx = await getContext();
121
+ if (ctx.source === "local") {
122
+ const store = await localStore();
123
+ const doc = await store.read(id);
124
+ if (!doc)
125
+ return null;
126
+ return {
127
+ id: doc.id,
128
+ title: doc.title,
129
+ tags: doc.tags ?? [],
130
+ sourceGraphs: doc.sourceGraphs ?? [],
131
+ collection: doc.collection,
132
+ content: doc.content,
133
+ origin: "local",
134
+ };
135
+ }
136
+ const token = await resolveCloudToken();
137
+ if (!token)
138
+ throw new Error("not signed in — run `bp login` first");
139
+ assertSafeRelay(getRelayUrl());
140
+ const res = await fetch(`${getRelayUrl()}/api/kb/documents/${encodeURIComponent(id)}`, {
141
+ headers: { Authorization: `Bearer ${token}` },
142
+ });
143
+ if (res.status === 404)
144
+ return null;
145
+ if (!res.ok) {
146
+ if (res.status === 401)
147
+ throw new Error("cloud session expired — run `bp login` to refresh");
148
+ throw new Error(`cloud /api/kb/documents/${id} returned HTTP ${res.status}`);
149
+ }
150
+ const d = await res.json();
151
+ return {
152
+ id: d.id,
153
+ title: d.title ?? d.id,
154
+ tags: d.tags ?? [],
155
+ sourceGraphs: d.sourceGraphs ?? [],
156
+ collection: d.collection,
157
+ sourceBackpack: d.sourceBackpack,
158
+ content: d.content ?? "",
159
+ origin: "cloud",
160
+ };
161
+ }
162
+ //# sourceMappingURL=kb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kb.js","sourceRoot":"","sources":["../../src/ops/kb.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "backpack-ontology",
3
- "version": "0.7.13",
3
+ "version": "0.8.1",
4
4
  "description": "A persistent learning graph engine for Claude Code via MCP — structured knowledge that carries forward across sessions",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Noah Irzinger",
@@ -11,7 +11,8 @@
11
11
  "backpack-sync": "./dist/bin/backpack-sync.js",
12
12
  "backpack-init": "./dist/bin/init.js",
13
13
  "backpack-benchmark": "./dist/bin/backpack-benchmark.js",
14
- "backpack": "./dist/bin/backpack.js"
14
+ "backpack": "./dist/bin/backpack.js",
15
+ "bp": "./dist/bin/bp.js"
15
16
  },
16
17
  "main": "./dist/index.js",
17
18
  "types": "./dist/index.d.ts",