From 6449bbd648256546012da4d77a3514e5a5a76afd Mon Sep 17 00:00:00 2001 From: root Date: Tue, 21 Jul 2026 09:01:06 +0200 Subject: [PATCH] fix: inject HWPOD native Cloud runtime config --- tools/src/hwpod-native-service.ts | 2 +- web/hwlab-cloud-web/scripts/hwpod-native-vite.config.ts | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/src/hwpod-native-service.ts b/tools/src/hwpod-native-service.ts index 222cad04..3f6329d6 100644 --- a/tools/src/hwpod-native-service.ts +++ b/tools/src/hwpod-native-service.ts @@ -85,7 +85,7 @@ function serviceCommand(service: ServiceName) { function serviceEnv(service: ServiceName, env: Record) { if (service === "api") return { ...process.env, ...env, HWPOD_API_HOST: requiredEnv(env, "HWPOD_API_BIND_HOST"), HWPOD_API_PORT: requiredEnv(env, "HWPOD_API_PORT") }; if (service === "worker") return { ...process.env, ...env, HWPOD_WORKER_HEALTH_HOST: requiredEnv(env, "HWPOD_WORKER_BIND_HOST"), HWPOD_WORKER_HEALTH_PORT: requiredEnv(env, "HWPOD_WORKER_HEALTH_PORT") }; - return { ...process.env, ...env, HWPOD_WEB_HOST: requiredEnv(env, "HWPOD_WEB_BIND_HOST"), HWPOD_WEB_PORT: requiredEnv(env, "HWPOD_WEB_PORT"), HWPOD_NATIVE_API_URL: requiredEnv(env, "HWPOD_NATIVE_API_URL"), HWPOD_WEB_ACCESS_PROFILE_JSON: requiredEnv(env, "HWPOD_WEB_ACCESS_PROFILE_JSON") }; + return { ...process.env, ...env, HWPOD_WEB_HOST: requiredEnv(env, "HWPOD_WEB_BIND_HOST"), HWPOD_WEB_PORT: requiredEnv(env, "HWPOD_WEB_PORT"), HWPOD_NATIVE_API_URL: requiredEnv(env, "HWPOD_NATIVE_API_URL"), HWPOD_WEB_RUNTIME_CONFIG: requiredEnv(env, "HWPOD_WEB_RUNTIME_CONFIG"), HWPOD_WEB_ACCESS_PROFILE_JSON: requiredEnv(env, "HWPOD_WEB_ACCESS_PROFILE_JSON") }; } function serviceEndpoints(service: ServiceName, env: Record) { const prefix = service === "worker" ? "HWPOD_WORKER" : service === "api" ? "HWPOD_API" : "HWPOD_WEB"; diff --git a/web/hwlab-cloud-web/scripts/hwpod-native-vite.config.ts b/web/hwlab-cloud-web/scripts/hwpod-native-vite.config.ts index 5de92d1a..53c864c9 100644 --- a/web/hwlab-cloud-web/scripts/hwpod-native-vite.config.ts +++ b/web/hwlab-cloud-web/scripts/hwpod-native-vite.config.ts @@ -8,6 +8,7 @@ import type { ServerResponse } from "node:http"; import vue from "@vitejs/plugin-vue"; import { defineConfig, type Plugin } from "vite"; +import { parseWorkbenchNativeRuntimeConfig } from "../vite.config"; export default defineConfig(({ command }) => ({ root: fileURLToPath(new URL("..", import.meta.url)), @@ -24,11 +25,16 @@ export default defineConfig(({ command }) => ({ } } : undefined, plugins: command === "serve" - ? [nativeSessionPlugin(process.env.HWPOD_WEB_ACCESS_PROFILE_JSON), healthPlugin(), vue()] + ? [nativeRuntimeConfigPlugin(process.env.HWPOD_WEB_RUNTIME_CONFIG), nativeSessionPlugin(process.env.HWPOD_WEB_ACCESS_PROFILE_JSON), healthPlugin(), vue()] : [vue()] })); function healthPlugin(): Plugin { return { name: "hwpod-native-health", configureServer(server) { server.middlewares.use((request, response, next) => { if (request.url !== "/health/live") return next(); response.statusCode = 200; response.setHeader("content-type", "application/json"); response.end(JSON.stringify({ ok: true, serviceId: "hwlab-hwpod-web", status: "live", valuesPrinted: false })); }); } }; } +function nativeRuntimeConfigPlugin(serialized: string | undefined): Plugin { + const config = parseWorkbenchNativeRuntimeConfig(requiredString(serialized, "HWPOD_WEB_RUNTIME_CONFIG")); + const inlineJson = JSON.stringify(config).replace(/