import { Button } from "@/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { Switch } from "@/components/ui/switch"; import { getErrorMessage, setProviderFormDirtyState, useAppDispatch } from "@/lib/store"; import { useUpdateProviderMutation } from "@/lib/store/apis/providersApi"; import type { ModelProvider } from "@/lib/types/config"; import { openaiConfigFormSchema, type OpenAIConfigFormSchema } from "@/lib/types/schemas"; import { RbacOperation, RbacResource, useRbac } from "@enterprise/lib"; import { zodResolver } from "@hookform/resolvers/zod"; import { useEffect } from "react"; import { useForm, type Resolver } from "react-hook-form"; import { toast } from "sonner"; import { buildProviderUpdatePayload } from "../views/utils"; interface OpenAIConfigFormFragmentProps { provider: ModelProvider; } export function OpenAIConfigFormFragment({ provider }: OpenAIConfigFormFragmentProps) { const dispatch = useAppDispatch(); const hasUpdateProviderAccess = useRbac(RbacResource.ModelProvider, RbacOperation.Update); const [updateProvider, { isLoading: isUpdatingProvider }] = useUpdateProviderMutation(); const form = useForm({ resolver: zodResolver(openaiConfigFormSchema) as Resolver, mode: "onChange", reValidateMode: "onChange", defaultValues: { disable_store: provider.openai_config?.disable_store ?? false, }, }); useEffect(() => { dispatch(setProviderFormDirtyState(form.formState.isDirty)); }, [form.formState.isDirty, dispatch]); useEffect(() => { form.reset({ disable_store: provider.openai_config?.disable_store ?? false, }); }, [form, provider.name, provider.openai_config?.disable_store]); const onSubmit = (data: OpenAIConfigFormSchema) => { updateProvider( buildProviderUpdatePayload(provider, { openai_config: { disable_store: data.disable_store, }, }), ) .unwrap() .then(() => { toast.success("OpenAI configuration updated successfully"); form.reset(data); }) .catch((err) => { toast.error("Failed to update OpenAI configuration", { description: getErrorMessage(err), }); }); }; return (
(
Disable Store

With the Responses API, store defaults to true, and when it is on, the generated response is stored for later retrieval via API. OpenAI exposes endpoints to retrieve and delete stored responses, so your response IDs become durable server-side objects instead of one-shot IDs.

{ field.onChange(checked); form.trigger("disable_store"); }} />
)} />
); }