UNPKG

morphbox

Version:

Docker-based AI sandbox for development with Claude integration

80 lines (77 loc) 2.65 kB
import { j as json } from './index-3BbzJtgI.js'; import { access, readFile } from 'fs/promises'; import { join } from 'path'; import { homedir } from 'os'; import { v as validateMorphFile, c as createMorphFile } from './morph-f-EPjDPR.js'; const PANELS_DIR = join(homedir(), "morphbox", "panels"); const GET = async ({ params }) => { try { const { id } = params; if (!id) { return json({ error: "Panel ID is required" }, { status: 400 }); } const morphPath = join(PANELS_DIR, `${id}.morph`); try { await access(morphPath); const morphContent = await readFile(morphPath, "utf-8"); const morphData = JSON.parse(morphContent); if (validateMorphFile(morphData)) { return new Response(JSON.stringify(morphData, null, 2), { headers: { "Content-Type": "application/json", "Content-Disposition": `attachment; filename="${id}.morph"` } }); } } catch (morphError) { } const jsPath = join(PANELS_DIR, `${id}.js`); const metadataPath = join(PANELS_DIR, `${id}.json`); try { const [code, metadataContent] = await Promise.all([ readFile(jsPath, "utf-8"), readFile(metadataPath, "utf-8") ]); const metadata = JSON.parse(metadataContent); const morphFile = createMorphFile( { id: metadata.id || id, name: metadata.name || id, description: metadata.description || "", version: metadata.version || "1.0.0", features: metadata.features || [], author: metadata.author, icon: metadata.icon, defaultSize: metadata.defaultSize, persistent: metadata.persistent, tags: metadata.tags }, code ); if (metadata.promptHistory) { morphFile.promptHistory = metadata.promptHistory; } if (metadata.createdAt) { morphFile.createdAt = metadata.createdAt; } if (metadata.updatedAt) { morphFile.updatedAt = metadata.updatedAt; } return new Response(JSON.stringify(morphFile, null, 2), { headers: { "Content-Type": "application/json", "Content-Disposition": `attachment; filename="${id}.morph"` } }); } catch (legacyError) { return json({ error: "Panel not found" }, { status: 404 }); } } catch (error) { console.error("Failed to export panel:", error); return json({ error: error instanceof Error ? error.message : "Failed to export panel" }, { status: 500 }); } }; export { GET }; //# sourceMappingURL=_server.ts-maSTDOqB.js.map