From af34c8fafec2a0091b57ed342ab8d53cbcd9f716 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 14:21:28 +0000 Subject: [PATCH] refactor(onboard): share local workspace+gateway config --- src/commands/onboard-config.ts | 21 +++++++++++++++++++ src/commands/onboard-non-interactive/local.ts | 16 ++------------ src/wizard/onboarding.ts | 16 ++------------ 3 files changed, 25 insertions(+), 28 deletions(-) create mode 100644 src/commands/onboard-config.ts diff --git a/src/commands/onboard-config.ts b/src/commands/onboard-config.ts new file mode 100644 index 000000000..dc7c8cd4f --- /dev/null +++ b/src/commands/onboard-config.ts @@ -0,0 +1,21 @@ +import type { OpenClawConfig } from "../config/config.js"; + +export function applyOnboardingLocalWorkspaceConfig( + baseConfig: OpenClawConfig, + workspaceDir: string, +): OpenClawConfig { + return { + ...baseConfig, + agents: { + ...baseConfig.agents, + defaults: { + ...baseConfig.agents?.defaults, + workspace: workspaceDir, + }, + }, + gateway: { + ...baseConfig.gateway, + mode: "local", + }, + }; +} diff --git a/src/commands/onboard-non-interactive/local.ts b/src/commands/onboard-non-interactive/local.ts index 3768c7a82..7c64f1ca6 100644 --- a/src/commands/onboard-non-interactive/local.ts +++ b/src/commands/onboard-non-interactive/local.ts @@ -6,6 +6,7 @@ import { resolveGatewayPort, writeConfigFile } from "../../config/config.js"; import { logConfigUpdated } from "../../config/logging.js"; import { DEFAULT_GATEWAY_DAEMON_RUNTIME } from "../daemon-runtime.js"; import { healthCommand } from "../health.js"; +import { applyOnboardingLocalWorkspaceConfig } from "../onboard-config.js"; import { applyWizardMetadata, DEFAULT_WORKSPACE, @@ -35,20 +36,7 @@ export async function runNonInteractiveOnboardingLocal(params: { defaultWorkspaceDir: DEFAULT_WORKSPACE, }); - let nextConfig: OpenClawConfig = { - ...baseConfig, - agents: { - ...baseConfig.agents, - defaults: { - ...baseConfig.agents?.defaults, - workspace: workspaceDir, - }, - }, - gateway: { - ...baseConfig.gateway, - mode: "local", - }, - }; + let nextConfig: OpenClawConfig = applyOnboardingLocalWorkspaceConfig(baseConfig, workspaceDir); const inferredAuthChoice = inferAuthChoiceFromFlags(opts); if (!opts.authChoice && inferredAuthChoice.matches.length > 1) { diff --git a/src/wizard/onboarding.ts b/src/wizard/onboarding.ts index c61d6186d..ae15e406e 100644 --- a/src/wizard/onboarding.ts +++ b/src/wizard/onboarding.ts @@ -18,6 +18,7 @@ import { } from "../commands/auth-choice.js"; import { applyPrimaryModel, promptDefaultModel } from "../commands/model-picker.js"; import { setupChannels } from "../commands/onboard-channels.js"; +import { applyOnboardingLocalWorkspaceConfig } from "../commands/onboard-config.js"; import { promptCustomApiConfig } from "../commands/onboard-custom.js"; import { applyWizardMetadata, @@ -352,20 +353,7 @@ export async function runOnboardingWizard( const workspaceDir = resolveUserPath(workspaceInput.trim() || DEFAULT_WORKSPACE); - let nextConfig: OpenClawConfig = { - ...baseConfig, - agents: { - ...baseConfig.agents, - defaults: { - ...baseConfig.agents?.defaults, - workspace: workspaceDir, - }, - }, - gateway: { - ...baseConfig.gateway, - mode: "local", - }, - }; + let nextConfig: OpenClawConfig = applyOnboardingLocalWorkspaceConfig(baseConfig, workspaceDir); const authStore = ensureAuthProfileStore(undefined, { allowKeychainPrompt: false,