Files
openclaw-zero-token/daemon/systemd-unavailable.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
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
2026-03-30 17:58:12 +08:00

53 lines
1.6 KiB
TypeScript

export type SystemdUnavailableKind =
| "missing_systemctl"
| "user_bus_unavailable"
| "generic_unavailable";
function normalizeDetail(detail?: string): string {
return detail?.toLowerCase().trim() ?? "";
}
export function isSystemctlMissingDetail(detail?: string): boolean {
const normalized = normalizeDetail(detail);
return (
normalized.includes("not found") ||
normalized.includes("no such file or directory") ||
normalized.includes("spawn systemctl enoent") ||
normalized.includes("spawn systemctl eacces") ||
normalized.includes("systemctl not available")
);
}
export function isSystemdUserBusUnavailableDetail(detail?: string): boolean {
const normalized = normalizeDetail(detail);
return (
normalized.includes("failed to connect to bus") ||
normalized.includes("failed to connect to user scope bus") ||
normalized.includes("dbus_session_bus_address") ||
normalized.includes("xdg_runtime_dir") ||
normalized.includes("no medium found")
);
}
export function classifySystemdUnavailableDetail(detail?: string): SystemdUnavailableKind | null {
const normalized = normalizeDetail(detail);
if (!normalized) {
return null;
}
if (isSystemctlMissingDetail(normalized)) {
return "missing_systemctl";
}
if (isSystemdUserBusUnavailableDetail(normalized)) {
return "user_bus_unavailable";
}
if (
normalized.includes("systemctl --user unavailable") ||
normalized.includes("systemd user services are required") ||
normalized.includes("not been booted with systemd") ||
normalized.includes("not supported")
) {
return "generic_unavailable";
}
return null;
}