diff --git a/src/auth/profile-continuity-inheritance.ts b/src/auth/profile-continuity-inheritance.ts index 9b2bd880..91fc253f 100644 --- a/src/auth/profile-continuity-inheritance.ts +++ b/src/auth/profile-continuity-inheritance.ts @@ -65,12 +65,13 @@ function loadLegacyContinuityInheritanceMap(): Record { function resolveMappedAccount( profileName: string, + profileType: ProfileType, inheritFromAccount: Record ): string | undefined { - const candidates = new Set([ - ...getProfileLookupCandidates(profileName), - resolveAliasToCanonical(profileName), - ]); + const candidates = new Set(getProfileLookupCandidates(profileName)); + if (profileType === 'settings') { + candidates.add(resolveAliasToCanonical(profileName)); + } for (const candidate of candidates) { const mapped = inheritFromAccount[candidate]; @@ -118,9 +119,13 @@ export async function resolveProfileContinuityInheritance( const inheritFromAccount = getContinuityInheritanceMap(); const sourceAccount = - resolveMappedAccount(input.profileName, inheritFromAccount) ?? + resolveMappedAccount(input.profileName, input.profileType, inheritFromAccount) ?? (!isUnifiedMode() - ? resolveMappedAccount(input.profileName, loadLegacyContinuityInheritanceMap()) + ? resolveMappedAccount( + input.profileName, + input.profileType, + loadLegacyContinuityInheritanceMap() + ) : undefined); if (!sourceAccount) { return {}; diff --git a/tests/unit/auth/profile-continuity-inheritance.test.ts b/tests/unit/auth/profile-continuity-inheritance.test.ts index f8f31a4e..6b99b653 100644 --- a/tests/unit/auth/profile-continuity-inheritance.test.ts +++ b/tests/unit/auth/profile-continuity-inheritance.test.ts @@ -258,6 +258,28 @@ describe('resolveProfileContinuityInheritance', () => { }); }); + it('does not apply km settings alias mapping to kimi cliproxy profile', async () => { + spyOn(configLoader, 'loadOrCreateUnifiedConfig').mockReturnValue({ + version: 8, + continuity: { + inherit_from_account: { + km: 'pro', + }, + }, + } as ReturnType); + + const ensureInstanceSpy = spyOn(InstanceManager.prototype, 'ensureInstance'); + + const result = await resolveProfileContinuityInheritance({ + profileName: 'kimi', + profileType: 'cliproxy', + target: 'claude', + }); + + expect(result).toEqual({}); + expect(ensureInstanceSpy).not.toHaveBeenCalled(); + }); + it('fails open when source account instance initialization throws', async () => { spyOn(configLoader, 'loadOrCreateUnifiedConfig').mockReturnValue({ version: 8,