52 lines
2.1 KiB
TypeScript
52 lines
2.1 KiB
TypeScript
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}`))
|
|
}
|
|
}
|
|
}
|