mirror of
http://192.168.0.88:13333/lywsvip/openclaw-zero-token.git
synced 2026-05-30 21:50:19 +08:00
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
import { LEGACY_CONFIG_MIGRATIONS } from "./legacy.migrations.js";
|
|
import { LEGACY_CONFIG_RULES } from "./legacy.rules.js";
|
|
import type { LegacyConfigIssue } from "./types.js";
|
|
|
|
function getPathValue(root: Record<string, unknown>, path: string[]): unknown {
|
|
let cursor: unknown = root;
|
|
for (const key of path) {
|
|
if (!cursor || typeof cursor !== "object") {
|
|
return undefined;
|
|
}
|
|
cursor = (cursor as Record<string, unknown>)[key];
|
|
}
|
|
return cursor;
|
|
}
|
|
|
|
export function findLegacyConfigIssues(raw: unknown, sourceRaw?: unknown): LegacyConfigIssue[] {
|
|
if (!raw || typeof raw !== "object") {
|
|
return [];
|
|
}
|
|
const root = raw as Record<string, unknown>;
|
|
const sourceRoot =
|
|
sourceRaw && typeof sourceRaw === "object" ? (sourceRaw as Record<string, unknown>) : root;
|
|
const issues: LegacyConfigIssue[] = [];
|
|
for (const rule of LEGACY_CONFIG_RULES) {
|
|
const cursor = getPathValue(root, rule.path);
|
|
if (cursor !== undefined && (!rule.match || rule.match(cursor, root))) {
|
|
if (rule.requireSourceLiteral) {
|
|
const sourceCursor = getPathValue(sourceRoot, rule.path);
|
|
if (sourceCursor === undefined) {
|
|
continue;
|
|
}
|
|
if (rule.match && !rule.match(sourceCursor, sourceRoot)) {
|
|
continue;
|
|
}
|
|
}
|
|
issues.push({ path: rule.path.join("."), message: rule.message });
|
|
}
|
|
}
|
|
return issues;
|
|
}
|
|
|
|
export function applyLegacyMigrations(raw: unknown): {
|
|
next: Record<string, unknown> | null;
|
|
changes: string[];
|
|
} {
|
|
if (!raw || typeof raw !== "object") {
|
|
return { next: null, changes: [] };
|
|
}
|
|
const next = structuredClone(raw) as Record<string, unknown>;
|
|
const changes: string[] = [];
|
|
for (const migration of LEGACY_CONFIG_MIGRATIONS) {
|
|
migration.apply(next, changes);
|
|
}
|
|
if (changes.length === 0) {
|
|
return { next: null, changes: [] };
|
|
}
|
|
return { next, changes };
|
|
}
|