1+ /**
2+ * Shared Claude CLI backend normalization. It sanitizes command args, maps
3+ * thinking levels, and keeps OpenClaw-managed CLI runs isolated from shell env.
4+ */
15import type {
26 CliBackendConfig ,
37 CliBackendNormalizeConfigContext ,
@@ -17,6 +21,7 @@ export {
1721// consulting its local login state, so inherited shell overrides must not
1822// steer OpenClaw-managed Claude CLI runs toward a different provider,
1923// endpoint, token source, plugin/config tree, or telemetry bootstrap mode.
24+ /** Environment variables removed before launching OpenClaw-managed Claude CLI runs. */
2025export const CLAUDE_CLI_CLEAR_ENV = [
2126 "ANTHROPIC_API_KEY" ,
2227 "ANTHROPIC_API_KEY_OLD" ,
@@ -67,6 +72,7 @@ const CLAUDE_BYPASS_PERMISSION_MODE = "bypassPermissions";
6772
6873type ClaudeCliEffort = "low" | "medium" | "high" | "xhigh" | "max" ;
6974
75+ /** Return whether a provider id refers to the Claude CLI backend. */
7076export function isClaudeCliProvider ( providerId : string ) : boolean {
7177 return normalizeOptionalLowercaseString ( providerId ) === CLAUDE_CLI_BACKEND_ID ;
7278}
@@ -81,6 +87,7 @@ function isOpenClawRequestedYolo(context?: CliBackendNormalizeConfigContext): bo
8187 return security === "full" && ask === "off" ;
8288}
8389
90+ /** Resolve Claude permission mode from OpenClaw exec security settings. */
8491export function resolveClaudePermissionMode ( context ?: CliBackendNormalizeConfigContext ) : {
8592 mode ?: string ;
8693 overrideExisting : boolean ;
@@ -90,6 +97,7 @@ export function resolveClaudePermissionMode(context?: CliBackendNormalizeConfigC
9097 : { overrideExisting : false } ;
9198}
9299
100+ /** Normalize Claude permission arguments, removing legacy skip-permissions flags. */
93101export function normalizeClaudePermissionArgs (
94102 args ?: string [ ] ,
95103 options ?: { mode ?: string ; overrideExisting ?: boolean } ,
@@ -138,6 +146,7 @@ export function normalizeClaudePermissionArgs(
138146 return normalized ;
139147}
140148
149+ /** Ensure Claude CLI setting sources stay restricted to user settings. */
141150export function normalizeClaudeSettingSourcesArgs ( args ?: string [ ] ) : string [ ] | undefined {
142151 if ( ! args ) {
143152 return args ;
@@ -172,6 +181,7 @@ export function normalizeClaudeSettingSourcesArgs(args?: string[]): string[] | u
172181 return normalized ;
173182}
174183
184+ /** Map OpenClaw thinking levels to Claude CLI effort flags for a model id. */
175185export function mapClaudeCliThinkingLevelToEffort (
176186 thinkingLevel ?: string | null ,
177187) : ClaudeCliEffort | undefined {
@@ -216,6 +226,7 @@ function stripClaudeEffortArgs(args: readonly string[]): string[] {
216226 return normalized ;
217227}
218228
229+ /** Resolve final Claude CLI execution args for one backend invocation. */
219230export function resolveClaudeCliExecutionArgs (
220231 context : CliBackendResolveExecutionArgsContext ,
221232) : string [ ] {
@@ -226,6 +237,7 @@ export function resolveClaudeCliExecutionArgs(
226237 return [ ...stripClaudeEffortArgs ( context . baseArgs ) , CLAUDE_EFFORT_ARG , effort ] ;
227238}
228239
240+ /** Normalize Claude CLI backend config before registration or execution. */
229241export function normalizeClaudeBackendConfig (
230242 config : CliBackendConfig ,
231243 context ?: CliBackendNormalizeConfigContext ,
0 commit comments