Spaces:
Paused
Paused
| import fs from "node:fs/promises"; | |
| import path from "node:path"; | |
| import { fileURLToPath, pathToFileURL } from "node:url"; | |
| const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); | |
| export function getA2uiPaths(env = process.env) { | |
| const srcDir = env.OPENCLAW_A2UI_SRC_DIR ?? path.join(repoRoot, "src", "canvas-host", "a2ui"); | |
| const outDir = env.OPENCLAW_A2UI_OUT_DIR ?? path.join(repoRoot, "dist", "canvas-host", "a2ui"); | |
| return { srcDir, outDir }; | |
| } | |
| export async function copyA2uiAssets({ srcDir, outDir }: { srcDir: string; outDir: string }) { | |
| const skipMissing = process.env.OPENCLAW_A2UI_SKIP_MISSING === "1"; | |
| try { | |
| await fs.stat(path.join(srcDir, "index.html")); | |
| await fs.stat(path.join(srcDir, "a2ui.bundle.js")); | |
| } catch (err) { | |
| const message = 'Missing A2UI bundle assets. Run "pnpm canvas:a2ui:bundle" and retry.'; | |
| if (skipMissing) { | |
| console.warn(`${message} Skipping copy (OPENCLAW_A2UI_SKIP_MISSING=1).`); | |
| return; | |
| } | |
| throw new Error(message, { cause: err }); | |
| } | |
| await fs.mkdir(path.dirname(outDir), { recursive: true }); | |
| await fs.cp(srcDir, outDir, { recursive: true }); | |
| } | |
| async function main() { | |
| const { srcDir, outDir } = getA2uiPaths(); | |
| await copyA2uiAssets({ srcDir, outDir }); | |
| } | |
| if (import.meta.url === pathToFileURL(process.argv[1] ?? "").href) { | |
| main().catch((err) => { | |
| console.error(String(err)); | |
| process.exit(1); | |
| }); | |
| } | |