Files
jiang f4318a9b9c feat: refine workbench visuals and map controls
Unify the Agent history extension with the header acrylic surface, preserve the full conversation body, and consolidate shared control and status styling.

Restore map flow and SCADA controller behavior, remove obsolete rendering paths, and extend regression coverage. Button press coverage now releases outside the target so state assertions cannot accidentally toggle the control.
2026-07-28 16:39:36 +08:00

65 lines
2.2 KiB
TypeScript

import tailwindcss from "@tailwindcss/vite";
import react from "@vitejs/plugin-react-swc";
import { defineConfig, loadEnv, type Plugin, type PreviewServer, type ViteDevServer } from "vite";
import { fileURLToPath, URL } from "node:url";
import { createEdgeTtsMiddleware } from "./server/edge-tts-service";
const RUNTIME_CONFIG_PATH = "/runtime-config.js";
function renderRuntimeConfig(values: Record<string, string>) {
const config = {
TJWATER_MAPBOX_ACCESS_TOKEN: values.TJWATER_MAPBOX_ACCESS_TOKEN || "",
TJWATER_MAP_URL: values.TJWATER_MAP_URL || "https://geoserver.waternetwork.cn/geoserver",
TJWATER_GEOSERVER_WORKSPACE: values.TJWATER_GEOSERVER_WORKSPACE || "tjwater",
TJWATER_AGENT_API_BASE_URL: values.TJWATER_AGENT_API_BASE_URL || "http://127.0.0.1:8787",
TJWATER_ENABLE_DEV_PANEL: values.TJWATER_ENABLE_DEV_PANEL || "false",
TJWATER_ENABLE_MSW: values.TJWATER_ENABLE_MSW || "false"
};
return `globalThis.__TJWATER_CONFIG__ = ${JSON.stringify(config)};\n`;
}
function runtimeConfigPlugin(values: Record<string, string>): Plugin {
const installMiddleware = (server: ViteDevServer | PreviewServer) => {
server.middlewares.use(createEdgeTtsMiddleware());
server.middlewares.use((request, response, next) => {
if (request.url?.split("?", 1)[0] !== RUNTIME_CONFIG_PATH) {
next();
return;
}
response.statusCode = 200;
response.setHeader("Content-Type", "application/javascript; charset=utf-8");
response.setHeader("Cache-Control", "no-store");
response.end(renderRuntimeConfig(values));
});
};
return {
name: "tjwater-runtime-config",
configureServer: installMiddleware,
configurePreviewServer: installMiddleware
};
}
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), "");
return {
plugins: [runtimeConfigPlugin(env), react(), tailwindcss()],
server: {
allowedHosts: ["next.demo.waternetwork.cn"]
},
resolve: {
alias: {
"@": fileURLToPath(new URL("./src", import.meta.url))
}
},
test: {
environment: "jsdom",
globals: true,
setupFiles: ["./src/test/setup.ts"]
}
};
});