@dtoolkit/dbrain 0.3.1 → 0.3.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 (60) hide show
  1. package/README.md +39 -7
  2. package/dist/cli/index.js +42 -0
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/cli/init.d.ts.map +1 -1
  5. package/dist/cli/init.js +16 -0
  6. package/dist/cli/init.js.map +1 -1
  7. package/dist/cli/keys.d.ts +11 -0
  8. package/dist/cli/keys.d.ts.map +1 -0
  9. package/dist/cli/keys.js +85 -0
  10. package/dist/cli/keys.js.map +1 -0
  11. package/dist/cli/link.d.ts +12 -0
  12. package/dist/cli/link.d.ts.map +1 -0
  13. package/dist/cli/link.js +118 -0
  14. package/dist/cli/link.js.map +1 -0
  15. package/dist/core/config.d.ts +17 -0
  16. package/dist/core/config.d.ts.map +1 -1
  17. package/dist/core/config.js +22 -1
  18. package/dist/core/config.js.map +1 -1
  19. package/dist/core/connections.d.ts +9 -0
  20. package/dist/core/connections.d.ts.map +1 -0
  21. package/dist/core/connections.js +25 -0
  22. package/dist/core/connections.js.map +1 -0
  23. package/dist/core/db.d.ts.map +1 -1
  24. package/dist/core/db.js +29 -0
  25. package/dist/core/db.js.map +1 -1
  26. package/dist/dashboard/index.html +250 -26
  27. package/dist/mcp/server.d.ts.map +1 -1
  28. package/dist/mcp/server.js +170 -12
  29. package/dist/mcp/server.js.map +1 -1
  30. package/dist/server/index.d.ts.map +1 -1
  31. package/dist/server/index.js +28 -2
  32. package/dist/server/index.js.map +1 -1
  33. package/dist/server/routes/entities.d.ts.map +1 -1
  34. package/dist/server/routes/entities.js +5 -0
  35. package/dist/server/routes/entities.js.map +1 -1
  36. package/dist/server/routes/facts.d.ts.map +1 -1
  37. package/dist/server/routes/facts.js +54 -1
  38. package/dist/server/routes/facts.js.map +1 -1
  39. package/dist/server/routes/health.d.ts.map +1 -1
  40. package/dist/server/routes/health.js +46 -2
  41. package/dist/server/routes/health.js.map +1 -1
  42. package/dist/server/routes/keys.d.ts +3 -0
  43. package/dist/server/routes/keys.d.ts.map +1 -0
  44. package/dist/server/routes/keys.js +73 -0
  45. package/dist/server/routes/keys.js.map +1 -0
  46. package/dist/server/routes/permissions.d.ts +3 -0
  47. package/dist/server/routes/permissions.d.ts.map +1 -0
  48. package/dist/server/routes/permissions.js +9 -0
  49. package/dist/server/routes/permissions.js.map +1 -0
  50. package/dist/server/routes/proxy.d.ts +3 -0
  51. package/dist/server/routes/proxy.d.ts.map +1 -0
  52. package/dist/server/routes/proxy.js +37 -0
  53. package/dist/server/routes/proxy.js.map +1 -0
  54. package/dist/server/routes/search.d.ts.map +1 -1
  55. package/dist/server/routes/search.js +112 -40
  56. package/dist/server/routes/search.js.map +1 -1
  57. package/dist/server/routes/workspace.d.ts.map +1 -1
  58. package/dist/server/routes/workspace.js +5 -0
  59. package/dist/server/routes/workspace.js.map +1 -1
  60. package/package.json +3 -2
@@ -5,6 +5,8 @@ import { fileURLToPath } from 'node:url';
5
5
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
6
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
7
7
  import { z } from 'zod';
8
+ import { loadConnections } from '../core/config.js';
9
+ import { getAllConnections, getConnection } from '../core/connections.js';
8
10
  const __dirname = dirname(fileURLToPath(import.meta.url));
9
11
  const pkg = JSON.parse(readFileSync(join(__dirname, '..', '..', 'package.json'), 'utf-8'));
10
12
  function genId(prefix) {
@@ -63,7 +65,7 @@ export function createMcpServer(app) {
63
65
  ],
64
66
  };
65
67
  });
66
- // --- recall: search memory ---
68
+ // --- recall: search memory (federated) ---
67
69
  mcp.registerTool('recall', {
68
70
  description: `Search your memory. Use this BEFORE answering any question about the user, their projects, preferences, or past conversations. If you're not sure, search first.`,
69
71
  inputSchema: {
@@ -71,8 +73,24 @@ export function createMcpServer(app) {
71
73
  limit: z.number().optional().default(10).describe('Max results'),
72
74
  },
73
75
  }, async ({ query, limit }) => {
74
- const ftsQuery = query.split(/\s+/).filter(Boolean).join(' OR ');
75
- const results = db
76
+ const words = query.split(/\s+/).filter(Boolean);
77
+ if (words.length === 0) {
78
+ const docs = db.prepare('SELECT key, content FROM documents ORDER BY key').all();
79
+ return {
80
+ content: [
81
+ {
82
+ type: 'text',
83
+ text: JSON.stringify({
84
+ identity: Object.fromEntries(docs.map((d) => [d.key, d.content])),
85
+ results: [],
86
+ federation: { local: 0, remote: 0, partial: false, sources: [] },
87
+ }),
88
+ },
89
+ ],
90
+ };
91
+ }
92
+ const ftsQuery = words.join(' OR ');
93
+ const localRows = db
76
94
  .prepare(`
77
95
  SELECT f.*, e.name as entity_name, e.type as entity_type, rank
78
96
  FROM facts_fts fts
@@ -84,8 +102,55 @@ export function createMcpServer(app) {
84
102
  .all(ftsQuery, limit);
85
103
  const now = new Date().toISOString().split('T')[0];
86
104
  const bumpStmt = db.prepare('UPDATE facts SET last_accessed = ?, access_count = access_count + 1 WHERE id = ?');
87
- for (const r of results)
105
+ for (const r of localRows)
88
106
  bumpStmt.run(now, r.id);
107
+ const localMaxScore = localRows.length > 0 ? Math.max(...localRows.map((r) => -r.rank)) : 1;
108
+ const localResults = localRows.map((r) => ({
109
+ fact: r.fact,
110
+ entity: r.entity_name,
111
+ entityType: r.entity_type,
112
+ category: r.category,
113
+ tier: r.tier,
114
+ score: -r.rank,
115
+ normalizedScore: localMaxScore > 0 ? -r.rank / localMaxScore : 0,
116
+ originBrain: null,
117
+ }));
118
+ const connections = loadConnections(app.config.dataPath);
119
+ let partial = false;
120
+ const remoteSources = [];
121
+ const remoteResults = [];
122
+ if (connections.length > 0) {
123
+ const clients = getAllConnections(connections);
124
+ const remoteSearches = clients.map(async ({ name, client }) => {
125
+ try {
126
+ const hits = await client.search(query, { limit });
127
+ remoteSources.push({ name, count: hits.length });
128
+ const maxScore = hits.length > 0 ? Math.max(...hits.map((h) => h.score)) : 1;
129
+ for (const h of hits) {
130
+ remoteResults.push({
131
+ fact: h.fact.fact,
132
+ entity: h.entity.name,
133
+ entityType: h.entity.type,
134
+ category: h.fact.category,
135
+ tier: h.fact.tier,
136
+ score: h.score,
137
+ normalizedScore: maxScore > 0 ? h.score / maxScore : 0,
138
+ originBrain: name,
139
+ });
140
+ }
141
+ }
142
+ catch {
143
+ partial = true;
144
+ remoteSources.push({ name, count: 0 });
145
+ }
146
+ });
147
+ await Promise.all(remoteSearches);
148
+ }
149
+ const localKeys = new Set(localResults.map((r) => `${r.entity}::${r.fact}`));
150
+ const dedupedRemote = remoteResults.filter((r) => !localKeys.has(`${r.entity}::${r.fact}`));
151
+ const merged = [...localResults, ...dedupedRemote]
152
+ .sort((a, b) => b.normalizedScore - a.normalizedScore)
153
+ .slice(0, limit);
89
154
  const docs = db.prepare('SELECT key, content FROM documents ORDER BY key').all();
90
155
  return {
91
156
  content: [
@@ -93,14 +158,13 @@ export function createMcpServer(app) {
93
158
  type: 'text',
94
159
  text: JSON.stringify({
95
160
  identity: Object.fromEntries(docs.map((d) => [d.key, d.content])),
96
- results: results.map((r) => ({
97
- fact: r.fact,
98
- entity: r.entity_name,
99
- entityType: r.entity_type,
100
- category: r.category,
101
- tier: r.tier,
102
- score: -r.rank,
103
- })),
161
+ results: merged.map(({ normalizedScore: _, ...r }) => r),
162
+ federation: {
163
+ local: localResults.length,
164
+ remote: remoteResults.length,
165
+ partial,
166
+ sources: [{ name: 'local', count: localResults.length }, ...remoteSources],
167
+ },
104
168
  }),
105
169
  },
106
170
  ],
@@ -299,6 +363,100 @@ Good: "User prefers React over Vue for new frontend projects"`,
299
363
  ],
300
364
  };
301
365
  });
366
+ // --- share: push a fact to a connected brain ---
367
+ mcp.registerTool('share', {
368
+ description: 'Push a fact to a connected shared brain. The fact and its entity are replicated to the remote brain.',
369
+ inputSchema: {
370
+ factId: z.string().describe('ID of the local fact to share'),
371
+ targetBrain: z
372
+ .string()
373
+ .optional()
374
+ .describe('Connection name (defaults to first connected brain)'),
375
+ },
376
+ }, async ({ factId, targetBrain }) => {
377
+ const config = app.config;
378
+ if (config.brainType === 'shared') {
379
+ return {
380
+ content: [
381
+ {
382
+ type: 'text',
383
+ text: JSON.stringify({ error: 'Shared brains cannot push to other brains' }),
384
+ },
385
+ ],
386
+ };
387
+ }
388
+ const connections = loadConnections(config.dataPath);
389
+ if (connections.length === 0) {
390
+ return {
391
+ content: [
392
+ {
393
+ type: 'text',
394
+ text: JSON.stringify({
395
+ error: 'No connected brains. Use `dbrain link` to connect to a shared brain.',
396
+ }),
397
+ },
398
+ ],
399
+ };
400
+ }
401
+ const client = getConnection(connections, targetBrain);
402
+ if (!client) {
403
+ return {
404
+ content: [
405
+ {
406
+ type: 'text',
407
+ text: JSON.stringify({ error: `Connection "${targetBrain}" not found` }),
408
+ },
409
+ ],
410
+ };
411
+ }
412
+ const fact = db
413
+ .prepare('SELECT f.*, e.name as entity_name, e.type as entity_type, e.category as entity_category FROM facts f JOIN entities e ON e.id = f.entity_id WHERE f.id = ?')
414
+ .get(factId);
415
+ if (!fact) {
416
+ return {
417
+ content: [{ type: 'text', text: JSON.stringify({ error: 'Fact not found' }) }],
418
+ };
419
+ }
420
+ try {
421
+ try {
422
+ await client.getEntity(fact.entity_id);
423
+ }
424
+ catch {
425
+ await client.createEntity({
426
+ id: fact.entity_id,
427
+ name: fact.entity_name,
428
+ type: fact.entity_type,
429
+ category: fact.entity_category,
430
+ });
431
+ }
432
+ const remoteFact = await client.addFact(fact.entity_id, {
433
+ id: genId('fact'),
434
+ fact: fact.fact,
435
+ category: fact.category,
436
+ timestamp: fact.timestamp,
437
+ source: 'shared',
438
+ });
439
+ const target = targetBrain || connections[0]?.name || 'unknown';
440
+ return {
441
+ content: [
442
+ {
443
+ type: 'text',
444
+ text: JSON.stringify({ shared: true, targetBrain: target, remoteFact }),
445
+ },
446
+ ],
447
+ };
448
+ }
449
+ catch (err) {
450
+ return {
451
+ content: [
452
+ {
453
+ type: 'text',
454
+ text: JSON.stringify({ error: `Failed to share: ${err.message}` }),
455
+ },
456
+ ],
457
+ };
458
+ }
459
+ });
302
460
  // --- overview: brain stats ---
303
461
  mcp.registerTool('overview', {
304
462
  description: 'Get a summary of everything in the brain: entities, facts by tier, conversations.',
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAUhD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ;;EAoCjE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAYhD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ;;EAyEjE"}
@@ -4,6 +4,8 @@ import { conversationRoutes } from './routes/conversations.js';
4
4
  import { entityRoutes } from './routes/entities.js';
5
5
  import { factRoutes } from './routes/facts.js';
6
6
  import { healthRoutes } from './routes/health.js';
7
+ import { keyRoutes } from './routes/keys.js';
8
+ import { proxyRoutes } from './routes/proxy.js';
7
9
  import { searchRoutes } from './routes/search.js';
8
10
  import { workspaceRoutes } from './routes/workspace.js';
9
11
  export function createServer(config, db) {
@@ -25,9 +27,29 @@ export function createServer(config, db) {
25
27
  if (request.url === '/health')
26
28
  return;
27
29
  const auth = request.headers.authorization;
28
- if (!auth || auth !== `Bearer ${config.token}`) {
29
- reply.code(401).send({ error: 'Unauthorized' });
30
+ if (!auth?.startsWith('Bearer ')) {
31
+ return reply.code(401).send({ error: 'Unauthorized' });
30
32
  }
33
+ const token = auth.slice(7);
34
+ if (token === config.token) {
35
+ request.brainUser = { userId: '_admin', userName: 'Admin', permissions: 'read+write' };
36
+ return;
37
+ }
38
+ if (config.brainType === 'shared') {
39
+ const key = db
40
+ .prepare("SELECT user_id, user_name, permissions FROM api_keys WHERE token = ? AND status = 'active'")
41
+ .get(token);
42
+ if (key) {
43
+ db.prepare('UPDATE api_keys SET last_used = ? WHERE token = ?').run(new Date().toISOString(), token);
44
+ request.brainUser = {
45
+ userId: key.user_id,
46
+ userName: key.user_name,
47
+ permissions: key.permissions,
48
+ };
49
+ return;
50
+ }
51
+ }
52
+ return reply.code(401).send({ error: 'Unauthorized' });
31
53
  });
32
54
  app.register(healthRoutes);
33
55
  app.register(entityRoutes);
@@ -35,6 +57,10 @@ export function createServer(config, db) {
35
57
  app.register(searchRoutes);
36
58
  app.register(workspaceRoutes);
37
59
  app.register(conversationRoutes);
60
+ if (config.brainType === 'shared') {
61
+ app.register(keyRoutes);
62
+ }
63
+ app.register(proxyRoutes);
38
64
  mountMcp(app);
39
65
  return app;
40
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,EAAqB;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvB,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE/B,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACtD,KAAK,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QACjD,KAAK,CAAC,MAAM,CAAC,8BAA8B,EAAE,qCAAqC,CAAC,CAAC;QACpF,KAAK,CAAC,MAAM,CAAC,8BAA8B,EAAE,wCAAwC,CAAC,CAAC;QACvF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;QACnC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO;QACzC,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3B,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACzB,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3B,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC9B,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAEjC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEd,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/server/routes/entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAY/C,wBAAsB,YAAY,CAAC,GAAG,EAAE,eAAe,iBA+DtD"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/server/routes/entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAc/C,wBAAsB,YAAY,CAAC,GAAG,EAAE,eAAe,iBAiEtD"}
@@ -1,3 +1,4 @@
1
+ import { requireWrite } from './permissions.js';
1
2
  export async function entityRoutes(app) {
2
3
  const db = app.db;
3
4
  app.get('/entities', async (request) => {
@@ -33,12 +34,16 @@ export async function entityRoutes(app) {
33
34
  };
34
35
  });
35
36
  app.post('/entities', async (request, reply) => {
37
+ if (!requireWrite(request, reply))
38
+ return;
36
39
  const { id, name, type, category, metadata } = request.body;
37
40
  const now = new Date().toISOString();
38
41
  db.prepare('INSERT INTO entities (id, name, type, category, created_at, updated_at, metadata) VALUES (?, ?, ?, ?, ?, ?, ?)').run(id, name, type, category, now, now, metadata ? JSON.stringify(metadata) : null);
39
42
  return reply.code(201).send({ id, name, type, category });
40
43
  });
41
44
  app.delete('/entities/:id', async (request, reply) => {
45
+ if (!requireWrite(request, reply))
46
+ return;
42
47
  const { id } = request.params;
43
48
  const result = db
44
49
  .prepare("UPDATE entities SET status = 'archived', updated_at = ? WHERE id = ?")
@@ -1 +1 @@
1
- {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/server/routes/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/server/routes/entities.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../../src/server/routes/facts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAO/C,wBAAsB,UAAU,CAAC,GAAG,EAAE,eAAe,iBAiEpD"}
1
+ {"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../../src/server/routes/facts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAgB/C,wBAAsB,UAAU,CAAC,GAAG,EAAE,eAAe,iBAiIpD"}
@@ -1,3 +1,10 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import { loadConnections } from '../../core/config.js';
3
+ import { getConnection } from '../../core/connections.js';
4
+ import { requireWrite } from './permissions.js';
5
+ function genId(prefix) {
6
+ return `${prefix}_${randomBytes(12).toString('base64url')}`;
7
+ }
1
8
  export async function factRoutes(app) {
2
9
  const db = app.db;
3
10
  app.get('/entities/:entityId/facts', async (request, reply) => {
@@ -18,12 +25,15 @@ export async function factRoutes(app) {
18
25
  }));
19
26
  });
20
27
  app.post('/entities/:entityId/facts', async (request, reply) => {
28
+ if (!requireWrite(request, reply))
29
+ return;
21
30
  const { entityId } = request.params;
22
31
  const { id, fact, category, timestamp, source, relatedEntities } = request.body;
23
32
  if (!db.prepare('SELECT id FROM entities WHERE id = ?').get(entityId))
24
33
  return reply.code(404).send({ error: 'Entity not found' });
25
34
  const now = new Date().toISOString().split('T')[0];
26
- db.prepare("INSERT INTO facts (id, entity_id, fact, category, timestamp, last_accessed, access_count, tier, source, related_entities) VALUES (?, ?, ?, ?, ?, ?, 1, 'hot', ?, ?)").run(id, entityId, fact, category || 'context', timestamp || now, now, source || 'api', JSON.stringify(relatedEntities || []));
35
+ const authorId = request.brainUser?.userId === '_admin' ? null : (request.brainUser?.userId ?? null);
36
+ db.prepare("INSERT INTO facts (id, entity_id, fact, category, timestamp, last_accessed, access_count, tier, source, related_entities, author_id) VALUES (?, ?, ?, ?, ?, ?, 1, 'hot', ?, ?, ?)").run(id, entityId, fact, category || 'context', timestamp || now, now, source || 'api', JSON.stringify(relatedEntities || []), authorId);
27
37
  db.prepare('UPDATE entities SET updated_at = ? WHERE id = ?').run(now, entityId);
28
38
  return reply.code(201).send({ id, entityId, fact });
29
39
  });
@@ -37,5 +47,48 @@ export async function factRoutes(app) {
37
47
  return reply.code(404).send({ error: 'Fact not found' });
38
48
  return { id, bumped: true };
39
49
  });
50
+ app.post('/facts/:id/share', async (request, reply) => {
51
+ const config = app.config;
52
+ if (config.brainType === 'shared')
53
+ return reply.code(400).send({ error: 'Shared brains cannot push to other brains' });
54
+ const connections = loadConnections(config.dataPath);
55
+ if (connections.length === 0)
56
+ return reply.code(400).send({ error: 'No connected brains' });
57
+ const { id } = request.params;
58
+ const { targetBrain } = (request.body || {});
59
+ const fact = db
60
+ .prepare('SELECT f.*, e.name as entity_name, e.type as entity_type, e.category as entity_category FROM facts f JOIN entities e ON e.id = f.entity_id WHERE f.id = ?')
61
+ .get(id);
62
+ if (!fact)
63
+ return reply.code(404).send({ error: 'Fact not found' });
64
+ const client = getConnection(connections, targetBrain);
65
+ if (!client)
66
+ return reply.code(400).send({ error: `Connection "${targetBrain}" not found` });
67
+ try {
68
+ try {
69
+ await client.getEntity(fact.entity_id);
70
+ }
71
+ catch {
72
+ await client.createEntity({
73
+ id: fact.entity_id,
74
+ name: fact.entity_name,
75
+ type: fact.entity_type,
76
+ category: fact.entity_category,
77
+ });
78
+ }
79
+ const remoteFact = await client.addFact(fact.entity_id, {
80
+ id: genId('fact'),
81
+ fact: fact.fact,
82
+ category: fact.category,
83
+ timestamp: fact.timestamp,
84
+ source: 'shared',
85
+ });
86
+ const target = targetBrain || connections[0]?.name || 'unknown';
87
+ return { shared: true, targetBrain: target, remoteFact };
88
+ }
89
+ catch (err) {
90
+ return reply.code(502).send({ error: `Failed to share: ${err.message}` });
91
+ }
92
+ });
40
93
  }
41
94
  //# sourceMappingURL=facts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"facts.js","sourceRoot":"","sources":["../../../src/server/routes/facts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facts.js","sourceRoot":"","sources":["../../../src/server/routes/facts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/server/routes/health.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAsC/C,wBAAsB,YAAY,CAAC,GAAG,EAAE,eAAe,iBAoDtD"}
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/server/routes/health.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA0C/C,wBAAsB,YAAY,CAAC,GAAG,EAAE,eAAe,iBAmGtD"}
@@ -1,6 +1,7 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { join, dirname } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
+ import { loadConnections } from '../../core/config.js';
4
5
  const __dirname = dirname(fileURLToPath(import.meta.url));
5
6
  const pkg = JSON.parse(readFileSync(join(__dirname, '..', '..', '..', 'package.json'), 'utf-8'));
6
7
  const VERSION = pkg.version;
@@ -25,6 +26,7 @@ You have an AI brain connected via MCP (dbrain). This is your persistent memory
25
26
  - \`bump\` — Keep memories alive. When you use a fact to answer a question, bump it so it stays hot.
26
27
  - \`overview\` — Brain stats. When the user asks "what do you know?" or you need a high-level picture.
27
28
  - \`wake_up\` — Full identity load. Only needed if you want the complete identity documents outside of a recall.
29
+ - \`share\` — Push to team brain. When the user wants to share a fact with a connected shared brain.
28
30
 
29
31
  ## Rules
30
32
 
@@ -34,6 +36,7 @@ You have an AI brain connected via MCP (dbrain). This is your persistent memory
34
36
  - When storing facts, be specific and atomic. "Favorite ice cream is pistachio" not "We talked about food preferences".
35
37
  - Use \`remember\` proactively across ALL projects — not just dbrain. Decisions, milestones, preferences, people, learnings: if it's worth remembering, store it in the brain.
36
38
  - Use \`log\` to store conversations. At natural breakpoints (end of a task, before the user leaves, or every few exchanges), log a summary of what was discussed and decided. Source: \`claude-code-{hostname}\`.
39
+ - When connected to shared brains, \`recall\` automatically federates — results include facts from all connected brains. You don't need to do anything special.
37
40
  `;
38
41
  export async function healthRoutes(app) {
39
42
  app.get('/health', async () => {
@@ -47,19 +50,60 @@ export async function healthRoutes(app) {
47
50
  const { unprocessed } = db
48
51
  .prepare('SELECT COUNT(*) as unprocessed FROM messages WHERE processed = 0')
49
52
  .get();
50
- const identity = db.prepare("SELECT content FROM documents WHERE key = 'identity'").get();
51
- const name = identity?.content?.match(/\*\*Name:\*\* (.+)/)?.[1] || 'dbrain';
53
+ const config = app.config;
54
+ let name = config.brainName;
55
+ if (!name) {
56
+ const identity = db.prepare("SELECT content FROM documents WHERE key = 'identity'").get();
57
+ name = identity?.content?.match(/\*\*Name:\*\* (.+)/)?.[1] || 'dbrain';
58
+ }
52
59
  return {
53
60
  status: 'awake',
54
61
  name,
62
+ brainType: config.brainType ?? 'personal',
55
63
  version: VERSION,
56
64
  entities,
57
65
  facts,
58
66
  documents,
59
67
  conversations,
60
68
  unprocessed,
69
+ connectedBrains: loadConnections(config.dataPath).length,
61
70
  };
62
71
  });
72
+ app.get('/me', async (request) => {
73
+ const u = request.brainUser;
74
+ return {
75
+ userId: u?.userId ?? '_admin',
76
+ userName: u?.userName ?? 'Admin',
77
+ permissions: u?.permissions ?? 'read+write',
78
+ isAdmin: u?.userId === '_admin',
79
+ };
80
+ });
81
+ app.get('/connections', async () => {
82
+ const conns = loadConnections(app.config.dataPath);
83
+ const results = await Promise.all(conns.map(async (conn) => {
84
+ try {
85
+ const res = await fetch(`${conn.url}/health`, {
86
+ headers: { Authorization: `Bearer ${conn.token}` },
87
+ signal: AbortSignal.timeout(3000),
88
+ });
89
+ if (!res.ok)
90
+ return { name: conn.name, url: conn.url, online: false };
91
+ const h = (await res.json());
92
+ return {
93
+ name: conn.name,
94
+ url: conn.url,
95
+ online: true,
96
+ brainName: h.name,
97
+ entities: h.entities,
98
+ facts: h.facts,
99
+ };
100
+ }
101
+ catch {
102
+ return { name: conn.name, url: conn.url, online: false };
103
+ }
104
+ }));
105
+ return results;
106
+ });
63
107
  app.get('/connect', async (request) => {
64
108
  const config = app.config;
65
109
  const host = request.headers.host || `localhost:${config.port}`;
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/server/routes/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACjG,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAE5B,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BzB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAoB;IACrD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,EAE/E,CAAC;QACF,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAEtE,CAAC;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,EAElF,CAAC;QACF,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE;aACzB,OAAO,CAAC,qDAAqD,CAAC;aAC9D,GAAG,EAA+B,CAAC;QACtC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE;aACvB,OAAO,CAAC,kEAAkE,CAAC;aAC3E,GAAG,EAA6B,CAAC;QACpC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,EAE1E,CAAC;QACd,MAAM,IAAI,GAAG,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;QAC7E,OAAO;YACL,MAAM,EAAE,OAAO;YACf,IAAI;YACJ,OAAO,EAAE,OAAO;YAChB,QAAQ;YACR,KAAK;YACL,SAAS;YACT,aAAa;YACb,WAAW;SACZ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,aAAa,MAAM,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC;QAChE,MAAM,OAAO,GAAG,GAAG,QAAQ,MAAM,IAAI,EAAE,CAAC;QAExC,OAAO;YACL,GAAG,EAAE;gBACH,MAAM,EAAE;oBACN,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,GAAG,OAAO,MAAM;oBACrB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE,EAAE;iBACrD;aACF;YACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;YAC/B,QAAQ,EAAE,iBAAiB;SAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/server/routes/health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { FastifyInstance } from 'fastify';
2
+ export declare function keyRoutes(app: FastifyInstance): Promise<void>;
3
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/server/routes/keys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAc/C,wBAAsB,SAAS,CAAC,GAAG,EAAE,eAAe,iBAoGnD"}