Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
4.0 kB · 118 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119import { logEvent } from 'src/services/analytics/index.js'import { getCurrentProjectConfig, saveCurrentProjectConfig,} from '../utils/config.js'import { logError } from '../utils/log.js'import { getSettingsForSource, updateSettingsForSource,} from '../utils/settings/settings.js'
/** * Migration: Move MCP server approval fields from project config to local settings * This migrates both enableAllProjectMcpServers and enabledMcpjsonServers to the * settings system for better management and consistency. */export function migrateEnableAllProjectMcpServersToSettings(): void { const projectConfig = getCurrentProjectConfig()
// Check if any field exists in project config const hasEnableAll = projectConfig.enableAllProjectMcpServers !== undefined const hasEnabledServers = projectConfig.enabledMcpjsonServers && projectConfig.enabledMcpjsonServers.length > 0 const hasDisabledServers = projectConfig.disabledMcpjsonServers && projectConfig.disabledMcpjsonServers.length > 0
if (!hasEnableAll && !hasEnabledServers && !hasDisabledServers) { return }
try { const existingSettings = getSettingsForSource('localSettings') || {} const updates: Partial<{ enableAllProjectMcpServers: boolean enabledMcpjsonServers: string[] disabledMcpjsonServers: string[] }> = {} const fieldsToRemove: Array< | 'enableAllProjectMcpServers' | 'enabledMcpjsonServers' | 'disabledMcpjsonServers' > = []
// Migrate enableAllProjectMcpServers if it exists and hasn't been migrated if ( hasEnableAll && existingSettings.enableAllProjectMcpServers === undefined ) { updates.enableAllProjectMcpServers = projectConfig.enableAllProjectMcpServers fieldsToRemove.push('enableAllProjectMcpServers') } else if (hasEnableAll) { // Already migrated, just mark for removal fieldsToRemove.push('enableAllProjectMcpServers') }
// Migrate enabledMcpjsonServers if it exists if (hasEnabledServers && projectConfig.enabledMcpjsonServers) { const existingEnabledServers = existingSettings.enabledMcpjsonServers || [] // Merge the servers (avoiding duplicates) updates.enabledMcpjsonServers = [ ...new Set([ ...existingEnabledServers, ...projectConfig.enabledMcpjsonServers, ]), ] fieldsToRemove.push('enabledMcpjsonServers') }
// Migrate disabledMcpjsonServers if it exists if (hasDisabledServers && projectConfig.disabledMcpjsonServers) { const existingDisabledServers = existingSettings.disabledMcpjsonServers || [] // Merge the servers (avoiding duplicates) updates.disabledMcpjsonServers = [ ...new Set([ ...existingDisabledServers, ...projectConfig.disabledMcpjsonServers, ]), ] fieldsToRemove.push('disabledMcpjsonServers') }
// Update settings if there are any updates if (Object.keys(updates).length > 0) { updateSettingsForSource('localSettings', updates) }
// Remove migrated fields from project config if ( fieldsToRemove.includes('enableAllProjectMcpServers') || fieldsToRemove.includes('enabledMcpjsonServers') || fieldsToRemove.includes('disabledMcpjsonServers') ) { saveCurrentProjectConfig(current => { const { enableAllProjectMcpServers: _enableAll, enabledMcpjsonServers: _enabledServers, disabledMcpjsonServers: _disabledServers, ...configWithoutFields } = current return configWithoutFields }) }
// Log the migration event logEvent('tengu_migrate_mcp_approval_fields_success', { migratedCount: fieldsToRemove.length, }) } catch (e: unknown) { // Log migration failure but don't throw to avoid breaking startup logError(e) logEvent('tengu_migrate_mcp_approval_fields_error', {}) }}