Some checks failed
ci / Validate workspace (push) Successful in 12m32s
landing-page-ci / Validate landing page (push) Successful in 9m41s
landing-page-deploy / Deploy landing page (push) Failing after 5m23s
github-metrics / Generate repository metrics SVG (push) Has started running
refresh-contributors-wall / Refresh contributors wall cache bust (push) Has started running
This repository contains the open-design daemon CLI source code, built and packaged at https://helix-mind.ai/cli/open-design/latest.tgz for use by the HelixMind /design slash command. Licenses: Apache-2.0 (root) + MIT (skills/*)
72 lines
2.4 KiB
TypeScript
72 lines
2.4 KiB
TypeScript
import { readFileSync } from "node:fs";
|
|
import { cp } from "node:fs/promises";
|
|
import { dirname, join } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
function resolveToolsPackRoot(startDir: string): string {
|
|
const maxDepth = 6;
|
|
let current = startDir;
|
|
|
|
for (let depth = 0; depth < maxDepth; depth += 1) {
|
|
try {
|
|
const raw = readFileSync(join(current, "package.json"), "utf8");
|
|
const parsed = JSON.parse(raw) as { name?: unknown };
|
|
if (parsed.name === "@open-design/tools-pack") {
|
|
return current;
|
|
}
|
|
} catch {
|
|
// Keep walking until we find the tools-pack package root.
|
|
}
|
|
|
|
const parent = dirname(current);
|
|
if (parent === current) break;
|
|
current = parent;
|
|
}
|
|
|
|
throw new Error(`tools-pack: unable to resolve package root from ${startDir}`);
|
|
}
|
|
|
|
export const toolsPackRoot = resolveToolsPackRoot(dirname(fileURLToPath(import.meta.url)));
|
|
export const resourcesRoot = join(toolsPackRoot, "resources");
|
|
|
|
export const macResources = {
|
|
entitlements: join(resourcesRoot, "mac", "entitlements.mac.plist"),
|
|
entitlementsInherit: join(resourcesRoot, "mac", "entitlements.mac.inherit.plist"),
|
|
icon: join(resourcesRoot, "mac", "icon.icns"),
|
|
iconPng: join(resourcesRoot, "mac", "icon.png"),
|
|
notarizeHook: join(resourcesRoot, "mac", "notarize.cjs"),
|
|
webStandaloneAfterPackHook: join(resourcesRoot, "mac", "web-standalone-after-pack.cjs"),
|
|
} as const;
|
|
|
|
export const winResources = {
|
|
icon: join(resourcesRoot, "win", "icon.ico"),
|
|
} as const;
|
|
|
|
export const linuxResources = {
|
|
icon: join(resourcesRoot, "linux", "icon.png"),
|
|
desktopTemplate: join(resourcesRoot, "linux", "open-design.desktop.template"),
|
|
} as const;
|
|
|
|
const BUNDLED_RESOURCE_TREES = [
|
|
{ from: "skills", to: "skills" },
|
|
{ from: "design-systems", to: "design-systems" },
|
|
{ from: "craft", to: "craft" },
|
|
{ from: join("assets", "frames"), to: "frames" },
|
|
{ from: join("assets", "community-pets"), to: "community-pets" },
|
|
{ from: "prompt-templates", to: "prompt-templates" },
|
|
] as const;
|
|
|
|
export async function copyBundledResourceTrees({
|
|
workspaceRoot,
|
|
resourceRoot,
|
|
}: {
|
|
workspaceRoot: string;
|
|
resourceRoot: string;
|
|
}): Promise<void> {
|
|
for (const entry of BUNDLED_RESOURCE_TREES) {
|
|
await cp(join(workspaceRoot, entry.from), join(resourceRoot, entry.to), {
|
|
recursive: true,
|
|
});
|
|
}
|
|
}
|