import { svelte } from '@sveltejs/vite-plugin-svelte' import tailwindcss from '@tailwindcss/vite' import { defineConfig } from 'vite' import { readFileSync, existsSync } from 'fs' // In Docker, VERSION is copied into the build WORKDIR (/build/web/VERSION). // In local dev, the cwd is web/ and VERSION is two dirs up (../../VERSION // from vite.config.ts location in web/). Try both. let version: string if (existsSync('../VERSION')) { version = readFileSync('../VERSION', 'utf-8').trim() } else { version = readFileSync('VERSION', 'utf-8').trim() } // Injects OIKOS_API_TOKEN into proxied /api requests in dev — the API no // longer has a dev-open bypass (plans/2026-07-12-wails-desktop-app.md 0.4), // so `OIKOS_API_TOKEN=dev-token npm run dev` needs this to reach it. function authProxy(target: string, rewrite?: (path: string) => string) { return { target, ...(rewrite ? { rewrite } : {}), configure: (proxy: any) => { proxy.on('proxyReq', (proxyReq: any) => { const token = process.env.OIKOS_API_TOKEN if (token) proxyReq.setHeader('Authorization', `Bearer ${token}`) }) } } } export default defineConfig({ plugins: [tailwindcss(), svelte()], base: '/', define: { __OIKOS_VERSION__: JSON.stringify(`v${version}`), }, resolve: { alias: { $lib: '/src/lib' } }, build: { outDir: 'dist', emptyOutDir: true }, server: { proxy: { '/api': authProxy('http://localhost:8090'), // Production Caddy strips /agent before forwarding to nomos // (compose/caddy/Caddyfile.oikos handle_path /agent/*); match that // here so dev and prod agree on nomos's actual route paths. '/agent': authProxy('http://localhost:8092', (path) => path.replace(/^\/agent/, '')) } } })