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 (~/.claude.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}`)) } } }