@magic-ingredients/tiny-brain-local 0.6.0 → 0.8.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.
Files changed (67) hide show
  1. package/README.md +4 -4
  2. package/dist/cli/cli-factory.d.ts.map +1 -1
  3. package/dist/cli/cli-factory.js +27 -1
  4. package/dist/cli/cli-factory.js.map +1 -1
  5. package/dist/cli/commands/config.command.d.ts +17 -0
  6. package/dist/cli/commands/config.command.d.ts.map +1 -0
  7. package/dist/cli/commands/config.command.js +117 -0
  8. package/dist/cli/commands/config.command.js.map +1 -0
  9. package/dist/cli/commands/status.command.d.ts +7 -1
  10. package/dist/cli/commands/status.command.d.ts.map +1 -1
  11. package/dist/cli/commands/status.command.js +273 -12
  12. package/dist/cli/commands/status.command.js.map +1 -1
  13. package/dist/cli/installers/claude-code-installer.d.ts.map +1 -1
  14. package/dist/cli/installers/claude-code-installer.js +22 -1
  15. package/dist/cli/installers/claude-code-installer.js.map +1 -1
  16. package/dist/cli/installers/installer-factory.d.ts.map +1 -1
  17. package/dist/cli/installers/installer-factory.js +10 -9
  18. package/dist/cli/installers/installer-factory.js.map +1 -1
  19. package/dist/cli/utils/system-info.d.ts +20 -0
  20. package/dist/cli/utils/system-info.d.ts.map +1 -0
  21. package/dist/cli/utils/system-info.js +90 -0
  22. package/dist/cli/utils/system-info.js.map +1 -0
  23. package/dist/core/mcp-server.d.ts +51 -3
  24. package/dist/core/mcp-server.d.ts.map +1 -1
  25. package/dist/core/mcp-server.js +306 -44
  26. package/dist/core/mcp-server.js.map +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +113 -29
  29. package/dist/index.js.map +1 -1
  30. package/dist/prompts/persona/persona.prompt.d.ts.map +1 -1
  31. package/dist/prompts/persona/persona.prompt.js +12 -13
  32. package/dist/prompts/persona/persona.prompt.js.map +1 -1
  33. package/dist/services/credential-storage.service.d.ts +26 -0
  34. package/dist/services/credential-storage.service.d.ts.map +1 -0
  35. package/dist/services/credential-storage.service.js +149 -0
  36. package/dist/services/credential-storage.service.js.map +1 -0
  37. package/dist/services/enhanced-persona-service.d.ts +22 -0
  38. package/dist/services/enhanced-persona-service.d.ts.map +1 -0
  39. package/dist/services/enhanced-persona-service.js +174 -0
  40. package/dist/services/enhanced-persona-service.js.map +1 -0
  41. package/dist/services/plan-watcher.service.d.ts.map +1 -1
  42. package/dist/services/plan-watcher.service.js +5 -0
  43. package/dist/services/plan-watcher.service.js.map +1 -1
  44. package/dist/services/remote/auth-token-service.d.ts +55 -0
  45. package/dist/services/remote/auth-token-service.d.ts.map +1 -0
  46. package/dist/services/remote/auth-token-service.js +188 -0
  47. package/dist/services/remote/auth-token-service.js.map +1 -0
  48. package/dist/services/remote/persona-sync-service.d.ts +131 -0
  49. package/dist/services/remote/persona-sync-service.d.ts.map +1 -0
  50. package/dist/services/remote/persona-sync-service.js +560 -0
  51. package/dist/services/remote/persona-sync-service.js.map +1 -0
  52. package/dist/services/remote/system-persona-service.d.ts +43 -0
  53. package/dist/services/remote/system-persona-service.d.ts.map +1 -0
  54. package/dist/services/remote/system-persona-service.js +261 -0
  55. package/dist/services/remote/system-persona-service.js.map +1 -0
  56. package/dist/tools/persona/as.tool.d.ts +6 -2
  57. package/dist/tools/persona/as.tool.d.ts.map +1 -1
  58. package/dist/tools/persona/as.tool.js +146 -87
  59. package/dist/tools/persona/as.tool.js.map +1 -1
  60. package/dist/tools/persona/persona.tool.d.ts.map +1 -1
  61. package/dist/tools/persona/persona.tool.js +20 -6
  62. package/dist/tools/persona/persona.tool.js.map +1 -1
  63. package/dist/types/local-context.d.ts +17 -0
  64. package/dist/types/local-context.d.ts.map +1 -0
  65. package/dist/types/local-context.js +7 -0
  66. package/dist/types/local-context.js.map +1 -0
  67. package/package.json +54 -5
@@ -3,12 +3,17 @@
3
3
  *
4
4
  * Simplified MCP server for local execution without deployment complexity
5
5
  */
6
+ import * as path from 'path';
6
7
  import { Server as McpServer } from '@modelcontextprotocol/sdk/server/index.js';
7
8
  import { ListToolsRequestSchema, CallToolRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, SetLevelRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
9
+ import { AuthTokenService } from '../services/remote/auth-token-service.js';
10
+ import { CredentialStorageService } from '../services/credential-storage.service.js';
11
+ import { SystemPersonaService } from '../services/remote/system-persona-service.js';
8
12
  import { LocalFilesystemStorageAdapter } from '../storage/local-filesystem-adapter.js';
9
13
  import { FileLogger } from './file-logger.js';
10
14
  import { ToolRegistry } from '../tools/tool-registry.js';
11
15
  import { PromptRegistry } from '../prompts/prompt-registry.js';
16
+ import { PlanWatcherService } from '../services/plan-watcher.service.js';
12
17
  /**
13
18
  * MCP Server for local execution
14
19
  */
@@ -22,26 +27,58 @@ export class MCPServer {
22
27
  userId = 'local-user';
23
28
  personaChangeListeners = [];
24
29
  instanceId = `mcp-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
30
+ planWatcher = null;
31
+ baseContext;
32
+ authToken;
33
+ authTokenService;
25
34
  constructor(config = {}) {
35
+ // Extract dataDir and logLevel for backward compatibility
36
+ // DXT passes config as uppercase env vars
37
+ const dataDir = config.debug?.dataDir || process.env.DATADIR || process.env.TINY_BRAIN_DATA_DIR || '~/.tiny-brain';
38
+ const logLevel = config.debug?.logLevel || (process.env.LOGLEVEL || process.env.LOG_LEVEL) || 'info';
26
39
  this.config = {
27
- name: 'tiny-brain-local',
28
- version: '0.3.7',
29
- dataDir: process.env.TINY_BRAIN_DATA_DIR || '~/.tiny-brain',
30
- logLevel: process.env.LOG_LEVEL || 'info',
31
- watchAutoOpen: true,
40
+ name: config.name || 'tiny-brain-local',
41
+ version: config.version || '0.0.0',
42
+ autoStartWatch: config.autoStartWatch !== undefined
43
+ ? config.autoStartWatch
44
+ : (process.env.AUTOSTARTWATCH !== 'false' && process.env.TINY_BRAIN_AUTO_START_WATCH !== 'false'),
45
+ account: {
46
+ clientId: config.account?.clientId,
47
+ clientSecret: config.account?.clientSecret,
48
+ },
49
+ debug: {
50
+ dataDir,
51
+ logLevel,
52
+ },
32
53
  ...config,
33
54
  };
34
55
  // Create logger - file logger for local (stdio transport requires no console output)
56
+ // Resolve data directory for log file
57
+ let resolvedDataDir = dataDir;
58
+ if (resolvedDataDir.startsWith('~')) {
59
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '';
60
+ resolvedDataDir = homeDir + resolvedDataDir.slice(1);
61
+ }
35
62
  this.logger = new FileLogger({
36
- logLevel: this.config.logLevel,
63
+ logFilePath: path.join(resolvedDataDir, 'debug.log'),
64
+ logLevel: this.config.debug?.logLevel || 'info',
37
65
  enabled: true,
38
66
  });
39
67
  // Create storage - always local filesystem for local package
40
68
  this.storage = new LocalFilesystemStorageAdapter({
41
- baseDir: this.config.dataDir,
69
+ baseDir: this.config.debug?.dataDir || '~/.tiny-brain',
42
70
  });
43
71
  // Generate session ID
44
72
  this.sessionId = `local-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
73
+ // Create base context that will be reused throughout the server
74
+ this.baseContext = {
75
+ userId: this.userId,
76
+ sessionId: this.sessionId,
77
+ storage: this.storage,
78
+ logger: this.logger,
79
+ requestId: `server-${Date.now()}`, // Will be overridden per request
80
+ timestamp: new Date()
81
+ };
45
82
  // Create MCP server instance
46
83
  this.server = new McpServer({
47
84
  name: this.config.name,
@@ -72,46 +109,268 @@ export class MCPServer {
72
109
  getConfig() {
73
110
  return this.config;
74
111
  }
112
+ /**
113
+ * Get the auth token service for testing
114
+ */
115
+ getAuthTokenService() {
116
+ return this.authTokenService;
117
+ }
75
118
  /**
76
119
  * Initialize the server
77
120
  */
78
121
  async initialize() {
79
122
  this.logger.info('Initializing Local MCP Server', {
80
- dataDir: this.config.dataDir,
81
- logLevel: this.config.logLevel,
123
+ dataDir: this.config.debug?.dataDir,
124
+ logLevel: this.config.debug?.logLevel,
125
+ configAccount: this.config.account ? 'present' : 'missing'
82
126
  });
83
127
  try {
84
- // Initialize user storage first
85
- await this.storage.initializeUserStorage(this.userId);
86
- // Load default persona if available
87
- try {
88
- const personas = await this.storage.listPersonas();
89
- if (personas.length > 0) {
90
- this.activePersona = personas[0];
91
- this.logger.info(`Loaded default persona: ${this.activePersona}`);
92
- }
93
- else {
94
- // Create default persona
95
- await this.storage.storePersonaFile('default', 'profile.json', JSON.stringify({
96
- id: 'default',
97
- name: 'Default',
98
- description: 'Default persona',
99
- created: new Date().toISOString(),
100
- }, null, 2), this.userId);
101
- this.activePersona = 'default';
102
- this.logger.info('Created default persona');
128
+ // Phase 0: Resolve authentication credentials (Config → File → Env)
129
+ this.logger.info('Starting credential resolution phase');
130
+ await this.resolveAuthCredentials();
131
+ this.logger.info('Credential resolution complete');
132
+ // Phase 1: Initialize storage
133
+ await this.initializeStorage();
134
+ // Phase 2: Initialize remote authentication
135
+ await this.initializeRemoteAuth();
136
+ // Phase 3: Initialize local personas
137
+ await this.initializePersonas();
138
+ // Phase 4: Initialize remote personas (sync)
139
+ await this.initializeRemotePersonas();
140
+ // Phase 5: Start plan watcher if configured
141
+ await this.initializePlanWatcher();
142
+ }
143
+ catch (error) {
144
+ this.logger.error('Failed to initialize MCP server', error);
145
+ throw error;
146
+ }
147
+ }
148
+ /**
149
+ * Load and resolve credentials with clear precedence
150
+ *
151
+ * Resolution order:
152
+ * 1. MCP Config (from Claude Desktop) - highest priority
153
+ * 2. Encrypted local storage file - medium priority
154
+ * 3. Environment variables - fallback
155
+ */
156
+ async resolveAuthCredentials() {
157
+ this.logger.info('Resolving authentication credentials...');
158
+ // Step 1: Check if credentials are provided via MCP config (Claude Desktop)
159
+ const hasConfigCredentials = !!(this.config.account?.clientId && this.config.account?.clientSecret);
160
+ if (hasConfigCredentials) {
161
+ this.logger.info('✓ Using credentials from MCP config (Claude Desktop)');
162
+ return;
163
+ }
164
+ // Step 2: No config credentials - try loading from encrypted file
165
+ this.logger.debug('No MCP config credentials found, checking encrypted storage...');
166
+ try {
167
+ const credentialService = new CredentialStorageService();
168
+ const storedCredentials = await credentialService.getCredentials();
169
+ if (storedCredentials?.clientId && storedCredentials?.clientSecret) {
170
+ // Initialize account object if needed
171
+ if (!this.config.account) {
172
+ this.config.account = {};
103
173
  }
174
+ // Use stored credentials
175
+ this.config.account.clientId = storedCredentials.clientId;
176
+ this.config.account.clientSecret = storedCredentials.clientSecret;
177
+ this.logger.info('✓ Using credentials from encrypted local storage');
178
+ return;
104
179
  }
105
- catch (error) {
106
- this.logger.warn('Could not load personas, using default', error);
107
- this.activePersona = 'default';
180
+ else if (storedCredentials?.clientId || storedCredentials?.clientSecret) {
181
+ this.logger.warn('Incomplete credentials in encrypted storage');
182
+ }
183
+ else {
184
+ this.logger.debug('No credentials found in encrypted storage');
108
185
  }
109
186
  }
187
+ catch (error) {
188
+ this.logger.warn('Failed to load encrypted credentials', error);
189
+ }
190
+ // Step 3: Fall back to environment variables
191
+ this.logger.debug('Checking environment variables for credentials...');
192
+ const envClientId = process.env.CLIENTID || process.env.TINY_BRAIN_CLIENT_ID;
193
+ const envClientSecret = process.env.CLIENTSECRET || process.env.TINY_BRAIN_CLIENT_SECRET;
194
+ if (envClientId || envClientSecret) {
195
+ if (!this.config.account) {
196
+ this.config.account = {};
197
+ }
198
+ if (envClientId) {
199
+ this.config.account.clientId = envClientId;
200
+ }
201
+ if (envClientSecret) {
202
+ this.config.account.clientSecret = envClientSecret;
203
+ }
204
+ this.logger.info('✓ Using credentials from environment variables');
205
+ }
206
+ else {
207
+ this.logger.info('ℹ No credentials found. Use "tiny-brain config set" to store credentials.');
208
+ }
209
+ }
210
+ /**
211
+ * Initialize storage
212
+ */
213
+ async initializeStorage() {
214
+ this.logger.info('Initializing user storage...');
215
+ try {
216
+ await this.storage.initializeUserStorage(this.userId);
217
+ this.logger.info('User storage initialized successfully');
218
+ }
110
219
  catch (error) {
111
220
  this.logger.error('Failed to initialize storage', error);
112
221
  throw error;
113
222
  }
114
223
  }
224
+ /**
225
+ * Initialize remote authentication
226
+ */
227
+ async initializeRemoteAuth() {
228
+ // Check for remote auth credentials
229
+ if (!this.config.account?.clientId || !this.config.account?.clientSecret) {
230
+ this.logger.info('No remote credentials configured, running in local-only mode');
231
+ return;
232
+ }
233
+ this.logger.info('Initializing remote authentication...', {
234
+ hasClientId: !!this.config.account?.clientId,
235
+ clientIdPreview: this.config.account?.clientId ?
236
+ this.config.account.clientId.substring(0, 15) + '...' : 'none'
237
+ });
238
+ try {
239
+ // Create auth service with context and config
240
+ this.authTokenService = new AuthTokenService(this.baseContext, this.config);
241
+ const token = await this.authTokenService.authenticate();
242
+ if (token) {
243
+ this.logger.info('Successfully authenticated with tiny-brain service', {
244
+ expiresIn: token.expiresIn,
245
+ tokenPreview: token.token.substring(0, 20) + '...'
246
+ });
247
+ // Store the token for use by services that need remote access
248
+ this.authToken = token;
249
+ }
250
+ else {
251
+ // authenticate() already logged the specific reason
252
+ this.logger.info('Continuing in local-only mode - authentication returned null');
253
+ this.authToken = undefined;
254
+ }
255
+ }
256
+ catch (error) {
257
+ this.logger.error('Unexpected error during remote authentication', error);
258
+ // Continue in local mode - don't fail the entire initialization
259
+ }
260
+ }
261
+ /**
262
+ * Initialize local personas
263
+ */
264
+ async initializePersonas() {
265
+ this.logger.info('Initializing personas...');
266
+ try {
267
+ const personas = await this.storage.listPersonas();
268
+ this.logger.info(`Found ${personas.length} existing personas`);
269
+ if (personas.length > 0) {
270
+ this.activePersona = personas[0];
271
+ this.logger.info(`Loaded default persona: ${this.activePersona}`);
272
+ }
273
+ else {
274
+ // Create default persona
275
+ await this.createDefaultPersona();
276
+ }
277
+ }
278
+ catch (error) {
279
+ this.logger.warn('Could not load personas, creating default', error);
280
+ await this.createDefaultPersona();
281
+ }
282
+ }
283
+ /**
284
+ * Create default persona
285
+ */
286
+ async createDefaultPersona() {
287
+ try {
288
+ await this.storage.storePersonaFile('default', 'profile.json', JSON.stringify({
289
+ id: 'default',
290
+ name: 'Default',
291
+ description: 'Default persona',
292
+ created: new Date().toISOString(),
293
+ }, null, 2), this.userId);
294
+ this.activePersona = 'default';
295
+ this.logger.info('Created default persona');
296
+ }
297
+ catch (error) {
298
+ this.logger.error('Failed to create default persona', error);
299
+ // Set default anyway to continue
300
+ this.activePersona = 'default';
301
+ }
302
+ }
303
+ /**
304
+ * Initialize remote personas (just verify connection, don't sync)
305
+ */
306
+ async initializeRemotePersonas() {
307
+ // Only check if we have authentication
308
+ if (!this.authToken) {
309
+ this.logger.debug('Skipping remote persona check - not authenticated');
310
+ return;
311
+ }
312
+ this.logger.info('Checking remote persona availability...');
313
+ try {
314
+ // Create context with auth token for the system persona service
315
+ const context = {
316
+ ...this.baseContext,
317
+ authToken: this.authToken,
318
+ config: this.config,
319
+ };
320
+ // Just check if we can connect and fetch personas (don't sync them locally)
321
+ const systemPersonaService = new SystemPersonaService(context);
322
+ if (systemPersonaService.isAuthenticated()) {
323
+ const personas = await systemPersonaService.fetchSystemPersonas();
324
+ this.logger.info(`Remote service has ${personas.length} system personas available`);
325
+ }
326
+ else {
327
+ this.logger.info('Remote persona service not authenticated');
328
+ }
329
+ }
330
+ catch (error) {
331
+ this.logger.warn('Failed to check remote personas', error);
332
+ // Continue without remote personas - this is optional
333
+ }
334
+ }
335
+ /**
336
+ * Initialize plan watcher
337
+ */
338
+ async initializePlanWatcher() {
339
+ if (!this.config.autoStartWatch) {
340
+ this.logger.debug('Plan watcher auto-start disabled');
341
+ return;
342
+ }
343
+ // Add a small delay to ensure server is fully initialized
344
+ setTimeout(async () => {
345
+ try {
346
+ this.logger.info('Auto-starting plan watcher dashboard...');
347
+ // Create minimal context for the plan watcher
348
+ // We cast as 'any' since plan watcher only needs logger and storage
349
+ const context = {
350
+ logger: this.logger,
351
+ storage: this.storage,
352
+ personaChangeListeners: this.personaChangeListeners,
353
+ getCurrentActivePersona: () => this.activePersona || 'default',
354
+ };
355
+ // Create and start the plan watcher
356
+ this.planWatcher = new PlanWatcherService(context);
357
+ const result = await this.planWatcher.start({
358
+ port: 8765,
359
+ autoOpen: false, // Don't auto-open browser on server start
360
+ });
361
+ if (result.success) {
362
+ this.logger.info(`Plan watcher dashboard started at ${result.data?.url}`);
363
+ }
364
+ else {
365
+ this.logger.warn('Failed to auto-start plan watcher:', result.error?.message || result.error);
366
+ }
367
+ }
368
+ catch (error) {
369
+ this.logger.warn('Error auto-starting plan watcher:', error instanceof Error ? error.message : error);
370
+ // Don't throw - this is optional functionality
371
+ }
372
+ }, 1000); // 1 second delay
373
+ }
115
374
  /**
116
375
  * Connect to transport
117
376
  */
@@ -124,6 +383,16 @@ export class MCPServer {
124
383
  */
125
384
  async shutdown() {
126
385
  this.logger.info('Shutting down Local MCP Server');
386
+ // Stop plan watcher if running
387
+ if (this.planWatcher) {
388
+ try {
389
+ await this.planWatcher.stop();
390
+ this.logger.info('Plan watcher stopped');
391
+ }
392
+ catch (error) {
393
+ this.logger.warn('Error stopping plan watcher:', error);
394
+ }
395
+ }
127
396
  await this.server.close();
128
397
  }
129
398
  // Tool handlers
@@ -146,17 +415,14 @@ export class MCPServer {
146
415
  }
147
416
  } : undefined;
148
417
  const context = {
149
- sessionId: this.sessionId,
418
+ ...this.baseContext,
150
419
  userId: (typeof args?.userId === 'string' ? args.userId : undefined) || this.userId,
151
- storage: this.storage,
152
- logger: this.logger.child(name),
153
420
  input: args || {},
154
- conversationId: `conv-${this.sessionId}`,
155
- enhancementActive: false,
156
421
  requestId: `req-${Date.now()}`,
157
422
  timestamp: new Date(),
158
- deploymentMode: 'local',
159
423
  activePersona,
424
+ authToken: this.authToken,
425
+ config: this.config,
160
426
  updateActivePersona: (persona) => {
161
427
  const newPersonaId = persona?.id || 'default';
162
428
  this.activePersona = newPersonaId;
@@ -235,17 +501,13 @@ export class MCPServer {
235
501
  }
236
502
  } : undefined;
237
503
  const context = {
238
- sessionId: this.sessionId,
239
- userId: this.userId,
240
- storage: this.storage,
241
- logger: this.logger.child(`prompt:${name}`),
504
+ ...this.baseContext,
242
505
  input: args || {},
243
- conversationId: `conv-${this.sessionId}`,
244
- enhancementActive: false,
245
506
  requestId: `req-${Date.now()}`,
246
507
  timestamp: new Date(),
247
- deploymentMode: 'local',
248
508
  activePersona,
509
+ authToken: this.authToken,
510
+ config: this.config,
249
511
  updateActivePersona: (persona) => {
250
512
  const newPersonaId = persona?.id || 'default';
251
513
  this.activePersona = newPersonaId;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,oCAAoC,CAAC;AAc5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAa/D;;GAEG;AACH,MAAM,OAAO,SAAS;IACZ,MAAM,CAAY;IAClB,OAAO,CAA2B;IAClC,MAAM,CAAa;IACnB,MAAM,CAAY;IAClB,SAAS,CAAS;IAClB,aAAa,GAAW,SAAS,CAAC;IAClC,MAAM,GAAW,YAAY,CAAC;IAC9B,sBAAsB,GAAuD,EAAE,CAAC;IAChF,UAAU,GAAW,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAE/F,YAAY,SAAoB,EAAE;QAChC,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,eAAe;YAC3D,QAAQ,EAAG,OAAO,CAAC,GAAG,CAAC,SAAsB,IAAI,MAAM;YACvD,aAAa,EAAE,IAAI;YACnB,GAAG,MAAM;SACV,CAAC;QAEF,qFAAqF;QACrF,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC;YAC3B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,6DAA6D;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,6BAA6B,CAAC;YAC/C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAiB;SACvC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAErF,6BAA6B;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CACzB;YACE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAc;YAChC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAiB;SACvC,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;aACZ;SACF,CACF,CAAC;QAEF,kBAAkB;QAClB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAErF,oBAAoB;QACpB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEvF,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;YAChD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,gCAAgC;YAChC,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEtD,oCAAoC;YACpC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBACnD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;gBACpE,CAAC;qBAAM,CAAC;oBACN,yBAAyB;oBACzB,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CACjC,SAAS,EACT,cAAc,EACd,IAAI,CAAC,SAAS,CAAC;wBACb,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,iBAAiB;wBAC9B,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBAClC,EAAE,IAAI,EAAE,CAAC,CAAC,EACX,IAAI,CAAC,MAAM,CACZ,CAAC;oBACF,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;oBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;gBAClE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACzD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,SAAc;QAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB;IACR,KAAK,CAAC,eAAe,CAAC,QAA0B;QACtD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;QACnD,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAAwB;QACnD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,gDAAgD;QAChD,MAAM,aAAa,GAA+B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACrE,EAAE,EAAE,IAAI,CAAC,aAAa;YACtB,WAAW,EAAE;gBACX,OAAO,EAAE,SAAS;gBAClB,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,SAAS;aACvB;SACF,CAAC,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,OAAO,GAAmB;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,CAAC,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,MAAM;YACnF,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAC/B,KAAK,EAAE,IAAI,IAAI,EAAE;YACjB,cAAc,EAAE,QAAQ,IAAI,CAAC,SAAS,EAAE;YACxC,iBAAiB,EAAE,KAAK;YACxB,SAAS,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;YAC9B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,cAAc,EAAE,OAAO;YACvB,aAAa;YACb,mBAAmB,EAAE,CAAC,OAAmC,EAAE,EAAE;gBAC3D,MAAM,YAAY,GAAG,OAAO,EAAE,EAAE,IAAI,SAAS,CAAC;gBAC9C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,gCAAgC,YAAY,eAAe,IAAI,CAAC,sBAAsB,CAAC,MAAM,YAAY,CAAC,CAAC;gBAC/I,kCAAkC;gBAClC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBACnD,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;wBACtC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;4BAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC,CAAC;wBAChF,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;YACH,CAAC;YACD,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa;YACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAC;QAEF,eAAe;QACf,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,iBAAiB,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBACxC,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,mBAAmB;YACnB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAE5D,oDAAoD;YACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,wBAAwB,EAAE;oBACtD,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM;oBACrC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;iBAC7B,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC3F;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kBAAkB;IACV,KAAK,CAAC,iBAAiB,CAAC,QAA4B;QAC1D,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,OAAyB;QACrD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAE5C,yBAAyB;QACzB,MAAM,aAAa,GAA+B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACrE,EAAE,EAAE,IAAI,CAAC,aAAa;YACtB,WAAW,EAAE;gBACX,OAAO,EAAE,SAAS;gBAClB,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,SAAS;aACvB;SACF,CAAC,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,OAAO,GAAmB;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YAC3C,KAAK,EAAE,IAAI,IAAI,EAAE;YACjB,cAAc,EAAE,QAAQ,IAAI,CAAC,SAAS,EAAE;YACxC,iBAAiB,EAAE,KAAK;YACxB,SAAS,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;YAC9B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,cAAc,EAAE,OAAO;YACvB,aAAa;YACb,mBAAmB,EAAE,CAAC,OAAmC,EAAE,EAAE;gBAC3D,MAAM,YAAY,GAAG,OAAO,EAAE,EAAE,IAAI,SAAS,CAAC;gBAC9C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,gCAAgC,YAAY,eAAe,IAAI,CAAC,sBAAsB,CAAC,MAAM,YAAY,CAAC,CAAC;gBAC/I,kCAAkC;gBAClC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBACnD,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;wBACtC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;4BAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC,CAAC;wBAChF,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;YACH,CAAC;YACD,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa;YACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAC;QAEF,uBAAuB;QACvB,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,mBAAmB,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC;YAC9C,OAAO,MAAyB,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,kBAAkB;IACV,KAAK,CAAC,iBAAiB,CAAC,OAAY;QAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAiB,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC;QAE/C,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjF,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,YAAY,EACV,wBAAwB,EACxB,MAAM,EACN,QAAQ,EACT,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjF,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,YAAY,EACV,wBAAwB,EACxB,MAAM,EACN,QAAQ,EACT,MAAM,oCAAoC,CAAC"}
package/dist/index.js CHANGED
@@ -6,39 +6,123 @@
6
6
  */
7
7
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
8
  import { MCPServer } from './core/mcp-server.js';
9
+ import { readFileSync, appendFileSync, existsSync, mkdirSync } from 'fs';
10
+ import { fileURLToPath } from 'url';
11
+ import { dirname, join } from 'path';
12
+ import { homedir } from 'os';
9
13
  // Export types and registries for use by other packages
10
14
  export { ToolRegistry } from './tools/tool-registry.js';
11
15
  export { PromptRegistry } from './prompts/prompt-registry.js';
12
- async function main() {
13
- // Create MCP server with config from environment
14
- const server = new MCPServer({
15
- name: 'tiny-brain-local',
16
- version: '0.3.7',
17
- dataDir: process.env.TINY_BRAIN_DATA_DIR,
18
- logLevel: process.env.LOG_LEVEL,
19
- });
20
- // Initialize server
21
- await server.initialize();
22
- // Create and connect transport
23
- const transport = new StdioServerTransport();
24
- await server.connect(transport);
25
- // Handle shutdown
26
- process.on('SIGINT', async () => {
27
- await server.shutdown();
28
- process.exit(0);
29
- });
30
- process.on('SIGTERM', async () => {
31
- await server.shutdown();
32
- process.exit(0);
33
- });
16
+ /**
17
+ * Startup logging that writes to both stderr and debug.log
18
+ * This ensures we can debug issues even when the main logger hasn't initialized
19
+ */
20
+ function startupLog(message, data) {
21
+ message = `(startup) ${message}`;
22
+ const timestamp = new Date().toISOString();
23
+ const logEntry = {
24
+ timestamp,
25
+ level: 'DEBUG',
26
+ pid: process.pid,
27
+ message,
28
+ ...(data && { data })
29
+ };
30
+ // Always log to stderr for debugging
31
+ console.error(`[tiny-brain-startup] ${message}`, data ? JSON.stringify(data) : '');
32
+ // Try to log to file
33
+ try {
34
+ let dataDir = process.env.DATADIR || process.env.TINY_BRAIN_DATA_DIR || '~/.tiny-brain';
35
+ // Expand ~ to home directory
36
+ if (dataDir.startsWith('~')) {
37
+ dataDir = join(homedir(), dataDir.slice(1));
38
+ }
39
+ const logPath = join(dataDir, 'debug.log');
40
+ // Ensure directory exists
41
+ if (!existsSync(dataDir)) {
42
+ mkdirSync(dataDir, { recursive: true });
43
+ }
44
+ // Append to log file
45
+ appendFileSync(logPath, JSON.stringify(logEntry) + '\n');
46
+ }
47
+ catch (error) {
48
+ // If file logging fails, just continue - stderr is more important for debugging
49
+ console.error('[tiny-brain-startup] Failed to write to log file:', error);
50
+ }
34
51
  }
35
- // Only run the server if this is the main module
36
- if (import.meta.url === `file://${process.argv[1]}`) {
37
- // Run the server
38
- main().catch(() => {
39
- // Don't use console.error in MCP server - stdout is reserved for JSON-RPC
40
- // The error will be visible in process exit code
52
+ async function main() {
53
+ startupLog('main() function called');
54
+ try {
55
+ startupLog('Fetching package.json version...');
56
+ const __filename = fileURLToPath(import.meta.url);
57
+ const __dirname = dirname(__filename);
58
+ const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));
59
+ const VERSION = packageJson.version;
60
+ startupLog('Starting server', {
61
+ pid: process.pid,
62
+ node: process.version,
63
+ version: VERSION,
64
+ args: process.argv,
65
+ env: process.env
66
+ });
67
+ // Create MCP server with config from environment
68
+ // DXT passes config as uppercase env vars prefixed with the config name
69
+ const server = new MCPServer({
70
+ name: 'tiny-brain-local',
71
+ version: VERSION,
72
+ autoStartWatch: process.env.AUTOSTARTWATCH !== 'false' && process.env.TINY_BRAIN_AUTO_START_WATCH !== 'false',
73
+ account: {
74
+ clientId: process.env.CLIENTID || process.env.TINY_BRAIN_CLIENT_ID,
75
+ clientSecret: process.env.CLIENTSECRET || process.env.TINY_BRAIN_CLIENT_SECRET,
76
+ },
77
+ debug: {
78
+ dataDir: process.env.DATADIR || process.env.TINY_BRAIN_DATA_DIR,
79
+ logLevel: (process.env.LOGLEVEL || process.env.LOG_LEVEL),
80
+ },
81
+ });
82
+ startupLog('MCPServer instance created');
83
+ // Initialize server
84
+ startupLog('Initializing server...');
85
+ await server.initialize();
86
+ startupLog('Server initialized successfully');
87
+ // Create and connect transport
88
+ startupLog('Creating StdioServerTransport...');
89
+ const transport = new StdioServerTransport();
90
+ startupLog('Connecting to transport...');
91
+ await server.connect(transport);
92
+ startupLog('Connected to transport successfully');
93
+ // Handle shutdown
94
+ process.on('SIGINT', async () => {
95
+ await server.shutdown();
96
+ process.exit(0);
97
+ });
98
+ process.on('SIGTERM', async () => {
99
+ await server.shutdown();
100
+ process.exit(0);
101
+ });
102
+ }
103
+ catch (error) {
104
+ // Log to both stderr and file for debugging
105
+ startupLog('Server initialization failed', {
106
+ error: error instanceof Error ? {
107
+ message: error.message,
108
+ stack: error.stack,
109
+ name: error.name
110
+ } : error
111
+ });
41
112
  process.exit(1);
42
- });
113
+ }
43
114
  }
115
+ // Run the server - for DXT bundled version, this always runs
116
+ // For library usage, consumers would import specific exports instead of running this file
117
+ startupLog('Starting main() execution');
118
+ main().catch((error) => {
119
+ startupLog('Fatal error in main()', {
120
+ error: error instanceof Error ? {
121
+ message: error.message,
122
+ stack: error.stack,
123
+ name: error.name
124
+ } : error
125
+ });
126
+ process.exit(1);
127
+ });
44
128
  //# sourceMappingURL=index.js.map