mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-16 04:20:44 +00:00
Merged via squash.
Prepared head SHA: 6e8852a188
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
import path from "node:path";
|
|
import { resolveConfigDir, resolveUserPath } from "../utils.js";
|
|
import { resolveBundledPluginsDir } from "./bundled-dir.js";
|
|
|
|
export type PluginSourceRoots = {
|
|
stock?: string;
|
|
global: string;
|
|
workspace?: string;
|
|
};
|
|
|
|
export type PluginCacheInputs = {
|
|
roots: PluginSourceRoots;
|
|
loadPaths: string[];
|
|
};
|
|
|
|
export function resolvePluginSourceRoots(params: {
|
|
workspaceDir?: string;
|
|
env?: NodeJS.ProcessEnv;
|
|
}): PluginSourceRoots {
|
|
const env = params.env ?? process.env;
|
|
const workspaceRoot = params.workspaceDir ? resolveUserPath(params.workspaceDir, env) : undefined;
|
|
const stock = resolveBundledPluginsDir(env);
|
|
const global = path.join(resolveConfigDir(env), "extensions");
|
|
const workspace = workspaceRoot ? path.join(workspaceRoot, ".openclaw", "extensions") : undefined;
|
|
return { stock, global, workspace };
|
|
}
|
|
|
|
// Shared env-aware cache inputs for discovery, manifest, and loader caches.
|
|
export function resolvePluginCacheInputs(params: {
|
|
workspaceDir?: string;
|
|
loadPaths?: string[];
|
|
env?: NodeJS.ProcessEnv;
|
|
}): PluginCacheInputs {
|
|
const env = params.env ?? process.env;
|
|
const roots = resolvePluginSourceRoots({
|
|
workspaceDir: params.workspaceDir,
|
|
env,
|
|
});
|
|
// Preserve caller order because load-path precedence follows input order.
|
|
const loadPaths = (params.loadPaths ?? [])
|
|
.filter((entry): entry is string => typeof entry === "string")
|
|
.map((entry) => entry.trim())
|
|
.filter(Boolean)
|
|
.map((entry) => resolveUserPath(entry, env));
|
|
return { roots, loadPaths };
|
|
}
|