Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import { normalizeStringEntries } from "../../shared/string-normalization.js";
import { normalizeSecretInput } from "../../utils/normalize-secret-input.js";
import { resolveProviderIdForAuth } from "../provider-auth-aliases.js";
import { normalizeProviderId } from "../provider-id.js";
import { dedupeProfileIds, listProfilesForProvider } from "./profile-list.js";
import {
ensureAuthProfileStoreForLocalUpdate,
saveAuthProfileStore,
updateAuthProfileStoreWithLock,
} from "./store.js";
import type { AuthProfileCredential, AuthProfileStore } from "./types.js";
export { dedupeProfileIds, listProfilesForProvider } from "./profile-list.js";
export async function setAuthProfileOrder(params: {
agentDir?: string;
provider: string;
order?: string[] | null;
}): Promise<AuthProfileStore | null> {
const providerKey = normalizeProviderId(params.provider);
const sanitized =
params.order && Array.isArray(params.order) ? normalizeStringEntries(params.order) : [];
const deduped = dedupeProfileIds(sanitized);
return await updateAuthProfileStoreWithLock({
agentDir: params.agentDir,
updater: (store) => {
store.order = store.order ?? {};
if (deduped.length === 0) {
if (!store.order[providerKey]) {
return false;
}
delete store.order[providerKey];
if (Object.keys(store.order).length === 0) {
store.order = undefined;
}
return true;
}
store.order[providerKey] = deduped;
return true;
},
});
}
export function upsertAuthProfile(params: {
profileId: string;
credential: AuthProfileCredential;
agentDir?: string;
}): void {
const credential =
params.credential.type === "api_key"
? {
...params.credential,
...(typeof params.credential.key === "string"
? { key: normalizeSecretInput(params.credential.key) }
: {}),
}
: params.credential.type === "token"
? { ...params.credential, token: normalizeSecretInput(params.credential.token) }
: params.credential;
const store = ensureAuthProfileStoreForLocalUpdate(params.agentDir);
store.profiles[params.profileId] = credential;
saveAuthProfileStore(store, params.agentDir, {
filterExternalAuthProfiles: false,
syncExternalCli: false,
});
}
export async function upsertAuthProfileWithLock(params: {
profileId: string;
credential: AuthProfileCredential;
agentDir?: string;
}): Promise<AuthProfileStore | null> {
return await updateAuthProfileStoreWithLock({
agentDir: params.agentDir,
updater: (store) => {
store.profiles[params.profileId] = params.credential;
return true;
},
});
}
export async function removeProviderAuthProfilesWithLock(params: {
provider: string;
agentDir?: string;
}): Promise<AuthProfileStore | null> {
const providerKey = resolveProviderIdForAuth(params.provider);
const storeOrderKey = normalizeProviderId(params.provider);
return await updateAuthProfileStoreWithLock({
agentDir: params.agentDir,
updater: (store) => {
const profileIds = listProfilesForProvider(store, params.provider);
let changed = false;
for (const profileId of profileIds) {
if (store.profiles[profileId]) {
delete store.profiles[profileId];
changed = true;
}
if (store.usageStats?.[profileId]) {
delete store.usageStats[profileId];
changed = true;
}
}
if (store.order?.[storeOrderKey]) {
delete store.order[storeOrderKey];
changed = true;
if (Object.keys(store.order).length === 0) {
store.order = undefined;
}
}
if (store.lastGood?.[providerKey]) {
delete store.lastGood[providerKey];
changed = true;
if (Object.keys(store.lastGood).length === 0) {
store.lastGood = undefined;
}
}
if (store.usageStats && Object.keys(store.usageStats).length === 0) {
store.usageStats = undefined;
}
return changed;
},
});
}
export async function markAuthProfileGood(params: {
store: AuthProfileStore;
provider: string;
profileId: string;
agentDir?: string;
}): Promise<void> {
const { store, provider, profileId, agentDir } = params;
const providerKey = resolveProviderIdForAuth(provider);
const updated = await updateAuthProfileStoreWithLock({
agentDir,
updater: (freshStore) => {
const profile = freshStore.profiles[profileId];
if (!profile || resolveProviderIdForAuth(profile.provider) !== providerKey) {
return false;
}
freshStore.lastGood = { ...freshStore.lastGood, [providerKey]: profileId };
return true;
},
});
if (updated) {
store.lastGood = updated.lastGood;
return;
}
const profile = store.profiles[profileId];
if (!profile || resolveProviderIdForAuth(profile.provider) !== providerKey) {
return;
}
store.lastGood = { ...store.lastGood, [providerKey]: profileId };
saveAuthProfileStore(store, agentDir);
}
¤ Dauer der Verarbeitung: 0.24 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland