fix: problems with startup

This commit is contained in:
2026-02-28 21:36:16 +01:00
parent c358e1b11c
commit 7c44ecf7fe
4 changed files with 37 additions and 20 deletions

View File

@@ -131,6 +131,20 @@ function buildMcpUrl(bundle: EngineBundle): string {
}
}
function buildMcpAgentConfigOptions(bundle: EngineBundle): import('../engine/MCPAgentConfigEngine').MCPAgentConfigOptions {
const os = require('os') as typeof import('os');
const scriptPath = app.isPackaged
? path.join(process.resourcesPath, 'bds-mcp.cjs')
: path.join(app.getAppPath(), 'dist', 'cli', 'bds-mcp.cjs');
return {
homeDir: os.homedir(),
platform: process.platform,
mcpUrl: buildMcpUrl(bundle),
execPath: process.execPath,
scriptPath,
};
}
export function registerIpcHandlers(bundle: EngineBundle): void {
// ============ Git Handlers ============
@@ -1577,31 +1591,19 @@ export function registerIpcHandlers(bundle: EngineBundle): void {
safeHandle('mcp:getAgents', async () => {
const { MCPAgentConfigEngine } = await import('../engine/MCPAgentConfigEngine');
const engine = new MCPAgentConfigEngine({
homeDir: require('os').homedir(),
platform: process.platform,
mcpUrl: buildMcpUrl(bundle),
});
const engine = new MCPAgentConfigEngine(buildMcpAgentConfigOptions(bundle));
return engine.getAgents();
});
safeHandle('mcp:addToAgentConfig', async (_event: unknown, agentId: string) => {
const { MCPAgentConfigEngine } = await import('../engine/MCPAgentConfigEngine');
const engine = new MCPAgentConfigEngine({
homeDir: require('os').homedir(),
platform: process.platform,
mcpUrl: buildMcpUrl(bundle),
});
const engine = new MCPAgentConfigEngine(buildMcpAgentConfigOptions(bundle));
return engine.addToConfig(agentId as import('../engine/MCPAgentConfigEngine').MCPAgentId);
});
safeHandle('mcp:isConfigured', async (_event: unknown, agentId: string) => {
const { MCPAgentConfigEngine } = await import('../engine/MCPAgentConfigEngine');
const engine = new MCPAgentConfigEngine({
homeDir: require('os').homedir(),
platform: process.platform,
mcpUrl: buildMcpUrl(bundle),
});
const engine = new MCPAgentConfigEngine(buildMcpAgentConfigOptions(bundle));
return engine.isConfigured(agentId as import('../engine/MCPAgentConfigEngine').MCPAgentId);
});

View File

@@ -1,7 +1,7 @@
import { app, BrowserWindow, Menu, MenuItemConstructorOptions, ipcMain, protocol, net, shell, screen } from 'electron';
import * as path from 'path';
import * as fs from 'fs';
import { getDatabase } from './database';
import { getDatabase, initDatabase } from './database';
import { registerIpcHandlers, registerEventForwarding, registerChatHandlers, initializeChatHandlers, cleanupChatHandlers } from './ipc';
import { media } from './database/schema';
import { eq } from 'drizzle-orm';
@@ -901,6 +901,14 @@ app.on('open-url', (event, deepLink) => {
// App lifecycle
app.whenReady().then(async () => {
// Initialise the database before constructing any engines.
const userData = app.getPath('userData');
const migrationsFolder = app.isPackaged
? path.join(process.resourcesPath, 'drizzle')
: path.join(__dirname, '..', '..', 'drizzle');
const db = initDatabase({ dbPath: path.join(userData, 'bds.db'), migrationsFolder });
await db.initializeLocal();
// Construct all engines and build EngineBundle before any initialization
const noopNotifier = new NoopNotifier();
const projectEngine = new ProjectEngine();