import fs from "node:fs"; import path from "node:path"; import { resolveStateDir } from "../config/paths.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { findGitRoot } from "../infra/git-root.js"; import { resolveHomeRelativePath } from "../infra/home-dir.js"; import {
formatUserTime,
resolveUserTimeFormat,
resolveUserTimezone,
type ResolvedTimeFormat,
} from "./date-time.js";
function resolveRepoRoot(params: {
config?: OpenClawConfig;
workspaceDir?: string;
cwd?: string;
}): string | undefined { const configured = params.config?.agents?.defaults?.repoRoot?.trim(); if (configured) { try { const resolved = path.resolve(configured); const stat = fs.statSync(resolved); if (stat.isDirectory()) { return resolved;
}
} catch { // ignore invalid config path
}
} const candidates = [params.workspaceDir, params.cwd]
.map((value) => value?.trim())
.filter(Boolean) as string[]; const seen = new Set<string>(); for (const candidate of candidates) { const resolved = path.resolve(candidate); if (seen.has(resolved)) { continue;
}
seen.add(resolved); const root = findGitRoot(resolved); if (root) { return root;
}
} return undefined;
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.13Bemerkung:
(vorverarbeitet am 2026-06-09)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.