166 lines
6 KiB
JavaScript
166 lines
6 KiB
JavaScript
// electron.vite.config.ts
|
|
import { defineConfig } from "electron-vite";
|
|
import { sentryVitePlugin } from "@sentry/vite-plugin";
|
|
import react from "@vitejs/plugin-react";
|
|
import { readFileSync } from "fs";
|
|
import { resolve } from "path";
|
|
var __electron_vite_injected_dirname = "/Users/belief/dev/projects/claude/claude_team";
|
|
var pkg = JSON.parse(readFileSync(resolve(__electron_vite_injected_dirname, "package.json"), "utf-8"));
|
|
var prodDeps = Object.keys(pkg.dependencies || {});
|
|
var runtimeExternalDeps = /* @__PURE__ */ new Set([
|
|
"node-pty",
|
|
"agent-teams-controller",
|
|
"fastify",
|
|
"@fastify/cors",
|
|
"@fastify/static"
|
|
]);
|
|
var bundledDeps = prodDeps.filter((d) => !runtimeExternalDeps.has(d));
|
|
function nativeModuleStub() {
|
|
const STUB_ID = "\0native-stub";
|
|
const NODE_MODULE_RE = /\.node(?:\?.*)?$/;
|
|
return {
|
|
name: "native-module-stub",
|
|
enforce: "pre",
|
|
resolveId(source) {
|
|
if (NODE_MODULE_RE.test(source)) return `${STUB_ID}:${source}`;
|
|
return null;
|
|
},
|
|
load(id) {
|
|
if (id.startsWith(STUB_ID) || NODE_MODULE_RE.test(id)) return "export default {}";
|
|
return null;
|
|
}
|
|
};
|
|
}
|
|
var sentrySourceMapTargets = {
|
|
main: {
|
|
assets: ["./dist-electron/main/**/*.{js,cjs,mjs,map}"],
|
|
filesToDeleteAfterUpload: ["./dist-electron/main/**/*.map"]
|
|
},
|
|
renderer: {
|
|
assets: ["./out/renderer/**/*.{js,cjs,mjs,map}"],
|
|
filesToDeleteAfterUpload: ["./out/renderer/**/*.map"]
|
|
}
|
|
};
|
|
function createSentryPlugins(target) {
|
|
if (!process.env.SENTRY_AUTH_TOKEN) return [];
|
|
return [
|
|
sentryVitePlugin({
|
|
org: process.env.SENTRY_ORG ?? "quant-jump-pro",
|
|
project: process.env.SENTRY_PROJECT ?? "electron",
|
|
authToken: process.env.SENTRY_AUTH_TOKEN,
|
|
telemetry: false,
|
|
release: { name: `agent-teams-ai@${pkg.version}` },
|
|
sourcemaps: sentrySourceMapTargets[target]
|
|
})
|
|
];
|
|
}
|
|
var electron_vite_config_default = defineConfig({
|
|
main: {
|
|
plugins: [
|
|
nativeModuleStub(),
|
|
...createSentryPlugins("main")
|
|
],
|
|
define: {
|
|
__APP_VERSION__: JSON.stringify(pkg.version),
|
|
// Inject DSN at compile time - process.env.SENTRY_DSN is NOT available
|
|
// at runtime in packaged Electron apps (only during CI build).
|
|
"process.env.SENTRY_DSN": JSON.stringify(process.env.SENTRY_DSN ?? "")
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
"@features": resolve(__electron_vite_injected_dirname, "src/features"),
|
|
"@main": resolve(__electron_vite_injected_dirname, "src/main"),
|
|
"@shared": resolve(__electron_vite_injected_dirname, "src/shared"),
|
|
"@preload": resolve(__electron_vite_injected_dirname, "src/preload")
|
|
}
|
|
},
|
|
build: {
|
|
externalizeDeps: {
|
|
exclude: bundledDeps
|
|
},
|
|
commonjsOptions: {
|
|
strictRequires: [/node_modules\/.*ssh2\//]
|
|
},
|
|
sourcemap: "hidden",
|
|
outDir: "dist-electron/main",
|
|
rollupOptions: {
|
|
input: {
|
|
index: resolve(__electron_vite_injected_dirname, "src/main/index.ts"),
|
|
"team-fs-worker": resolve(__electron_vite_injected_dirname, "src/main/workers/team-fs-worker.ts"),
|
|
"task-change-worker": resolve(__electron_vite_injected_dirname, "src/main/workers/task-change-worker.ts"),
|
|
"team-data-worker": resolve(__electron_vite_injected_dirname, "src/main/workers/team-data-worker.ts")
|
|
},
|
|
output: {
|
|
// CJS format so bundled deps can use __dirname/require.
|
|
// Use .cjs extension since package.json has "type": "module".
|
|
format: "cjs",
|
|
entryFileNames: "[name].cjs",
|
|
// Set UV_THREADPOOL_SIZE before any module code runs.
|
|
// Must be in the banner because ESM→CJS hoists imports above top-level code.
|
|
// On Windows, fs.watch({recursive:true}) occupies a UV pool thread per watcher;
|
|
// with 3+ watchers + concurrent fs/DNS/spawn, the default 4 threads deadlock.
|
|
banner: `if(!process.env.UV_THREADPOOL_SIZE){process.env.UV_THREADPOOL_SIZE='24'}`
|
|
}
|
|
}
|
|
}
|
|
},
|
|
preload: {
|
|
resolve: {
|
|
alias: {
|
|
"@features": resolve(__electron_vite_injected_dirname, "src/features"),
|
|
"@preload": resolve(__electron_vite_injected_dirname, "src/preload"),
|
|
"@shared": resolve(__electron_vite_injected_dirname, "src/shared"),
|
|
"@main": resolve(__electron_vite_injected_dirname, "src/main")
|
|
}
|
|
},
|
|
build: {
|
|
outDir: "dist-electron/preload",
|
|
rollupOptions: {
|
|
input: {
|
|
index: resolve(__electron_vite_injected_dirname, "src/preload/index.ts")
|
|
},
|
|
output: {
|
|
format: "cjs",
|
|
entryFileNames: "[name].js"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
renderer: {
|
|
cacheDir: resolve(__electron_vite_injected_dirname, "node_modules/.vite/electron-renderer"),
|
|
optimizeDeps: {
|
|
include: ["@codemirror/language-data"],
|
|
exclude: ["@claude-teams/agent-graph"]
|
|
},
|
|
define: {
|
|
__APP_VERSION__: JSON.stringify(pkg.version),
|
|
// Pass SENTRY_DSN to renderer as VITE_SENTRY_DSN (Vite replaces at compile time)
|
|
"import.meta.env.VITE_SENTRY_DSN": JSON.stringify(process.env.SENTRY_DSN ?? "")
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
"@features": resolve(__electron_vite_injected_dirname, "src/features"),
|
|
"@renderer": resolve(__electron_vite_injected_dirname, "src/renderer"),
|
|
"@shared": resolve(__electron_vite_injected_dirname, "src/shared"),
|
|
"@main": resolve(__electron_vite_injected_dirname, "src/main"),
|
|
"@radix-ui/react-compose-refs": resolve(
|
|
__electron_vite_injected_dirname,
|
|
"src/renderer/vendor/radixComposeRefs.ts"
|
|
),
|
|
"@claude-teams/agent-graph": resolve(__electron_vite_injected_dirname, "packages/agent-graph/src/index.ts")
|
|
}
|
|
},
|
|
plugins: [react(), ...createSentryPlugins("renderer")],
|
|
build: {
|
|
sourcemap: "hidden",
|
|
rollupOptions: {
|
|
input: {
|
|
index: resolve(__electron_vite_injected_dirname, "src/renderer/index.html")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
export {
|
|
electron_vite_config_default as default
|
|
};
|