import { useEffect, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { FlaskConical } from "lucide-react"; import { instanceSettingsApi } from "@/api/instanceSettings"; import { useBreadcrumbs } from "../context/BreadcrumbContext"; import { queryKeys } from "../lib/queryKeys"; import { cn } from "../lib/utils"; export function InstanceExperimentalSettings() { const { setBreadcrumbs } = useBreadcrumbs(); const queryClient = useQueryClient(); const [actionError, setActionError] = useState(null); useEffect(() => { setBreadcrumbs([ { label: "Instance Settings" }, { label: "Experimental" }, ]); }, [setBreadcrumbs]); const experimentalQuery = useQuery({ queryKey: queryKeys.instance.experimentalSettings, queryFn: () => instanceSettingsApi.getExperimental(), }); const toggleMutation = useMutation({ mutationFn: async (enabled: boolean) => instanceSettingsApi.updateExperimental({ enableIsolatedWorkspaces: enabled }), onSuccess: async () => { setActionError(null); await queryClient.invalidateQueries({ queryKey: queryKeys.instance.experimentalSettings }); }, onError: (error) => { setActionError(error instanceof Error ? error.message : "Failed to update experimental settings."); }, }); if (experimentalQuery.isLoading) { return
Loading experimental settings...
; } if (experimentalQuery.error) { return (
{experimentalQuery.error instanceof Error ? experimentalQuery.error.message : "Failed to load experimental settings."}
); } const enableIsolatedWorkspaces = experimentalQuery.data?.enableIsolatedWorkspaces === true; return (

Experimental

Opt into features that are still being evaluated before they become default behavior.

{actionError && (
{actionError}
)}

Enabled Isolated Workspaces

Show execution workspace controls in project configuration and allow isolated workspace behavior for new and existing issue runs.

); }