rhodawk-ai-devops-engine / vendor /openclaude /src /migrations /resetAutoModeOptInForDefaultOffer.ts
| import { feature } from 'bun:bundle' | |
| import { logEvent } from 'src/services/analytics/index.js' | |
| import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js' | |
| import { logError } from '../utils/log.js' | |
| import { getAutoModeEnabledState } from '../utils/permissions/permissionSetup.js' | |
| import { | |
| getSettingsForSource, | |
| updateSettingsForSource, | |
| } from '../utils/settings/settings.js' | |
| /** | |
| * One-shot migration: clear skipAutoPermissionPrompt for users who accepted | |
| * the old 2-option AutoModeOptInDialog but don't have auto as their default. | |
| * Re-surfaces the dialog so they see the new "make it my default mode" option. | |
| * Guard lives in GlobalConfig (~/.openclaude.json), not settings.json, so it | |
| * survives settings resets and doesn't re-arm itself. | |
| * | |
| * Only runs when tengu_auto_mode_config.enabled === 'enabled'. For 'opt-in' | |
| * users, clearing skipAutoPermissionPrompt would remove auto from the carousel | |
| * (permissionSetup.ts:988) — the dialog would become unreachable and the | |
| * migration would defeat itself. In practice the ~40 target ants are all | |
| * 'enabled' (they reached the old dialog via bare Shift+Tab, which requires | |
| * 'enabled'), but the guard makes it safe regardless. | |
| */ | |
| export function resetAutoModeOptInForDefaultOffer(): void { | |
| if (feature('TRANSCRIPT_CLASSIFIER')) { | |
| const config = getGlobalConfig() | |
| if (config.hasResetAutoModeOptInForDefaultOffer) return | |
| if (getAutoModeEnabledState() !== 'enabled') return | |
| try { | |
| const user = getSettingsForSource('userSettings') | |
| if ( | |
| user?.skipAutoPermissionPrompt && | |
| user?.permissions?.defaultMode !== 'auto' | |
| ) { | |
| updateSettingsForSource('userSettings', { | |
| skipAutoPermissionPrompt: undefined, | |
| }) | |
| logEvent('tengu_migrate_reset_auto_opt_in_for_default_offer', {}) | |
| } | |
| saveGlobalConfig(c => { | |
| if (c.hasResetAutoModeOptInForDefaultOffer) return c | |
| return { ...c, hasResetAutoModeOptInForDefaultOffer: true } | |
| }) | |
| } catch (error) { | |
| logError(new Error(`Failed to reset auto mode opt-in: ${error}`)) | |
| } | |
| } | |
| } | |