export function removeProviderReferences( removedProviderId: string, agentProviderMap: Record, agentModelMap: Record, ): { agentProviderMap: Record; agentModelMap: Record; providerMapChanged: boolean; modelMapChanged: boolean; } { let providerMapChanged = false; let modelMapChanged = false; const orphanedAgents = new Set(); const nextAgentProviderMap: Record = {}; for (const [agentId, providerId] of Object.entries(agentProviderMap)) { if (providerId === removedProviderId) { providerMapChanged = true; orphanedAgents.add(agentId); } else { nextAgentProviderMap[agentId] = providerId; } } const nextAgentModelMap: Record = { ...agentModelMap }; for (const agentId of orphanedAgents) { if (agentId in nextAgentModelMap) { delete nextAgentModelMap[agentId]; modelMapChanged = true; } } return { agentProviderMap: providerMapChanged ? nextAgentProviderMap : agentProviderMap, agentModelMap: modelMapChanged ? nextAgentModelMap : agentModelMap, providerMapChanged, modelMapChanged, }; }