From e7b38d49e021d08675b34fe5d1c4c339e63a19b2 Mon Sep 17 00:00:00 2001 From: AndyMik90 Date: Tue, 13 Jan 2026 10:47:48 +0100 Subject: [PATCH] hotfix/sentry-backend-build --- apps/frontend/electron.vite.config.ts | 10 +++++++++- apps/frontend/src/main/agent/agent-process.ts | 7 ++++++- apps/frontend/src/main/changelog/changelog-service.ts | 5 +++++ apps/frontend/src/main/index.ts | 5 +++++ .../ipc-handlers/github/utils/subprocess-runner.ts | 5 +++++ apps/frontend/src/main/ipc-handlers/memory-handlers.ts | 5 +++++ .../src/main/ipc-handlers/settings-handlers.ts | 5 +++++ apps/frontend/src/main/memory-service.ts | 5 +++++ apps/frontend/src/main/terminal-name-generator.ts | 5 +++++ apps/frontend/src/main/terminal/pty-daemon-client.ts | 5 +++++ apps/frontend/src/main/title-generator.ts | 5 +++++ 11 files changed, 60 insertions(+), 2 deletions(-) diff --git a/apps/frontend/electron.vite.config.ts b/apps/frontend/electron.vite.config.ts index 5dcaaf9f..455082a5 100644 --- a/apps/frontend/electron.vite.config.ts +++ b/apps/frontend/electron.vite.config.ts @@ -11,7 +11,15 @@ export default defineConfig({ 'chokidar', 'kuzu', 'electron-updater', - '@electron-toolkit/utils' + '@electron-toolkit/utils', + // Sentry and its transitive dependencies (opentelemetry -> debug -> ms) + '@sentry/electron', + '@sentry/core', + '@sentry/node', + '@sentry/utils', + '@opentelemetry/instrumentation', + 'debug', + 'ms' ] })], build: { diff --git a/apps/frontend/src/main/agent/agent-process.ts b/apps/frontend/src/main/agent/agent-process.ts index fe256b96..6291912a 100644 --- a/apps/frontend/src/main/agent/agent-process.ts +++ b/apps/frontend/src/main/agent/agent-process.ts @@ -1,7 +1,12 @@ import { spawn } from 'child_process'; import path from 'path'; +import { fileURLToPath } from 'url'; import { existsSync, readFileSync } from 'fs'; import { app } from 'electron'; + +// ESM-compatible __dirname +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); import { EventEmitter } from 'events'; import { AgentState } from './agent-state'; import { AgentEvents } from './agent-events'; @@ -457,7 +462,7 @@ export class AgentProcessManager { let sequenceNumber = 0; // FIX (ACS-203): Track completed phases to prevent phase overlaps // When a phase completes, it's added to this array before transitioning to the next phase - let completedPhases: CompletablePhase[] = []; + const completedPhases: CompletablePhase[] = []; this.emitter.emit('execution-progress', taskId, { phase: currentPhase, diff --git a/apps/frontend/src/main/changelog/changelog-service.ts b/apps/frontend/src/main/changelog/changelog-service.ts index bd4ba9a7..4d3bd42e 100644 --- a/apps/frontend/src/main/changelog/changelog-service.ts +++ b/apps/frontend/src/main/changelog/changelog-service.ts @@ -1,7 +1,12 @@ import { EventEmitter } from 'events'; import * as path from 'path'; +import { fileURLToPath } from 'url'; import { existsSync, readFileSync, writeFileSync } from 'fs'; import { app } from 'electron'; + +// ESM-compatible __dirname +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); import { AUTO_BUILD_PATHS, DEFAULT_CHANGELOG_PATH } from '../../shared/constants'; import { getToolPath } from '../cli-tool-manager'; import type { diff --git a/apps/frontend/src/main/index.ts b/apps/frontend/src/main/index.ts index 612e26a2..2c5a86f5 100644 --- a/apps/frontend/src/main/index.ts +++ b/apps/frontend/src/main/index.ts @@ -1,8 +1,13 @@ // Load .env file FIRST before any other imports that might use process.env import { config } from 'dotenv'; import { resolve, dirname } from 'path'; +import { fileURLToPath } from 'url'; import { existsSync } from 'fs'; +// ESM-compatible __dirname +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + // Load .env from apps/frontend directory // In development: __dirname is out/main (compiled), so go up 2 levels // In production: app resources directory diff --git a/apps/frontend/src/main/ipc-handlers/github/utils/subprocess-runner.ts b/apps/frontend/src/main/ipc-handlers/github/utils/subprocess-runner.ts index 5b1700cf..e5bf0265 100644 --- a/apps/frontend/src/main/ipc-handlers/github/utils/subprocess-runner.ts +++ b/apps/frontend/src/main/ipc-handlers/github/utils/subprocess-runner.ts @@ -9,7 +9,12 @@ import { spawn, exec } from 'child_process'; import type { ChildProcess } from 'child_process'; import { promisify } from 'util'; import path from 'path'; +import { fileURLToPath } from 'url'; import fs from 'fs'; + +// ESM-compatible __dirname +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); import type { Project } from '../../../../shared/types'; import { parsePythonCommand } from '../../../python-detector'; diff --git a/apps/frontend/src/main/ipc-handlers/memory-handlers.ts b/apps/frontend/src/main/ipc-handlers/memory-handlers.ts index 9ea2b79a..72d786a2 100644 --- a/apps/frontend/src/main/ipc-handlers/memory-handlers.ts +++ b/apps/frontend/src/main/ipc-handlers/memory-handlers.ts @@ -8,8 +8,13 @@ import { ipcMain, app } from 'electron'; import { spawn, execFileSync } from 'child_process'; import * as path from 'path'; +import { fileURLToPath } from 'url'; import * as fs from 'fs'; import * as os from 'os'; + +// ESM-compatible __dirname +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); import { IPC_CHANNELS } from '../../shared/constants'; import type { IPCResult, diff --git a/apps/frontend/src/main/ipc-handlers/settings-handlers.ts b/apps/frontend/src/main/ipc-handlers/settings-handlers.ts index 9aecfca9..968c44de 100644 --- a/apps/frontend/src/main/ipc-handlers/settings-handlers.ts +++ b/apps/frontend/src/main/ipc-handlers/settings-handlers.ts @@ -2,7 +2,12 @@ import { ipcMain, dialog, app, shell } from 'electron'; import { existsSync, writeFileSync, mkdirSync, statSync, readFileSync } from 'fs'; import { execFileSync } from 'node:child_process'; import path from 'path'; +import { fileURLToPath } from 'url'; import { is } from '@electron-toolkit/utils'; + +// ESM-compatible __dirname +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); import { IPC_CHANNELS, DEFAULT_APP_SETTINGS, DEFAULT_AGENT_PROFILES } from '../../shared/constants'; import type { AppSettings, diff --git a/apps/frontend/src/main/memory-service.ts b/apps/frontend/src/main/memory-service.ts index 9e419cc8..6efc625e 100644 --- a/apps/frontend/src/main/memory-service.ts +++ b/apps/frontend/src/main/memory-service.ts @@ -9,8 +9,13 @@ import { spawn } from 'child_process'; import * as path from 'path'; +import { fileURLToPath } from 'url'; import * as fs from 'fs'; import { app } from 'electron'; + +// ESM-compatible __dirname +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); import { findPythonCommand, parsePythonCommand } from './python-detector'; import { getConfiguredPythonPath, pythonEnvManager } from './python-env-manager'; import { getMemoriesDir } from './config-paths'; diff --git a/apps/frontend/src/main/terminal-name-generator.ts b/apps/frontend/src/main/terminal-name-generator.ts index d4429496..ca12cda8 100644 --- a/apps/frontend/src/main/terminal-name-generator.ts +++ b/apps/frontend/src/main/terminal-name-generator.ts @@ -1,7 +1,12 @@ import path from 'path'; +import { fileURLToPath } from 'url'; import { existsSync, readFileSync } from 'fs'; import { spawn } from 'child_process'; import { app } from 'electron'; + +// ESM-compatible __dirname +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); import { EventEmitter } from 'events'; import { detectRateLimit, createSDKRateLimitInfo, getProfileEnv } from './rate-limit-detector'; import { parsePythonCommand } from './python-detector'; diff --git a/apps/frontend/src/main/terminal/pty-daemon-client.ts b/apps/frontend/src/main/terminal/pty-daemon-client.ts index 3e0bd0f1..abf1fd89 100644 --- a/apps/frontend/src/main/terminal/pty-daemon-client.ts +++ b/apps/frontend/src/main/terminal/pty-daemon-client.ts @@ -7,9 +7,14 @@ import * as net from 'net'; import * as path from 'path'; +import { fileURLToPath } from 'url'; import { spawn, ChildProcess } from 'child_process'; import { app } from 'electron'; +// ESM-compatible __dirname +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + const SOCKET_PATH = process.platform === 'win32' ? `\\\\.\\pipe\\auto-claude-pty-${process.getuid?.() || 'default'}` diff --git a/apps/frontend/src/main/title-generator.ts b/apps/frontend/src/main/title-generator.ts index 2844449d..ae809ba3 100644 --- a/apps/frontend/src/main/title-generator.ts +++ b/apps/frontend/src/main/title-generator.ts @@ -1,7 +1,12 @@ import path from 'path'; +import { fileURLToPath } from 'url'; import { existsSync, readFileSync } from 'fs'; import { spawn } from 'child_process'; import { app } from 'electron'; + +// ESM-compatible __dirname +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); import { EventEmitter } from 'events'; import { detectRateLimit, createSDKRateLimitInfo, getProfileEnv } from './rate-limit-detector'; import { parsePythonCommand, getValidatedPythonPath } from './python-detector';