* fix(agents): preserve Claude thinking selections Model switches now resolve thinking against the target model's saved preference instead of resetting to the catalog default. Claude owns its configured-model defaults and legacy Fable alias handling, while persisted permission modes remain unchanged. * chore(claude): tag Fable compatibility shim * fix(app): resolve persisted model aliases * fix(models): preserve aliases for older clients * fix(models): hide compatibility aliases from listings * fix(settings): hide compatibility model aliases * test(claude): cover legacy catalog entry * test(app): expect mock thinking controls in schedules * fix(app): preserve queued thinking preferences * fix(app): reconcile schedule provider snapshots * fix(app): preserve schedule model selections * fix(claude): preserve exact configured model ids * fix(app): preserve committed thinking preferences * fix(app): preserve aliased schedule thinking
61 lines
1.7 KiB
TypeScript
61 lines
1.7 KiB
TypeScript
import { useCallback } from "react";
|
|
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
import {
|
|
buildFavoriteModelKey,
|
|
DEFAULT_FORM_PREFERENCES,
|
|
isFavoriteModel,
|
|
mergeProviderPreferences,
|
|
toggleFavoriteModel,
|
|
type FavoriteModelPreference,
|
|
type FavoriteModelRow,
|
|
type FormPreferences,
|
|
type ProviderPreferences,
|
|
} from "@/create-agent-preferences/preferences";
|
|
import {
|
|
createAgentPreferencesService,
|
|
type FormPreferenceUpdate,
|
|
} from "@/create-agent-preferences/service";
|
|
|
|
const FORM_PREFERENCES_QUERY_KEY = ["form-preferences"];
|
|
|
|
export type { FavoriteModelPreference, FavoriteModelRow, FormPreferences, ProviderPreferences };
|
|
|
|
export { buildFavoriteModelKey, isFavoriteModel, mergeProviderPreferences, toggleFavoriteModel };
|
|
|
|
async function loadFormPreferences(): Promise<FormPreferences> {
|
|
return createAgentPreferencesService.load();
|
|
}
|
|
|
|
export interface UseFormPreferencesReturn {
|
|
preferences: FormPreferences;
|
|
isLoading: boolean;
|
|
updatePreferences: (updates: FormPreferenceUpdate) => Promise<FormPreferences>;
|
|
}
|
|
|
|
export function useFormPreferences(): UseFormPreferencesReturn {
|
|
const queryClient = useQueryClient();
|
|
const { data, isPending } = useQuery({
|
|
queryKey: FORM_PREFERENCES_QUERY_KEY,
|
|
queryFn: loadFormPreferences,
|
|
staleTime: Infinity,
|
|
gcTime: Infinity,
|
|
});
|
|
|
|
const preferences = data ?? DEFAULT_FORM_PREFERENCES;
|
|
|
|
const updatePreferences = useCallback(
|
|
async (updates: FormPreferenceUpdate) => {
|
|
const next = await createAgentPreferencesService.update(updates);
|
|
queryClient.setQueryData<FormPreferences>(FORM_PREFERENCES_QUERY_KEY, next);
|
|
return next;
|
|
},
|
|
[queryClient],
|
|
);
|
|
|
|
return {
|
|
preferences,
|
|
isLoading: isPending,
|
|
updatePreferences,
|
|
};
|
|
}
|