fix: honor non-interactive legacy migrations

This commit is contained in:
Peter Steinberger
2026-01-08 22:13:48 +01:00
parent e75ca23e7d
commit 35ba99c245
6 changed files with 35 additions and 17 deletions

View File

@@ -170,7 +170,7 @@ export async function maybeRepairGatewayServiceConfig(
const aggressiveIssues = audit.issues.filter(
(issue) => issue.level === "aggressive",
);
const recommendedIssues = audit.issues.filter(
const _recommendedIssues = audit.issues.filter(
(issue) => issue.level !== "aggressive",
);
const needsAggressive = aggressiveIssues.length > 0;
@@ -184,12 +184,12 @@ export async function maybeRepairGatewayServiceConfig(
const repair = needsAggressive
? await prompter.confirmAggressive({
message:
"Overwrite gateway service config with current defaults now?",
message: "Overwrite gateway service config with current defaults now?",
initialValue: Boolean(prompter.shouldForce),
})
: await prompter.confirmRepair({
message: "Update gateway service config to the recommended defaults now?",
message:
"Update gateway service config to the recommended defaults now?",
initialValue: true,
});
if (!repair) return;

View File

@@ -15,7 +15,9 @@ export type DoctorOptions = {
export type DoctorPrompter = {
confirm: (params: Parameters<typeof confirm>[0]) => Promise<boolean>;
confirmRepair: (params: Parameters<typeof confirm>[0]) => Promise<boolean>;
confirmAggressive: (params: Parameters<typeof confirm>[0]) => Promise<boolean>;
confirmAggressive: (
params: Parameters<typeof confirm>[0],
) => Promise<boolean>;
confirmSkipInNonInteractive: (
params: Parameters<typeof confirm>[0],
) => Promise<boolean>;

View File

@@ -129,10 +129,13 @@ export async function doctorCommand(
const legacyState = await detectLegacyStateMigrations({ cfg });
if (legacyState.preview.length > 0) {
note(legacyState.preview.join("\n"), "Legacy state detected");
const migrate = await prompter.confirm({
message: "Migrate legacy state (sessions/agent/WhatsApp auth) now?",
initialValue: true,
});
const migrate =
options.nonInteractive === true
? true
: await prompter.confirm({
message: "Migrate legacy state (sessions/agent/WhatsApp auth) now?",
initialValue: true,
});
if (migrate) {
const migrated = await runLegacyStateMigrations({
detected: legacyState,
@@ -146,7 +149,11 @@ export async function doctorCommand(
}
}
await noteStateIntegrity(cfg, prompter, snapshot.path ?? CONFIG_PATH_CLAWDBOT);
await noteStateIntegrity(
cfg,
prompter,
snapshot.path ?? CONFIG_PATH_CLAWDBOT,
);
cfg = await maybeRepairSandboxImages(cfg, runtime, prompter);
noteSandboxScopeWarnings(cfg);