+
+ Build Pipeline
+
+
+ {/* Module Section */}
+
+
+
Module
+
+
+
+
handleAction(() => api.build.compileModule(), "module")}
+ />
+ handleAction(() => api.build.packModule(), "module")}
+ />
+ handleAction(() => api.build.deploy(), "module")}
+ />
+
+ setModule((prev) => ({ ...prev, collapsed: !prev.collapsed }))}
+ />
+
+
+ {/* Haks Section */}
+
+
+
Haks
+
+
+
+
handleAction(() => api.build.buildHaks(), "haks")}
+ />
+
+ setHaks((prev) => ({ ...prev, collapsed: !prev.collapsed }))}
+ />
+
+
+ {/* NWNX Section */}
+
+
+
+ NWNX (Advanced)
+
+
+
+
+
handleAction(() => api.build.buildNwnx(), "nwnx")}
+ />
+
+
+
+ ⚠ Requires server restart to pick up changes
+
+ setNwnx((prev) => ({ ...prev, collapsed: !prev.collapsed }))}
+ />
+
+
+ );
+}
diff --git a/packages/frontend/src/services/api.ts b/packages/frontend/src/services/api.ts
index c8c6ab9..161b271 100644
--- a/packages/frontend/src/services/api.ts
+++ b/packages/frontend/src/services/api.ts
@@ -48,6 +48,19 @@ export const api = {
init: () => request("/workspace/init", { method: "POST" }),
},
+ build: {
+ compileModule: (target?: string) =>
+ request("/build/module/compile", { method: "POST", body: JSON.stringify({ target }) }),
+ packModule: (target?: string) =>
+ request("/build/module/pack", { method: "POST", body: JSON.stringify({ target }) }),
+ deploy: () => request("/build/deploy", { method: "POST" }),
+ compileSingle: (filePath: string) =>
+ request("/build/compile-single", { method: "POST", body: JSON.stringify({ filePath }) }),
+ buildHaks: () => request("/build/haks", { method: "POST" }),
+ buildNwnx: (target?: string) =>
+ request("/build/nwnx", { method: "POST", body: JSON.stringify({ target }) }),
+ },
+
docker: {
containers: () => request