| import type { AppState } from '../../state/AppState.js' |
| import { logForDebugging } from '../debug.js' |
| import { updateHooksConfigSnapshot } from '../hooks/hooksConfigSnapshot.js' |
| import { |
| createDisabledBypassPermissionsContext, |
| findOverlyBroadBashPermissions, |
| isBypassPermissionsModeDisabled, |
| removeDangerousPermissions, |
| transitionPlanAutoMode, |
| } from '../permissions/permissionSetup.js' |
| import { syncPermissionRulesFromDisk } from '../permissions/permissions.js' |
| import { loadAllPermissionRulesFromDisk } from '../permissions/permissionsLoader.js' |
| import type { SettingSource } from './constants.js' |
| import { getInitialSettings } from './settings.js' |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| export function applySettingsChange( |
| source: SettingSource, |
| setAppState: (f: (prev: AppState) => AppState) => void, |
| ): void { |
| const newSettings = getInitialSettings() |
|
|
| logForDebugging(`Settings changed from ${source}, updating app state`) |
|
|
| const updatedRules = loadAllPermissionRulesFromDisk() |
| updateHooksConfigSnapshot() |
|
|
| setAppState(prev => { |
| let newContext = syncPermissionRulesFromDisk( |
| prev.toolPermissionContext, |
| updatedRules, |
| ) |
|
|
| |
| if ( |
| process.env.USER_TYPE === 'ant' && |
| process.env.CLAUDE_CODE_ENTRYPOINT !== 'local-agent' |
| ) { |
| const overlyBroad = findOverlyBroadBashPermissions(updatedRules, []) |
| if (overlyBroad.length > 0) { |
| newContext = removeDangerousPermissions(newContext, overlyBroad) |
| } |
| } |
|
|
| if ( |
| newContext.isBypassPermissionsModeAvailable && |
| isBypassPermissionsModeDisabled() |
| ) { |
| newContext = createDisabledBypassPermissionsContext(newContext) |
| } |
|
|
| newContext = transitionPlanAutoMode(newContext) |
|
|
| |
| |
| |
| |
| const prevEffort = prev.settings.effortLevel |
| const newEffort = newSettings.effortLevel |
| const effortChanged = prevEffort !== newEffort |
|
|
| return { |
| ...prev, |
| settings: newSettings, |
| toolPermissionContext: newContext, |
| |
| |
| |
| |
| |
| ...(effortChanged && newEffort !== undefined |
| ? { effortValue: newEffort } |
| : {}), |
| } |
| }) |
| } |
|
|