





















@@ -21,6 +21,8 @@ type RuntimeExtensionsResolution =
2121| { ok: true; runtimeExtensions: string[] }
2222| { ok: false; error: string };
232324+type PackageManifestStringList = { ok: true; entries: string[] } | { ok: false; error: string };
25+2426function runtimeExtensionsLengthMismatchMessage(params: {
2527runtimeExtensionsLength: number;
2628extensionsLength: number;
@@ -31,19 +33,40 @@ function runtimeExtensionsLengthMismatchMessage(params: {
3133);
3234}
333534-function normalizePackageManifestStringList(value: unknown): string[] {
35-if (!Array.isArray(value)) {
36-return [];
36+function readPackageManifestStringList(params: {
37+fieldName: string;
38+value: unknown;
39+}): PackageManifestStringList {
40+if (!Array.isArray(params.value)) {
41+return { ok: true, entries: [] };
3742}
38-return value.map((entry) => normalizeOptionalString(entry) ?? "").filter(Boolean);
43+const entries: string[] = [];
44+for (const [index, entry] of params.value.entries()) {
45+const normalized = normalizeOptionalString(entry);
46+if (!normalized) {
47+return {
48+ok: false,
49+error: `package.json ${params.fieldName}[${index}] must be a non-empty string`,
50+};
51+}
52+entries.push(normalized);
53+}
54+return { ok: true, entries };
3955}
40564157function resolvePackageRuntimeExtensionEntries(params: {
4258manifest: PackageManifest | null | undefined;
4359extensions: readonly string[];
4460}): RuntimeExtensionsResolution {
4561const packageManifest = getPackageManifestMetadata(params.manifest ?? undefined);
46-const runtimeExtensions = normalizePackageManifestStringList(packageManifest?.runtimeExtensions);
62+const runtimeExtensionsResult = readPackageManifestStringList({
63+fieldName: "openclaw.runtimeExtensions",
64+value: packageManifest?.runtimeExtensions,
65+});
66+if (!runtimeExtensionsResult.ok) {
67+return runtimeExtensionsResult;
68+}
69+const runtimeExtensions = runtimeExtensionsResult.entries;
4770if (runtimeExtensions.length === 0) {
4871return { ok: true, runtimeExtensions: [] };
4972}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。