fix: doctor ignore install dir in legacy workspace check

This commit is contained in:
Peter Steinberger
2026-01-10 16:23:28 +01:00
parent db5e4b986b
commit e60c3fc1b3
4 changed files with 71 additions and 6 deletions

View File

@@ -2,7 +2,12 @@ import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { DEFAULT_AGENTS_FILENAME } from "../agents/workspace.js";
import {
DEFAULT_AGENTS_FILENAME,
DEFAULT_IDENTITY_FILENAME,
DEFAULT_SOUL_FILENAME,
DEFAULT_USER_FILENAME,
} from "../agents/workspace.js";
export const MEMORY_SYSTEM_PROMPT = [
"Memory system not found in workspace.",
@@ -46,6 +51,19 @@ export type LegacyWorkspaceDetection = {
legacyDirs: string[];
};
function looksLikeWorkspaceDir(
dir: string,
exists: (value: string) => boolean,
) {
const markers = [
DEFAULT_AGENTS_FILENAME,
DEFAULT_SOUL_FILENAME,
DEFAULT_USER_FILENAME,
DEFAULT_IDENTITY_FILENAME,
];
return markers.some((name) => exists(path.join(dir, name)));
}
export function detectLegacyWorkspaceDirs(params: {
workspaceDir: string;
homedir?: () => string;
@@ -56,10 +74,14 @@ export function detectLegacyWorkspaceDirs(params: {
const home = homedir();
const activeWorkspace = path.resolve(params.workspaceDir);
const candidates = [path.join(home, "clawdis"), path.join(home, "clawdbot")];
const legacyDirs = candidates.filter((candidate) => {
if (!exists(candidate)) return false;
return path.resolve(candidate) !== activeWorkspace;
});
const legacyDirs = candidates
.filter((candidate) => {
if (!exists(candidate)) return false;
return path.resolve(candidate) !== activeWorkspace;
})
.filter((candidate) => {
return looksLikeWorkspaceDir(candidate, exists);
});
return { activeWorkspace, legacyDirs };
}