diff --git a/apps/web/components/settings/account.tsx b/apps/web/components/settings/account.tsx index ffea566c..57d356fc 100644 --- a/apps/web/components/settings/account.tsx +++ b/apps/web/components/settings/account.tsx @@ -41,6 +41,7 @@ import { toast } from "sonner" import { useContainerTags } from "@/hooks/use-container-tags" import { useHasCompanyBrain } from "@/hooks/use-company-brain" import { PopoverAnchor } from "@ui/components/popover" +import { OrgContext } from "@/components/settings/org-context" import { WorkspacePersona } from "@/components/settings/workspace-persona" import { OrgPlanBadge } from "@/components/org-plan-badge" import { useTokenUsage } from "@/hooks/use-token-usage" @@ -616,6 +617,8 @@ export default function Account() { + {canManageTeam && } + {canManageTeam && isCompanyBrain && } diff --git a/apps/web/components/settings/org-context.tsx b/apps/web/components/settings/org-context.tsx new file mode 100644 index 00000000..0aeb7c9f --- /dev/null +++ b/apps/web/components/settings/org-context.tsx @@ -0,0 +1,127 @@ +"use client" + +import { useEffect, useState } from "react" +import { LoaderIcon } from "lucide-react" +import { dmSans125ClassName, dmSansClassName } from "@/lib/fonts" +import { useOrgSettings, useUpdateOrgSettings } from "@/hooks/use-org-settings" +import { cn } from "@lib/utils" + +function SectionTitle({ children }: { children: React.ReactNode }) { + return ( +

+ {children} +

+ ) +} + +export function OrgContext() { + const { data: settings, isLoading, isError } = useOrgSettings() + const updateSettings = useUpdateOrgSettings() + const [prompt, setPrompt] = useState("") + + const enabled = settings?.shouldLLMFilter ?? false + const savedPrompt = settings?.filterPrompt ?? "" + const dirty = prompt.trim() !== savedPrompt.trim() + const settingsReady = !isLoading && !isError + + useEffect(() => { + setPrompt(settings?.filterPrompt ?? "") + }, [settings?.filterPrompt]) + + const handleToggle = (next: boolean) => { + updateSettings.mutate({ shouldLLMFilter: next }) + } + + const handleSave = () => { + updateSettings.mutate({ + shouldLLMFilter: true, + filterPrompt: prompt.trim() ? prompt.trim() : null, + }) + } + + return ( +
+
+
+ Organization Context +

+ Guide how Supermemory processes and remembers your content. +

+
+ +
+ + {enabled && ( +
+