@botpress/adk-cli
Version:
Command-line interface for the Botpress Agent Development Kit (ADK)
49 lines (46 loc) • 1.52 kB
JavaScript
// @bun
import {
getEmbeddedAssets
} from "./chunk-tt572q4r.js";
import {
AgentProjectGenerator
} from "./chunk-p0hjqn4r.js";
// src/utils/ensure-templates.ts
import { createHash } from "crypto";
import { existsSync, mkdirSync, writeFileSync } from "fs";
import { join, dirname } from "path";
async function extractEmbeddedTemplates() {
const templateAssets = getEmbeddedAssets().filter((a) => a.path.startsWith("/templates/"));
if (templateAssets.length === 0) {
return null;
}
const hasher = createHash("md5");
for (const asset of templateAssets) {
hasher.update(asset.path);
hasher.update(new Uint8Array(await Bun.file(asset.file).arrayBuffer()));
}
const versionHash = hasher.digest("hex").slice(0, 12);
const tmpDir = join(process.env.TMPDIR || "/tmp", `adk-templates-${versionHash}`);
for (const asset of templateAssets) {
const filePath = join(tmpDir, asset.path.replace(/^\/templates\//, ""));
if (existsSync(filePath)) {
continue;
}
const dir = dirname(filePath);
if (!existsSync(dir)) {
mkdirSync(dir, { recursive: true });
}
const content = await Bun.file(asset.file).arrayBuffer();
writeFileSync(filePath, Buffer.from(content));
}
return tmpDir;
}
async function ensureTemplatesAvailable() {
const extracted = await extractEmbeddedTemplates();
if (extracted) {
AgentProjectGenerator.setTemplatesRoot(extracted);
return;
}
AgentProjectGenerator.getAvailableTemplates();
}
export { ensureTemplatesAvailable };