@dtoolkit/dbrain 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/cli/connect.ts"],"names":[],"mappings":"AAgBA,wBAAsB,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,iBAmF7E"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/cli/connect.ts"],"names":[],"mappings":"AAgBA,wBAAsB,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,iBA2F7E"}
@@ -1,9 +1,9 @@
1
1
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
2
- import { homedir } from 'node:os';
2
+ import { homedir, hostname } from 'node:os';
3
3
  import { join } from 'node:path';
4
4
  import * as p from '@clack/prompts';
5
5
  import pc from 'picocolors';
6
- const SUPPORTED_CLIENTS = ['claude', 'opencode'];
6
+ const SUPPORTED_CLIENTS = ['claude', 'codex', 'gemini', 'opencode'];
7
7
  export async function connect(client, url, tokenArg) {
8
8
  p.intro(pc.cyan('dbrain') + ' — Connect to a brain');
9
9
  if (!client || !SUPPORTED_CLIENTS.includes(client)) {
@@ -15,11 +15,6 @@ export async function connect(client, url, tokenArg) {
15
15
  return;
16
16
  }
17
17
  const selectedClient = client;
18
- if (selectedClient === 'opencode') {
19
- p.log.warning('opencode support is not available yet.');
20
- p.outro(pc.yellow('Coming soon.'));
21
- return;
22
- }
23
18
  if (!url) {
24
19
  const input = await p.text({
25
20
  message: 'Brain URL',
@@ -73,10 +68,27 @@ export async function connect(client, url, tokenArg) {
73
68
  if (healthRes?.name) {
74
69
  p.log.info(`Brain: ${pc.cyan(healthRes.name)} — ${healthRes.entities} entities, ${healthRes.facts} facts`);
75
70
  }
76
- configureClaude(config, s);
77
- p.outro(pc.green('Connected. Restart Claude Code to activate.'));
71
+ if (selectedClient === 'claude') {
72
+ configureClaude(config, url, tokenArg, s);
73
+ }
74
+ else if (selectedClient === 'codex') {
75
+ configureCodex(config, url, tokenArg, s);
76
+ }
77
+ else if (selectedClient === 'gemini') {
78
+ configureGemini(config, url, tokenArg, s);
79
+ }
80
+ else if (selectedClient === 'opencode') {
81
+ configureOpenCode(config, url, tokenArg, s);
82
+ }
83
+ const clientNames = {
84
+ claude: 'Claude Code',
85
+ codex: 'Codex CLI',
86
+ gemini: 'Gemini CLI',
87
+ opencode: 'OpenCode',
88
+ };
89
+ p.outro(pc.green(`Connected. Restart ${clientNames[selectedClient]} to activate.`));
78
90
  }
79
- function configureClaude(config, s) {
91
+ function configureClaude(config, _url, _token, s) {
80
92
  s.start('Configuring Claude Code');
81
93
  const claudeDir = join(homedir(), '.claude');
82
94
  const claudeJson = join(homedir(), '.claude.json');
@@ -115,12 +127,158 @@ function configureClaude(config, s) {
115
127
  }
116
128
  }
117
129
  writeFileSync(settingsJson, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
118
- writeFileSync(claudeMd, config.claudeMd, 'utf-8');
130
+ writeDbrainMdSection(claudeMd, config.claudeMd);
119
131
  s.stop('Claude Code configured');
120
132
  p.note([
121
- `${pc.green('~/.claude.json')} MCP server registered`,
133
+ `${pc.green('~/.claude.json')} MCP server registered`,
122
134
  `${pc.green('~/.claude/settings.json')} Permissions granted`,
123
135
  `${pc.green('~/.claude/CLAUDE.md')} Behavioral instructions installed`,
124
136
  ].join('\n'), 'Files updated');
125
137
  }
138
+ const DBRAIN_START = '<!-- dbrain:start -->';
139
+ const DBRAIN_END = '<!-- dbrain:end -->';
140
+ function writeDbrainMdSection(filePath, content) {
141
+ const text = content.trim().replace('{hostname}', hostname().toLowerCase());
142
+ const section = `${DBRAIN_START}\n${text}\n${DBRAIN_END}`;
143
+ let mdContent = section;
144
+ if (existsSync(filePath)) {
145
+ const existing = readFileSync(filePath, 'utf-8');
146
+ const startIdx = existing.indexOf(DBRAIN_START);
147
+ const endIdx = existing.indexOf(DBRAIN_END);
148
+ if (startIdx !== -1 && endIdx !== -1) {
149
+ const before = existing.slice(0, startIdx).trim();
150
+ const after = existing.slice(endIdx + DBRAIN_END.length).trim();
151
+ const parts = [before, section, after].filter(Boolean);
152
+ mdContent = parts.join('\n\n');
153
+ }
154
+ else if (existing.trim()) {
155
+ mdContent = section + '\n\n' + existing.trim();
156
+ }
157
+ }
158
+ writeFileSync(filePath, mdContent.trim() + '\n', 'utf-8');
159
+ }
160
+ const DBRAIN_MCP_TOML_START = '# dbrain MCP';
161
+ const DBRAIN_MCP_TOML_END = '# /dbrain MCP';
162
+ function configureCodex(brainConfig, url, token, s) {
163
+ s.start('Configuring Codex CLI');
164
+ const codexDir = join(homedir(), '.codex');
165
+ const configToml = join(codexDir, 'config.toml');
166
+ const agentsMd = join(codexDir, 'AGENTS.md');
167
+ mkdirSync(codexDir, { recursive: true });
168
+ let toml = '';
169
+ if (existsSync(configToml)) {
170
+ try {
171
+ toml = readFileSync(configToml, 'utf-8');
172
+ }
173
+ catch {
174
+ /* corrupt config, start fresh */
175
+ }
176
+ }
177
+ const mcpSection = [
178
+ DBRAIN_MCP_TOML_START,
179
+ '[mcp_servers.dbrain]',
180
+ `url = "${url}/mcp"`,
181
+ 'default_tools_approval_mode = "approve"',
182
+ '',
183
+ '[mcp_servers.dbrain.http_headers]',
184
+ `Authorization = "Bearer ${token}"`,
185
+ DBRAIN_MCP_TOML_END,
186
+ ].join('\n');
187
+ const startIdx = toml.indexOf(DBRAIN_MCP_TOML_START);
188
+ const endIdx = toml.indexOf(DBRAIN_MCP_TOML_END);
189
+ if (startIdx !== -1 && endIdx !== -1) {
190
+ const before = toml.slice(0, startIdx).trimEnd();
191
+ const after = toml.slice(endIdx + DBRAIN_MCP_TOML_END.length).trimStart();
192
+ const parts = [before, mcpSection, after].filter(Boolean);
193
+ toml = parts.join('\n\n');
194
+ }
195
+ else {
196
+ toml = (toml.trimEnd() + '\n\n' + mcpSection).trimStart();
197
+ }
198
+ writeFileSync(configToml, toml.trim() + '\n', 'utf-8');
199
+ writeDbrainMdSection(agentsMd, brainConfig.claudeMd);
200
+ s.stop('Codex CLI configured');
201
+ p.note([
202
+ `${pc.green('~/.codex/config.toml')} MCP server registered`,
203
+ `${pc.green('~/.codex/AGENTS.md')} Behavioral instructions installed`,
204
+ ].join('\n'), 'Files updated');
205
+ }
206
+ const DBRAIN_POLICY = `[[rule]]
207
+ mcpName = "dbrain"
208
+ toolName = "*"
209
+ decision = "allow"
210
+ priority = 200
211
+ modes = ["default", "autoEdit", "yolo"]
212
+ `;
213
+ function configureGemini(config, url, token, s) {
214
+ s.start('Configuring Gemini CLI');
215
+ const geminiDir = join(homedir(), '.gemini');
216
+ const settingsJson = join(geminiDir, 'settings.json');
217
+ const policiesDir = join(geminiDir, 'policies');
218
+ const policyFile = join(policiesDir, 'dbrain.toml');
219
+ const geminiMd = join(geminiDir, 'GEMINI.md');
220
+ mkdirSync(geminiDir, { recursive: true });
221
+ mkdirSync(policiesDir, { recursive: true });
222
+ let settings = {};
223
+ if (existsSync(settingsJson)) {
224
+ try {
225
+ settings = JSON.parse(readFileSync(settingsJson, 'utf-8'));
226
+ }
227
+ catch {
228
+ /* corrupt config, start fresh */
229
+ }
230
+ }
231
+ if (!settings.mcpServers)
232
+ settings.mcpServers = {};
233
+ const mcpServers = settings.mcpServers;
234
+ mcpServers['dbrain'] = {
235
+ url: `${url}/mcp`,
236
+ headers: { Authorization: `Bearer ${token}` },
237
+ };
238
+ writeFileSync(settingsJson, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
239
+ writeFileSync(policyFile, DBRAIN_POLICY, 'utf-8');
240
+ writeDbrainMdSection(geminiMd, config.claudeMd);
241
+ s.stop('Gemini CLI configured');
242
+ p.note([
243
+ `${pc.green('~/.gemini/settings.json')} MCP server registered`,
244
+ `${pc.green('~/.gemini/policies/dbrain.toml')} Auto-approve dbrain tools`,
245
+ `${pc.green('~/.gemini/GEMINI.md')} Behavioral instructions installed`,
246
+ ].join('\n'), 'Files updated');
247
+ }
248
+ function configureOpenCode(brainConfig, url, token, s) {
249
+ s.start('Configuring OpenCode');
250
+ const opencodeDir = join(homedir(), '.config', 'opencode');
251
+ const configJson = join(opencodeDir, 'opencode.json');
252
+ const agentsMd = join(opencodeDir, 'AGENTS.md');
253
+ mkdirSync(opencodeDir, { recursive: true });
254
+ let config = {};
255
+ if (existsSync(configJson)) {
256
+ try {
257
+ config = JSON.parse(readFileSync(configJson, 'utf-8'));
258
+ }
259
+ catch {
260
+ /* corrupt config, start fresh */
261
+ }
262
+ }
263
+ if (!config.mcp)
264
+ config.mcp = {};
265
+ const mcp = config.mcp;
266
+ mcp['dbrain'] = {
267
+ url: `${url}/mcp`,
268
+ headers: { Authorization: `Bearer ${token}` },
269
+ enabled: true,
270
+ type: 'remote',
271
+ };
272
+ if (!config.permission)
273
+ config.permission = {};
274
+ const permission = config.permission;
275
+ permission['dbrain_*'] = 'allow';
276
+ writeFileSync(configJson, JSON.stringify(config, null, 2) + '\n', 'utf-8');
277
+ writeDbrainMdSection(agentsMd, brainConfig.claudeMd);
278
+ s.stop('OpenCode configured');
279
+ p.note([
280
+ `${pc.green('~/.config/opencode/opencode.json')} MCP server + permissions registered`,
281
+ `${pc.green('~/.config/opencode/AGENTS.md')} Behavioral instructions installed`,
282
+ ].join('\n'), 'Files updated');
283
+ }
126
284
  //# sourceMappingURL=connect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/cli/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/cli/connect.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -1,47 +1,58 @@
1
1
  #!/usr/bin/env node
2
- import { argv } from 'node:process';
3
- const command = argv[2];
4
- async function main() {
5
- switch (command) {
6
- case 'init': {
7
- const { init } = await import('./init.js');
8
- const nonInteractive = argv.includes('--non-interactive');
9
- const pathArg = argv.slice(3).find((a) => !a.startsWith('--'));
10
- await init(pathArg, { nonInteractive });
11
- break;
12
- }
13
- case 'start': {
14
- const { start } = await import('./start.js');
15
- await start(argv[3]);
16
- break;
17
- }
18
- case 'connect': {
19
- const { connect } = await import('./connect.js');
20
- const connectArgs = argv.slice(3).filter((a) => !a.startsWith('--'));
21
- const tokenFlag = argv.find((a) => a.startsWith('--token='))?.split('=')[1];
22
- await connect(connectArgs[0], connectArgs[1], tokenFlag);
23
- break;
24
- }
25
- case 'status': {
26
- const { status } = await import('./status.js');
27
- await status(argv[3]);
28
- break;
29
- }
30
- default:
31
- console.log(`
32
- dbrain — Your distributed mind. Wherever you go, I remember.
33
-
34
- Usage:
35
- dbrain init [path] Initialize a new brain (server)
36
- dbrain start [path] Wake up
37
- dbrain connect <client> [url] [--token=] Connect a client to a brain
38
- clients: claude, opencode
39
- dbrain status [path] Check brain status
40
- `);
41
- }
42
- }
43
- main().catch((err) => {
44
- console.error(err.message);
45
- process.exit(1);
2
+ import { readFileSync } from 'node:fs';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { Command } from 'commander';
6
+ import pc from 'picocolors';
7
+ const __dirname = dirname(fileURLToPath(import.meta.url));
8
+ const pkg = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
9
+ const program = new Command();
10
+ const banner = `\
11
+ _ _ _
12
+ | | | (_)
13
+ __| | |__ _ __ __ _ _ _ __
14
+ / _\` | '_ \\| '__/ _\` | | '_ \\
15
+ | (_| | |_) | | | (_| | | | | |
16
+ \\__,_|_.__/|_| \\__,_|_|_| |_|`;
17
+ const description = `${pc.green(banner)}\n\n${pc.green('Your distributed mind. Wherever you go, I remember.')}\n${pc.dim('Part of the dtoolkit suite')}`;
18
+ program
19
+ .name('dbrain')
20
+ .description(description)
21
+ .version(pkg.version);
22
+ program
23
+ .command('init')
24
+ .description('Initialize a new brain (server)')
25
+ .argument('[path]', 'Data path')
26
+ .option('--non-interactive', 'Non-interactive mode (for Docker/CI)')
27
+ .action(async (path, opts) => {
28
+ const { init } = await import('./init.js');
29
+ await init(path, { nonInteractive: opts.nonInteractive });
46
30
  });
31
+ program
32
+ .command('start')
33
+ .description('Wake up')
34
+ .argument('[path]', 'Data path')
35
+ .action(async (path) => {
36
+ const { start } = await import('./start.js');
37
+ await start(path);
38
+ });
39
+ program
40
+ .command('connect')
41
+ .description('Connect a client to a brain')
42
+ .argument('<client>', 'Client to configure (claude, codex, gemini, opencode)')
43
+ .argument('[url]', 'Brain URL')
44
+ .option('--token <token>', 'Access token')
45
+ .action(async (client, url, opts) => {
46
+ const { connect } = await import('./connect.js');
47
+ await connect(client, url, opts.token);
48
+ });
49
+ program
50
+ .command('status')
51
+ .description('Check brain status')
52
+ .argument('[path]', 'Data path')
53
+ .action(async (path) => {
54
+ const { status } = await import('./status.js');
55
+ await status(path);
56
+ });
57
+ program.parse();
47
58
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YACxC,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM;QACR,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACzD,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM;QACR,CAAC;QACD;YACE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;CASjB,CAAC,CAAC;IACD,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,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,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAElF,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,MAAM,MAAM,GAAG;;;;;;kCAMmB,CAAC;AAEnC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,qDAAqD,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,CAAC;AAEzJ,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,WAAW,CAAC;KACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iCAAiC,CAAC;KAC9C,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;KAC/B,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAAkC,EAAE,EAAE;IAC7E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,SAAS,CAAC;KACtB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IACzC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,QAAQ,CAAC,UAAU,EAAE,uDAAuD,CAAC;KAC7E,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;KAC9B,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,GAAuB,EAAE,IAAwB,EAAE,EAAE;IAClF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oBAAoB,CAAC;KACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IACzC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1,2 +1,2 @@
1
- export { computeTier, type TierConfig } from "@dtoolkit/core";
1
+ export { computeTier, type TierConfig } from '@dtoolkit/core';
2
2
  //# sourceMappingURL=memory.d.ts.map
@@ -1,2 +1,2 @@
1
- export { computeTier } from "@dtoolkit/core";
1
+ export { computeTier } from '@dtoolkit/core';
2
2
  //# sourceMappingURL=memory.js.map
@@ -1,2 +1,2 @@
1
- export { EntityType, type Entity, EntitySchema, ParaCategory, Tier, type Fact, FactSchema, type TierConfig, computeTier, } from "@dtoolkit/core";
1
+ export { EntityType, type Entity, EntitySchema, ParaCategory, Tier, type Fact, FactSchema, type TierConfig, computeTier, } from '@dtoolkit/core';
2
2
  //# sourceMappingURL=models.d.ts.map
@@ -1,2 +1,2 @@
1
- export { EntityType, EntitySchema, ParaCategory, Tier, FactSchema, computeTier, } from "@dtoolkit/core";
1
+ export { EntityType, EntitySchema, ParaCategory, Tier, FactSchema, computeTier, } from '@dtoolkit/core';
2
2
  //# sourceMappingURL=models.js.map
@@ -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;AAmC/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;AAsC/C,wBAAsB,YAAY,CAAC,GAAG,EAAE,eAAe,iBAoDtD"}
@@ -16,7 +16,7 @@ You have an AI brain connected via MCP (dbrain). This is your persistent memory
16
16
 
17
17
  ## When to use each tool
18
18
 
19
- - \`recall\` — Search before answering. Use this BEFORE responding to any question about the user, their preferences, projects, people they know, or past conversations. Also returns your identity docs. When in doubt, search first.
19
+ - \`recall\` — Search the brain. Use when you need to look up something about the user, their preferences, projects, people, or past conversations. Also returns identity docs. Skip if "Session Context (from dbrain)" is already in your context.
20
20
  - \`remember\` — Save important facts. Use when the user shares preferences, makes decisions, mentions personal details, or says "remember this". One clear atomic fact per call.
21
21
  - \`log\` — Store conversation messages. Use periodically to log what's happening in the conversation. Send both user and assistant messages.
22
22
  - \`get_entity\` — Deep dive. When you need full context about a specific project, person, or system.
@@ -28,9 +28,12 @@ You have an AI brain connected via MCP (dbrain). This is your persistent memory
28
28
 
29
29
  ## Rules
30
30
 
31
- - At the start of every conversation, call \`recall\` with the user's first question or topic. This gives you both search results AND your identity.
31
+ - **IMPORTANT**: If your context already contains "Session Context (from dbrain)", your identity and project facts are already loaded by dcontext. Do NOT call \`recall\` at the start. Only use \`recall\` later if the user asks about something not in the injected context.
32
+ - If there is NO "Session Context (from dbrain)" in your context, call \`recall\` with the user's first question or topic at the start of the conversation.
32
33
  - Never say "I don't know" about the user without searching first.
33
34
  - When storing facts, be specific and atomic. "Favorite ice cream is pistachio" not "We talked about food preferences".
35
+ - 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
+ - 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}\`.
34
37
  `;
35
38
  export async function healthRoutes(app) {
36
39
  app.get('/health', async () => {
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BzB,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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dtoolkit/dbrain",
3
- "version": "0.2.5",
3
+ "version": "0.3.0",
4
4
  "description": "Your distributed mind. Persistent knowledge across all your AIs.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -37,11 +37,12 @@
37
37
  "@clack/prompts": "^1.3.0",
38
38
  "@modelcontextprotocol/sdk": "^1.29.0",
39
39
  "better-sqlite3": "^12.9.0",
40
+ "commander": "^13.1.0",
40
41
  "dotenv": "^17.4.2",
41
42
  "fastify": "^5.8.5",
42
43
  "picocolors": "^1.1.1",
43
44
  "zod": "^4.4.2",
44
- "@dtoolkit/core": "0.2.2"
45
+ "@dtoolkit/core": "0.4.0"
45
46
  },
46
47
  "devDependencies": {
47
48
  "@types/better-sqlite3": "^7.6.13",