From 911cd683d5365e897110d619f124fd187deef006 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Wed, 17 Jun 2026 18:08:16 +0800 Subject: [PATCH] refactor(commands): hide onboarding defaults --- src/commands/onboard-config.test.ts | 14 +++----------- src/commands/onboard-config.ts | 4 ++-- src/commands/onboard-custom-config.test.ts | 9 +++++---- src/commands/onboard-custom-config.ts | 2 +- 4 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/commands/onboard-config.test.ts b/src/commands/onboard-config.test.ts index b71c64f514fb..73652a57aabb 100644 --- a/src/commands/onboard-config.test.ts +++ b/src/commands/onboard-config.test.ts @@ -1,25 +1,17 @@ // Onboard config tests cover workspace, bootstrap, and local setup config mutations. import { describe, expect, it } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; -import { - applyLocalSetupWorkspaceConfig, - ONBOARDING_DEFAULT_DM_SCOPE, - ONBOARDING_DEFAULT_TOOLS_PROFILE, -} from "./onboard-config.js"; +import { applyLocalSetupWorkspaceConfig } from "./onboard-config.js"; describe("applyLocalSetupWorkspaceConfig", () => { - it("defaults local setup tool profile to coding", () => { - expect(ONBOARDING_DEFAULT_TOOLS_PROFILE).toBe("coding"); - }); - it("sets secure dmScope default when unset", () => { const baseConfig: OpenClawConfig = {}; const result = applyLocalSetupWorkspaceConfig(baseConfig, "/tmp/workspace"); - expect(result.session?.dmScope).toBe(ONBOARDING_DEFAULT_DM_SCOPE); + expect(result.session?.dmScope).toBe("per-channel-peer"); expect(result.gateway?.mode).toBe("local"); expect(result.agents?.defaults?.workspace).toBe("/tmp/workspace"); - expect(result.tools?.profile).toBe(ONBOARDING_DEFAULT_TOOLS_PROFILE); + expect(result.tools?.profile).toBe("coding"); }); it("preserves existing dmScope when already configured", () => { diff --git a/src/commands/onboard-config.ts b/src/commands/onboard-config.ts index d0a153c221ea..a204ea919920 100644 --- a/src/commands/onboard-config.ts +++ b/src/commands/onboard-config.ts @@ -5,9 +5,9 @@ import type { OpenClawConfig } from "../config/types.openclaw.js"; import type { ToolProfileId } from "../config/types.tools.js"; /** Default DM scoping selected during local onboarding. */ -export const ONBOARDING_DEFAULT_DM_SCOPE: DmScope = "per-channel-peer"; +const ONBOARDING_DEFAULT_DM_SCOPE: DmScope = "per-channel-peer"; /** Default tool profile selected during local onboarding. */ -export const ONBOARDING_DEFAULT_TOOLS_PROFILE: ToolProfileId = "coding"; +const ONBOARDING_DEFAULT_TOOLS_PROFILE: ToolProfileId = "coding"; /** Applies local gateway/workspace defaults without overwriting explicit user defaults. */ export function applyLocalSetupWorkspaceConfig( diff --git a/src/commands/onboard-custom-config.test.ts b/src/commands/onboard-custom-config.test.ts index 2a210d17ae7c..e30548d4e105 100644 --- a/src/commands/onboard-custom-config.test.ts +++ b/src/commands/onboard-custom-config.test.ts @@ -6,12 +6,13 @@ import { applyCustomApiConfig, buildAnthropicVerificationProbeRequest, buildOpenAiVerificationProbeRequest, - CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS, inferCustomModelSupportsImageInput, parseNonInteractiveCustomApiFlags, resolveCustomModelImageInputInference, } from "./onboard-custom-config.js"; +const EXPECTED_CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS = 128_000; + function buildCustomProviderConfig(contextWindow?: number) { if (contextWindow === undefined) { return {} as OpenClawConfig; @@ -129,17 +130,17 @@ describe("applyCustomApiConfig", () => { { name: "uses stable default context window for newly added custom models", existingContextWindow: undefined, - expectedContextWindow: CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS, + expectedContextWindow: EXPECTED_CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS, }, { name: "upgrades existing custom model context window when below hard minimum", existingContextWindow: 2048, - expectedContextWindow: CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS, + expectedContextWindow: EXPECTED_CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS, }, { name: "raises legacy generated hard-min context window (#79428)", existingContextWindow: CONTEXT_WINDOW_HARD_MIN_TOKENS, - expectedContextWindow: CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS, + expectedContextWindow: EXPECTED_CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS, }, { name: "preserves explicit small context window when already valid", diff --git a/src/commands/onboard-custom-config.ts b/src/commands/onboard-custom-config.ts index 613d4ab4444d..0b2f0bee0e9f 100644 --- a/src/commands/onboard-custom-config.ts +++ b/src/commands/onboard-custom-config.ts @@ -24,7 +24,7 @@ import { normalizeAlias } from "./models/alias-name.js"; * Mirrors the generic persisted custom-model catalog fallback and leaves enough * room above the default compaction reserve floor in `agent-settings.ts`. */ -export const CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS = 128_000; +const CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS = 128_000; const DEFAULT_CONTEXT_WINDOW = CUSTOM_PROVIDER_DEFAULT_CONTEXT_WINDOW_TOKENS; const DEFAULT_MAX_TOKENS = 4096; // Azure OpenAI uses the Responses API, which supports larger generated defaults.