mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-10 09:10:46 +08:00
重构主控编排与运行时预热链路,统一工作区提示词/专家调度协议并补齐 wiki 记忆注入与写回闭环。
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。 Made-with: Cursor
This commit is contained in:
parent
4a23b715a2
commit
dbbe3add6a
14438 changed files with 2693620 additions and 2546 deletions
64
openclaw/scripts/preinstall-package-manager-warning.mjs
Normal file
64
openclaw/scripts/preinstall-package-manager-warning.mjs
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
import { pathToFileURL } from "node:url";
|
||||
|
||||
const allowedLifecyclePackageManagers = new Set(["pnpm", "npm", "yarn", "bun"]);
|
||||
|
||||
function normalizeEnvValue(value) {
|
||||
return typeof value === "string" ? value.trim() : "";
|
||||
}
|
||||
|
||||
function normalizeLifecyclePackageManagerName(value) {
|
||||
const normalized = normalizeEnvValue(value).toLowerCase();
|
||||
if (!/^[a-z0-9][a-z0-9._-]*$/u.test(normalized)) {
|
||||
return null;
|
||||
}
|
||||
return allowedLifecyclePackageManagers.has(normalized) ? normalized : null;
|
||||
}
|
||||
|
||||
export function detectLifecyclePackageManager(env = process.env) {
|
||||
const userAgent = normalizeEnvValue(env.npm_config_user_agent);
|
||||
const userAgentMatch = /^([A-Za-z0-9._-]+)\//u.exec(userAgent);
|
||||
if (userAgentMatch) {
|
||||
return normalizeLifecyclePackageManagerName(userAgentMatch[1]);
|
||||
}
|
||||
|
||||
const execPath = normalizeEnvValue(env.npm_execpath).toLowerCase();
|
||||
if (execPath.includes("pnpm")) {
|
||||
return "pnpm";
|
||||
}
|
||||
if (execPath.includes("npm")) {
|
||||
return "npm";
|
||||
}
|
||||
if (execPath.includes("yarn")) {
|
||||
return "yarn";
|
||||
}
|
||||
if (execPath.includes("bun")) {
|
||||
return "bun";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
export function createPackageManagerWarningMessage(packageManager) {
|
||||
if (!packageManager || packageManager === "pnpm") {
|
||||
return null;
|
||||
}
|
||||
|
||||
return [
|
||||
`[openclaw] warning: detected ${packageManager} for install lifecycle.`,
|
||||
"[openclaw] this repo works best with pnpm; npm-compatible installs are slower and much larger here.",
|
||||
"[openclaw] prefer: corepack pnpm install",
|
||||
].join("\n");
|
||||
}
|
||||
|
||||
export function warnIfNonPnpmLifecycle(env = process.env, warn = console.warn) {
|
||||
const message = createPackageManagerWarningMessage(detectLifecyclePackageManager(env));
|
||||
if (!message) {
|
||||
return false;
|
||||
}
|
||||
warn(message);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (import.meta.url === pathToFileURL(process.argv[1] ?? "").href) {
|
||||
warnIfNonPnpmLifecycle();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue