backpack-ontology 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/bin/backpack-sync.js +49 -3
  2. package/dist/bin/backpack-sync.js.map +1 -1
  3. package/dist/core/backpack.d.ts +7 -0
  4. package/dist/core/backpack.d.ts.map +1 -1
  5. package/dist/core/backpack.js +24 -1
  6. package/dist/core/backpack.js.map +1 -1
  7. package/dist/core/backpacks-registry.d.ts +22 -0
  8. package/dist/core/backpacks-registry.d.ts.map +1 -1
  9. package/dist/core/backpacks-registry.js +67 -0
  10. package/dist/core/backpacks-registry.js.map +1 -1
  11. package/dist/core/document-store.d.ts +94 -0
  12. package/dist/core/document-store.d.ts.map +1 -0
  13. package/dist/core/document-store.js +430 -0
  14. package/dist/core/document-store.js.map +1 -0
  15. package/dist/index.d.ts +6 -3
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +5 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/mcp/server.d.ts.map +1 -1
  20. package/dist/mcp/server.js +2 -0
  21. package/dist/mcp/server.js.map +1 -1
  22. package/dist/mcp/tools/kb-tools.d.ts +4 -0
  23. package/dist/mcp/tools/kb-tools.d.ts.map +1 -0
  24. package/dist/mcp/tools/kb-tools.js +229 -0
  25. package/dist/mcp/tools/kb-tools.js.map +1 -0
  26. package/dist/mcp/tools/share-tools.d.ts.map +1 -1
  27. package/dist/mcp/tools/share-tools.js +118 -3
  28. package/dist/mcp/tools/share-tools.js.map +1 -1
  29. package/dist/sharing/envelope.d.ts +2 -0
  30. package/dist/sharing/envelope.d.ts.map +1 -1
  31. package/dist/sharing/envelope.js +1 -0
  32. package/dist/sharing/envelope.js.map +1 -1
  33. package/dist/sharing/index.d.ts +1 -1
  34. package/dist/sharing/index.d.ts.map +1 -1
  35. package/dist/sharing/index.js +1 -1
  36. package/dist/sharing/index.js.map +1 -1
  37. package/dist/sharing/relay.d.ts +0 -10
  38. package/dist/sharing/relay.d.ts.map +1 -1
  39. package/dist/sharing/relay.js +0 -28
  40. package/dist/sharing/relay.js.map +1 -1
  41. package/package.json +2 -1
@@ -0,0 +1,430 @@
1
+ // ============================================================
2
+ // Knowledge Base document store.
3
+ //
4
+ // Manages markdown documents with YAML frontmatter across one or
5
+ // more named filesystem mounts. Each mount is a directory tree of
6
+ // .md files. Mounts can be writable or read-only.
7
+ //
8
+ // Documents are backpack-level, not graph-level. A document can
9
+ // reference multiple graphs via sourceGraphs metadata.
10
+ // ============================================================
11
+ import * as fs from "node:fs/promises";
12
+ import * as path from "node:path";
13
+ // --- Frontmatter helpers ---
14
+ /** Quote a YAML scalar if it contains characters that would break parsing. */
15
+ function yamlQuote(val) {
16
+ if (/[\n\r:#"'{}[\],&*?|>!%@`]/.test(val) || val.trim() !== val) {
17
+ return `"${val.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
18
+ }
19
+ return val;
20
+ }
21
+ function serializeFrontmatter(meta) {
22
+ const lines = ["---"];
23
+ lines.push(`id: ${yamlQuote(meta.id)}`);
24
+ lines.push(`title: ${yamlQuote(meta.title)}`);
25
+ if (meta.tags.length > 0) {
26
+ lines.push("tags:");
27
+ for (const t of meta.tags)
28
+ lines.push(` - ${yamlQuote(t)}`);
29
+ }
30
+ if (meta.sourceGraphs.length > 0) {
31
+ lines.push("sourceGraphs:");
32
+ for (const g of meta.sourceGraphs)
33
+ lines.push(` - ${yamlQuote(g)}`);
34
+ }
35
+ if (meta.sourceNodeIds.length > 0) {
36
+ lines.push("sourceNodeIds:");
37
+ for (const n of meta.sourceNodeIds)
38
+ lines.push(` - ${yamlQuote(n)}`);
39
+ }
40
+ lines.push(`createdAt: ${meta.createdAt}`);
41
+ lines.push(`updatedAt: ${meta.updatedAt}`);
42
+ lines.push("---");
43
+ return lines.join("\n");
44
+ }
45
+ /** Strip surrounding quotes from a YAML scalar value. */
46
+ function yamlUnquote(val) {
47
+ const t = val.trim();
48
+ if ((t.startsWith('"') && t.endsWith('"')) || (t.startsWith("'") && t.endsWith("'"))) {
49
+ return t.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\");
50
+ }
51
+ return t;
52
+ }
53
+ function parseFrontmatter(raw) {
54
+ const trimmed = raw.replace(/^\uFEFF/, "").replace(/\r\n/g, "\n"); // strip BOM + normalize line endings
55
+ if (!trimmed.startsWith("---")) {
56
+ return { meta: {}, content: trimmed };
57
+ }
58
+ const endIdx = trimmed.indexOf("\n---", 3);
59
+ if (endIdx === -1) {
60
+ return { meta: {}, content: trimmed };
61
+ }
62
+ const frontBlock = trimmed.slice(4, endIdx); // skip opening "---\n"
63
+ const content = trimmed.slice(endIdx + 4).replace(/^\n/, ""); // skip closing "---\n"
64
+ const meta = {};
65
+ let currentArray = null;
66
+ let currentKey = null;
67
+ for (const line of frontBlock.split("\n")) {
68
+ const listMatch = line.match(/^\s+-\s+(.+)$/);
69
+ if (listMatch && currentArray) {
70
+ currentArray.push(yamlUnquote(listMatch[1]));
71
+ continue;
72
+ }
73
+ // Flush previous array
74
+ if (currentKey && currentArray) {
75
+ meta[currentKey] = currentArray;
76
+ currentArray = null;
77
+ currentKey = null;
78
+ }
79
+ const kvMatch = line.match(/^(\w+):\s*(.*)$/);
80
+ if (!kvMatch)
81
+ continue;
82
+ const [, key, value] = kvMatch;
83
+ if (value === "" || value === undefined) {
84
+ // Start of a list
85
+ currentKey = key;
86
+ currentArray = [];
87
+ }
88
+ else {
89
+ meta[key] = yamlUnquote(value);
90
+ }
91
+ }
92
+ // Flush trailing array
93
+ if (currentKey && currentArray) {
94
+ meta[currentKey] = currentArray;
95
+ }
96
+ // Normalize array fields
97
+ for (const field of ["tags", "sourceGraphs", "sourceNodeIds"]) {
98
+ const val = meta[field];
99
+ if (typeof val === "string") {
100
+ // Inline array: [a, b, c]
101
+ if (val.startsWith("[") && val.endsWith("]")) {
102
+ meta[field] = val
103
+ .slice(1, -1)
104
+ .split(",")
105
+ .map((s) => s.trim())
106
+ .filter(Boolean);
107
+ }
108
+ else {
109
+ meta[field] = [val];
110
+ }
111
+ }
112
+ else if (!Array.isArray(val)) {
113
+ meta[field] = [];
114
+ }
115
+ }
116
+ return { meta, content };
117
+ }
118
+ // --- ID helpers ---
119
+ function slugify(title) {
120
+ return (title
121
+ .toLowerCase()
122
+ .replace(/[^a-z0-9]+/g, "-")
123
+ .replace(/^-|-$/g, "")
124
+ .substring(0, 50) || "document");
125
+ }
126
+ // --- Wikilink parser ---
127
+ const WIKILINK_RE = /\[\[([^\]|]+)(?:\|([^\]]+))?\]\]/g;
128
+ /** Extract Obsidian-style [[wikilinks]] from markdown content. */
129
+ export function parseWikilinks(content) {
130
+ const refs = [];
131
+ const seen = new Set();
132
+ let match;
133
+ while ((match = WIKILINK_RE.exec(content)) !== null) {
134
+ const target = match[1].trim();
135
+ if (seen.has(target))
136
+ continue;
137
+ seen.add(target);
138
+ refs.push({
139
+ target,
140
+ display: match[2]?.trim() ?? null,
141
+ });
142
+ }
143
+ return refs;
144
+ }
145
+ // --- Recursive directory scanner ---
146
+ async function collectMdFiles(dir) {
147
+ const results = [];
148
+ let entries;
149
+ try {
150
+ entries = await fs.readdir(dir, { withFileTypes: true });
151
+ }
152
+ catch {
153
+ return results;
154
+ }
155
+ for (const entry of entries) {
156
+ if (entry.name.startsWith("."))
157
+ continue; // skip hidden
158
+ const full = path.join(dir, entry.name);
159
+ if (entry.isDirectory()) {
160
+ const sub = await collectMdFiles(full);
161
+ results.push(...sub);
162
+ }
163
+ else if (entry.name.endsWith(".md")) {
164
+ results.push(full);
165
+ }
166
+ }
167
+ return results;
168
+ }
169
+ // --- DocumentStore ---
170
+ export class DocumentStore {
171
+ mounts;
172
+ constructor(mounts) {
173
+ this.mounts = mounts;
174
+ if (mounts.length === 0) {
175
+ throw new Error("DocumentStore requires at least one mount");
176
+ }
177
+ }
178
+ getMounts() {
179
+ return this.mounts.slice();
180
+ }
181
+ getMount(collection) {
182
+ if (collection) {
183
+ const mount = this.mounts.find((m) => m.name === collection);
184
+ if (!mount)
185
+ throw new Error(`KB mount "${collection}" not found`);
186
+ return mount;
187
+ }
188
+ // Default: first writable mount
189
+ const writable = this.mounts.find((m) => m.writable);
190
+ if (!writable)
191
+ throw new Error("No writable KB mount configured");
192
+ return writable;
193
+ }
194
+ docFile(mountPath, id) {
195
+ const resolved = path.resolve(mountPath, `${id}.md`);
196
+ const resolvedMount = path.resolve(mountPath);
197
+ if (!resolved.startsWith(resolvedMount + path.sep) && resolved !== resolvedMount) {
198
+ throw new Error(`Invalid document id: "${id}"`);
199
+ }
200
+ return resolved;
201
+ }
202
+ async writeAtomic(filePath, content) {
203
+ const tmp = `${filePath}.tmp`;
204
+ await fs.writeFile(tmp, content, "utf8");
205
+ await fs.rename(tmp, filePath);
206
+ }
207
+ async findDoc(id) {
208
+ for (const mount of this.mounts) {
209
+ // First check top-level (fast path)
210
+ const topLevel = this.docFile(mount.path, id);
211
+ try {
212
+ await fs.access(topLevel);
213
+ return { mount, filePath: topLevel };
214
+ }
215
+ catch {
216
+ // not at top level
217
+ }
218
+ // Scan recursively for id match
219
+ const allFiles = await collectMdFiles(mount.path);
220
+ for (const filePath of allFiles) {
221
+ const basename = path.basename(filePath, ".md");
222
+ if (basename === id)
223
+ return { mount, filePath };
224
+ }
225
+ }
226
+ return null;
227
+ }
228
+ async readDocFromFile(filePath, collection) {
229
+ const raw = await fs.readFile(filePath, "utf8");
230
+ const { meta, content } = parseFrontmatter(raw);
231
+ const basename = path.basename(filePath, ".md");
232
+ return {
233
+ id: meta.id ?? basename,
234
+ title: meta.title ?? basename,
235
+ tags: meta.tags ?? [],
236
+ sourceGraphs: meta.sourceGraphs ?? [],
237
+ sourceNodeIds: meta.sourceNodeIds ?? [],
238
+ collection,
239
+ createdAt: meta.createdAt ?? "",
240
+ updatedAt: meta.updatedAt ?? "",
241
+ content,
242
+ };
243
+ }
244
+ summaryFromFile(raw, filePath, collection) {
245
+ const { meta } = parseFrontmatter(raw);
246
+ const basename = path.basename(filePath, ".md");
247
+ return {
248
+ id: meta.id ?? basename,
249
+ title: meta.title ?? basename,
250
+ tags: meta.tags ?? [],
251
+ sourceGraphs: meta.sourceGraphs ?? [],
252
+ collection,
253
+ createdAt: meta.createdAt ?? "",
254
+ updatedAt: meta.updatedAt ?? "",
255
+ };
256
+ }
257
+ async resolveId(baseId, mountPath) {
258
+ let id = baseId;
259
+ let suffix = 2;
260
+ while (true) {
261
+ try {
262
+ await fs.access(this.docFile(mountPath, id));
263
+ id = `${baseId}-${suffix}`;
264
+ suffix++;
265
+ }
266
+ catch {
267
+ return id;
268
+ }
269
+ }
270
+ }
271
+ // --- Public API ---
272
+ async save(doc) {
273
+ const mount = this.getMount(doc.collection);
274
+ if (!mount.writable) {
275
+ throw new Error(`KB mount "${mount.name}" is read-only`);
276
+ }
277
+ await fs.mkdir(mount.path, { recursive: true });
278
+ const now = new Date().toISOString();
279
+ let id;
280
+ let createdAt;
281
+ if (doc.id) {
282
+ // Update: reuse id, preserve createdAt if possible
283
+ id = doc.id;
284
+ const existing = await this.findDoc(id);
285
+ if (existing) {
286
+ const old = await this.readDocFromFile(existing.filePath, mount.name);
287
+ createdAt = old.createdAt || now;
288
+ }
289
+ else {
290
+ createdAt = now;
291
+ }
292
+ }
293
+ else {
294
+ // New: generate id, check for collisions
295
+ id = await this.resolveId(slugify(doc.title), mount.path);
296
+ createdAt = now;
297
+ }
298
+ const meta = {
299
+ id,
300
+ title: doc.title,
301
+ tags: doc.tags ?? [],
302
+ sourceGraphs: doc.sourceGraphs ?? [],
303
+ sourceNodeIds: doc.sourceNodeIds ?? [],
304
+ createdAt,
305
+ updatedAt: now,
306
+ };
307
+ const fileContent = serializeFrontmatter(meta) + "\n" + doc.content;
308
+ await this.writeAtomic(this.docFile(mount.path, id), fileContent);
309
+ return { ...meta, collection: mount.name, content: doc.content };
310
+ }
311
+ async list(opts) {
312
+ const mountsToScan = opts?.collection
313
+ ? [this.getMount(opts.collection)]
314
+ : this.mounts;
315
+ const results = [];
316
+ for (const mount of mountsToScan) {
317
+ const files = await collectMdFiles(mount.path);
318
+ for (const filePath of files) {
319
+ try {
320
+ const raw = await fs.readFile(filePath, "utf8");
321
+ results.push(this.summaryFromFile(raw, filePath, mount.name));
322
+ }
323
+ catch {
324
+ // skip unreadable files
325
+ }
326
+ }
327
+ }
328
+ // Sort by updatedAt descending
329
+ results.sort((a, b) => (b.updatedAt || "").localeCompare(a.updatedAt || ""));
330
+ const total = results.length;
331
+ const offset = opts?.offset ?? 0;
332
+ const limit = opts?.limit ?? total;
333
+ const page = results.slice(offset, offset + limit);
334
+ return {
335
+ documents: page,
336
+ total,
337
+ hasMore: offset + limit < total,
338
+ };
339
+ }
340
+ async read(id) {
341
+ const found = await this.findDoc(id);
342
+ if (!found)
343
+ throw new Error(`Document "${id}" not found`);
344
+ return this.readDocFromFile(found.filePath, found.mount.name);
345
+ }
346
+ async delete(id) {
347
+ const found = await this.findDoc(id);
348
+ if (!found)
349
+ throw new Error(`Document "${id}" not found`);
350
+ if (!found.mount.writable) {
351
+ throw new Error(`Cannot delete from read-only mount "${found.mount.name}"`);
352
+ }
353
+ await fs.rm(found.filePath);
354
+ }
355
+ async search(query, opts) {
356
+ const mountsToScan = opts?.collection
357
+ ? [this.getMount(opts.collection)]
358
+ : this.mounts;
359
+ const q = query.toLowerCase();
360
+ const results = [];
361
+ for (const mount of mountsToScan) {
362
+ const files = await collectMdFiles(mount.path);
363
+ for (const filePath of files) {
364
+ try {
365
+ const raw = await fs.readFile(filePath, "utf8");
366
+ if (!raw.toLowerCase().includes(q))
367
+ continue;
368
+ results.push(this.summaryFromFile(raw, filePath, mount.name));
369
+ }
370
+ catch {
371
+ // skip
372
+ }
373
+ }
374
+ }
375
+ results.sort((a, b) => (b.updatedAt || "").localeCompare(a.updatedAt || ""));
376
+ const total = results.length;
377
+ const offset = opts?.offset ?? 0;
378
+ const limit = opts?.limit ?? total;
379
+ const page = results.slice(offset, offset + limit);
380
+ return {
381
+ documents: page,
382
+ total,
383
+ hasMore: offset + limit < total,
384
+ };
385
+ }
386
+ async listMounts() {
387
+ const infos = [];
388
+ for (const mount of this.mounts) {
389
+ const files = await collectMdFiles(mount.path);
390
+ infos.push({
391
+ name: mount.name,
392
+ path: mount.path,
393
+ writable: mount.writable,
394
+ docCount: files.length,
395
+ });
396
+ }
397
+ return infos;
398
+ }
399
+ /**
400
+ * Read a document by id or an arbitrary file path. Returns the
401
+ * content formatted as source material for mining into a graph.
402
+ * Parses [[wikilinks]] from the content and returns them as refs.
403
+ */
404
+ async ingest(opts) {
405
+ if (opts.path) {
406
+ if (!opts.path.endsWith(".md")) {
407
+ throw new Error("Only .md files can be ingested");
408
+ }
409
+ const raw = await fs.readFile(opts.path, "utf8");
410
+ const { meta, content } = parseFrontmatter(raw);
411
+ return {
412
+ title: meta.title ?? path.basename(opts.path, ".md"),
413
+ content,
414
+ sourceGraphs: meta.sourceGraphs ?? [],
415
+ wikilinks: parseWikilinks(content),
416
+ };
417
+ }
418
+ if (opts.id) {
419
+ const doc = await this.read(opts.id);
420
+ return {
421
+ title: doc.title,
422
+ content: doc.content,
423
+ sourceGraphs: doc.sourceGraphs,
424
+ wikilinks: parseWikilinks(doc.content),
425
+ };
426
+ }
427
+ throw new Error("Either id or path must be provided");
428
+ }
429
+ }
430
+ //# sourceMappingURL=document-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-store.js","sourceRoot":"","sources":["../../src/core/document-store.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,8 +8,11 @@ export { JsonFileBackend } from "./storage/json-file-backend.js";
8
8
  export { EventSourcedBackend, ConcurrencyError, LOCK_FRESH_MS, } from "./storage/event-sourced-backend.js";
9
9
  export type { LockInfo } from "./storage/event-sourced-backend.js";
10
10
  export { generateAuthorName, resolveAuthorName } from "./core/author-name.js";
11
- export { loadRegistry, listBackpacks, getBackpack, registerBackpack, unregisterBackpack, getActiveBackpack, setActiveBackpack, colorForPath, deriveName, BackpackRegistryError, } from "./core/backpacks-registry.js";
12
- export type { BackpackEntry } from "./core/backpacks-registry.js";
11
+ export { loadRegistry, listBackpacks, getBackpack, registerBackpack, unregisterBackpack, getActiveBackpack, setActiveBackpack, getKBMounts, setKBMounts, addKBMount, removeKBMount, editKBMount, colorForPath, deriveName, BackpackRegistryError, } from "./core/backpacks-registry.js";
12
+ export type { BackpackEntry, KBMountConfig } from "./core/backpacks-registry.js";
13
+ export { DocumentStore } from "./core/document-store.js";
14
+ export type { KBMount, KBDocument, KBDocumentMeta, KBDocumentSummary, KBListResult, KBMountInfo, WikilinkRef, } from "./core/document-store.js";
15
+ export { parseWikilinks } from "./core/document-store.js";
13
16
  export { RemoteRegistry, RemoteRegistryError } from "./core/remote-registry.js";
14
17
  export type { RemoteEntry } from "./core/remote-registry.js";
15
18
  export { remoteFetch, RemoteFetchError, isBlockedIp } from "./core/remote-fetch.js";
@@ -17,7 +20,7 @@ export type { RemoteFetchOptions, RemoteFetchResult } from "./core/remote-fetch.
17
20
  export { validateRemoteGraph, RemoteSchemaError, REMOTE_GRAPH_LIMITS } from "./core/remote-schema.js";
18
21
  export { initTelemetry, trackEvent, trackTokenSavings, shutdown as shutdownTelemetry } from "./core/telemetry.js";
19
22
  export { estimateTokens, estimateGraphTokens, computeSavings, formatSavingsFooter } from "./core/token-estimate.js";
20
- export { createEnvelope, parseEnvelope, generateKeyPair, encrypt, decrypt, encodeKeyForFragment, decodeKeyFromFragment, uploadToRelay, downloadFromRelay, getShareMeta, } from "./sharing/index.js";
23
+ export { createEnvelope, parseEnvelope, generateKeyPair, encrypt, decrypt, encodeKeyForFragment, decodeKeyFromFragment, downloadFromRelay, getShareMeta, } from "./sharing/index.js";
21
24
  export type { EnvelopeHeader, Envelope, KeyPair, ShareResult, RelayConfig, } from "./sharing/index.js";
22
25
  export { createMcpServer } from "./mcp/server.js";
23
26
  export type { BackpackServerConfig, BackpackLocalConfig, BackpackAppConfig } from "./mcp/server.js";
@@ -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,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,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;AACjE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpF,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGtG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGlH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpH,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,cAAc,EACd,QAAQ,EACR,OAAO,EACP,WAAW,EACX,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
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,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,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;AACjE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EACV,OAAO,EACP,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpF,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGtG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGlH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpH,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,cAAc,EACd,QAAQ,EACR,OAAO,EACP,WAAW,EACX,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -10,7 +10,10 @@ export { EventSourcedBackend, ConcurrencyError, LOCK_FRESH_MS, } from "./storage
10
10
  // Author name generator (docker-style fallback when BACKPACK_AUTHOR is unset)
11
11
  export { generateAuthorName, resolveAuthorName } from "./core/author-name.js";
12
12
  // Backpacks registry (multi-backpack management)
13
- export { loadRegistry, listBackpacks, getBackpack, registerBackpack, unregisterBackpack, getActiveBackpack, setActiveBackpack, colorForPath, deriveName, BackpackRegistryError, } from "./core/backpacks-registry.js";
13
+ export { loadRegistry, listBackpacks, getBackpack, registerBackpack, unregisterBackpack, getActiveBackpack, setActiveBackpack, getKBMounts, setKBMounts, addKBMount, removeKBMount, editKBMount, colorForPath, deriveName, BackpackRegistryError, } from "./core/backpacks-registry.js";
14
+ // Knowledge Base (document store)
15
+ export { DocumentStore } from "./core/document-store.js";
16
+ export { parseWikilinks } from "./core/document-store.js";
14
17
  // Remote graph registry (subscriptions to graphs hosted at HTTPS URLs)
15
18
  export { RemoteRegistry, RemoteRegistryError } from "./core/remote-registry.js";
16
19
  export { remoteFetch, RemoteFetchError, isBlockedIp } from "./core/remote-fetch.js";
@@ -20,7 +23,7 @@ export { initTelemetry, trackEvent, trackTokenSavings, shutdown as shutdownTelem
20
23
  // Token estimation
21
24
  export { estimateTokens, estimateGraphTokens, computeSavings, formatSavingsFooter } from "./core/token-estimate.js";
22
25
  // Sharing (envelope format, age encryption, relay client)
23
- export { createEnvelope, parseEnvelope, generateKeyPair, encrypt, decrypt, encodeKeyForFragment, decodeKeyFromFragment, uploadToRelay, downloadFromRelay, getShareMeta, } from "./sharing/index.js";
26
+ export { createEnvelope, parseEnvelope, generateKeyPair, encrypt, decrypt, encodeKeyForFragment, decodeKeyFromFragment, downloadFromRelay, getShareMeta, } from "./sharing/index.js";
24
27
  // MCP server factory
25
28
  export { createMcpServer } from "./mcp/server.js";
26
29
  //# sourceMappingURL=index.js.map
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;AAkB9C,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAG5C,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,iDAAiD;AACjD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAGtC,uEAAuE;AACvE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEtG,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAElH,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpH,0DAA0D;AAC1D,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAS5B,qBAAqB;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,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;AACjE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAG5C,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,iDAAiD;AACjD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAGtC,kCAAkC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAUzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,uEAAuE;AACvE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEtG,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAElH,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpH,0DAA0D;AAC1D,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAS5B,qBAAqB;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBpE,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0DAA0D;AAC1D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,sBAAsB,GAAG,sBAAsB,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE3E;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,SAAS,CAAC,CA8FpB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBpE,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0DAA0D;AAC1D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,sBAAsB,GAAG,sBAAsB,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE3E;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,SAAS,CAAC,CA+FpB"}
@@ -15,6 +15,7 @@ import { registerIntelligenceTools } from "./tools/intelligence-tools.js";
15
15
  import { registerRemoteTools } from "./tools/remote-tools.js";
16
16
  import { registerBackpackTools } from "./tools/backpack-tools.js";
17
17
  import { registerShareTools } from "./tools/share-tools.js";
18
+ import { registerKBTools } from "./tools/kb-tools.js";
18
19
  import { registerViewerStateResource } from "./viewer-state-resource.js";
19
20
  /**
20
21
  * Create and configure the MCP server.
@@ -97,6 +98,7 @@ Be selective — not every conversation needs to be captured. Focus on knowledge
97
98
  // doesn't need them since the cloud backend is a single target.
98
99
  if (!config || config.mode === "local") {
99
100
  registerBackpackTools(server, backpack);
101
+ registerKBTools(server, backpack);
100
102
  }
101
103
  // Viewer-state bridge: exposes the local viewer's current selection /
102
104
  // focus / active graph as an MCP resource so any MCP client can ask
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -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 registerKBTools(server: McpServer, backpack: Backpack): void;
4
+ //# sourceMappingURL=kb-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kb-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/kb-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAiQN"}