import { defineConfig, loadEnv } from "vite"; // Where the dev proxy forwards `/api/*` (and the events WS) to. Default to a // local `maestro-registry` on 127.0.0.1:8080. Override by exporting either: // MAESTRO_REGISTRY=https://maestro-registry.example.com (preferred) // MAESTRO_REGISTRY=wss://maestro-registry.example.com/daemon // The second form (the daemon-facing URL) is normalised: ws/wss → http/https // and any trailing `/daemon` is stripped, since the proxy needs the base URL. function resolveProxyTarget(raw: string | undefined): string { if (!raw) return "http://127.0.0.1:8080"; return raw .replace(/^wss:\/\//, "https://") .replace(/^ws:\/\//, "http://") .replace(/\/daemon\/?$/, "") .replace(/\/+$/, ""); } export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), ""); const target = resolveProxyTarget(env.MAESTRO_REGISTRY); const secure = target.startsWith("https://"); return { build: { target: "es2022", outDir: "dist", emptyOutDir: true, sourcemap: false, }, server: { port: 5173, proxy: { "/api": { target, changeOrigin: secure, ws: true, secure: false, }, }, }, }; });