/ migrations / migrateBypassPermissionsAcceptedToSettings.ts
migrateBypassPermissionsAcceptedToSettings.ts
 1  import { logEvent } from 'src/services/analytics/index.js'
 2  import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js'
 3  import { logError } from '../utils/log.js'
 4  import {
 5    hasSkipDangerousModePermissionPrompt,
 6    updateSettingsForSource,
 7  } from '../utils/settings/settings.js'
 8  
 9  /**
10   * Migration: Move bypassPermissionsModeAccepted from global config to settings.json
11   * as skipDangerousModePermissionPrompt. This is a better home since settings.json
12   * is the user-configurable settings file.
13   */
14  export function migrateBypassPermissionsAcceptedToSettings(): void {
15    const globalConfig = getGlobalConfig()
16  
17    if (!globalConfig.bypassPermissionsModeAccepted) {
18      return
19    }
20  
21    try {
22      if (!hasSkipDangerousModePermissionPrompt()) {
23        updateSettingsForSource('userSettings', {
24          skipDangerousModePermissionPrompt: true,
25        })
26      }
27  
28      logEvent('tengu_migrate_bypass_permissions_accepted', {})
29  
30      saveGlobalConfig(current => {
31        if (!('bypassPermissionsModeAccepted' in current)) return current
32        const { bypassPermissionsModeAccepted: _, ...updatedConfig } = current
33        return updatedConfig
34      })
35    } catch (error) {
36      logError(
37        new Error(`Failed to migrate bypass permissions accepted: ${error}`),
38      )
39    }
40  }