diff --git a/src/interface/web/app/agents/page.tsx b/src/interface/web/app/agents/page.tsx index 0ec76839..89deb663 100644 --- a/src/interface/web/app/agents/page.tsx +++ b/src/interface/web/app/agents/page.tsx @@ -140,11 +140,14 @@ function CreateAgentCard(props: CreateAgentCardProps) { Create Agent - + Create Agent {!props.userProfile && showLoginPrompt && ( @@ -174,7 +177,11 @@ export default function Agents() { const { data, error, mutate } = useSWR("agents", agentsFetcher, { revalidateOnFocus: false, }); - const authenticatedData = useAuthenticatedData(); + const { + data: authenticatedData, + error: authenticationError, + isLoading: authenticationLoading, + } = useAuthenticatedData(); const { userConfig } = useUserConfig(true); const [showLoginPrompt, setShowLoginPrompt] = useState(false); const isMobileWidth = useIsMobileWidth(); @@ -310,7 +317,11 @@ export default function Agents() { input_tools: [], output_modes: [], }} - userProfile={authenticatedData} + userProfile={ + authenticationLoading + ? null + : (authenticatedData ?? null) + } isMobileWidth={isMobileWidth} filesOptions={filesData || []} modelOptions={userConfig?.chat_model_options || []} @@ -328,7 +339,6 @@ export default function Agents() { {showLoginPrompt && ( @@ -345,53 +355,59 @@ export default function Agents() {
- {personalAgents.map((agent) => ( - - ))} + {authenticatedData && + personalAgents.map((agent) => ( + + ))}

Explore

- {publicAgents.map((agent) => ( - - ))} + {!authenticationLoading && + publicAgents.map((agent) => ( + + ))}
diff --git a/src/interface/web/app/automations/page.tsx b/src/interface/web/app/automations/page.tsx index f7fbb906..a4becd1b 100644 --- a/src/interface/web/app/automations/page.tsx +++ b/src/interface/web/app/automations/page.tsx @@ -980,7 +980,11 @@ function AutomationComponentWrapper(props: AutomationComponentWrapperProps) { } export default function Automations() { - const authenticatedData = useAuthenticatedData(); + const { + data: authenticatedData, + error: authenticationError, + isLoading: authenticationLoading, + } = useAuthenticatedData(); const { data: personalAutomations, error, @@ -1068,9 +1072,6 @@ export default function Automations() { {showLoginPrompt && ( @@ -1114,7 +1115,7 @@ export default function Automations() { {isLoading && }
- {personalAutomations && + {authenticatedData && + personalAutomations && personalAutomations.map((automation) => ( ))} - {allNewAutomations.map((automation) => ( - - ))} + {authenticatedData && + allNewAutomations.map((automation) => ( + + ))}

Explore

@@ -1154,7 +1157,7 @@ export default function Automations() { isMobileWidth={isMobileWidth} setNewAutomationData={setNewAutomationData} key={automation.id} - authenticatedData={authenticatedData} + authenticatedData={authenticatedData || null} automation={automation} locationData={locationData} isLoggedIn={authenticatedData ? true : false} diff --git a/src/interface/web/app/chat/chat.module.css b/src/interface/web/app/chat/chat.module.css index 9bd95434..c9868429 100644 --- a/src/interface/web/app/chat/chat.module.css +++ b/src/interface/web/app/chat/chat.module.css @@ -64,9 +64,10 @@ div.chatBody { div.chatLayout { display: grid; - grid-template-columns: auto 1fr; + grid-template-columns: 1fr; gap: 1rem; padding-top: 1rem; + width: 100%; } div.chatBox { diff --git a/src/interface/web/app/chat/page.tsx b/src/interface/web/app/chat/page.tsx index 91a7c12b..1162379f 100644 --- a/src/interface/web/app/chat/page.tsx +++ b/src/interface/web/app/chat/page.tsx @@ -193,7 +193,11 @@ export default function Chat() { timezone: Intl.DateTimeFormat().resolvedOptions().timeZone, }, }; - const authenticatedData = useAuthenticatedData(); + const { + data: authenticatedData, + error: authenticationError, + isLoading: authenticationLoading, + } = useAuthenticatedData(); const isMobileWidth = useIsMobileWidth(); useEffect(() => { @@ -425,7 +429,7 @@ export default function Chat() {
}> .catch((err) => console.warn(err)); export function useAuthenticatedData() { - const { data, error } = useSWR("/api/v1/user", fetcher, { + const { data, error, isLoading } = useSWR("/api/v1/user", fetcher, { revalidateOnFocus: false, }); - if (error || !data || data.detail === "Forbidden") return null; + if (data?.detail === "Forbidden") { + return { data: null, error: "Forbidden", isLoading: false }; + } - return data; + return { data, error, isLoading }; } export interface ModelOptions { diff --git a/src/interface/web/app/components/agentCard/agentCard.tsx b/src/interface/web/app/components/agentCard/agentCard.tsx index 08a12658..f90be51f 100644 --- a/src/interface/web/app/components/agentCard/agentCard.tsx +++ b/src/interface/web/app/components/agentCard/agentCard.tsx @@ -326,7 +326,6 @@ export function AgentCard(props: AgentCardProps) { {showLoginPrompt && ( @@ -430,7 +429,7 @@ export function AgentCard(props: AgentCardProps) { {props.editCard ? ( @@ -536,6 +535,8 @@ export function AgentModificationForm(props: AgentModificationFormProps) { const basicFields = [ { name: "name", label: "Name" }, { name: "persona", label: "Personality" }, + { name: "color", label: "Color" }, + { name: "icon", label: "Icon" }, ]; const toolsFields = [ @@ -546,17 +547,15 @@ export function AgentModificationForm(props: AgentModificationFormProps) { const knowledgeBaseFields = [{ name: "files", label: "Knowledge Base" }]; const customizationFields = [ - { name: "color", label: "Color" }, - { name: "icon", label: "Icon" }, { name: "chat_model", label: "Chat Model" }, { name: "privacy_level", label: "Privacy Level" }, ]; const formGroups = [ - { fields: basicFields, label: "Basic Settings", tabName: "basic" }, - { fields: customizationFields, label: "Customization & Access", tabName: "customize" }, - { fields: knowledgeBaseFields, label: "Knowledge Base", tabName: "knowledge" }, - { fields: toolsFields, label: "Tools Settings", tabName: "tools" }, + { fields: basicFields, label: "1. Basic Settings", tabName: "basic" }, + { fields: customizationFields, label: "2. Model & Privacy", tabName: "customize" }, + { fields: knowledgeBaseFields, label: "3. Knowledge Base", tabName: "knowledge" }, + { fields: toolsFields, label: "4. Tools", tabName: "tools" }, ]; const fileInputRef = useRef(null); @@ -755,7 +754,7 @@ export function AgentModificationForm(props: AgentModificationFormProps) { control={props.form.control} name="chat_model" render={({ field }) => ( - + Chat Model {!props.isSubscribed ? ( @@ -802,7 +801,7 @@ export function AgentModificationForm(props: AgentModificationFormProps) { control={props.form.control} name="privacy_level" render={({ field }) => ( - +
Privacy Level
@@ -859,7 +858,7 @@ export function AgentModificationForm(props: AgentModificationFormProps) { control={props.form.control} name="color" render={({ field }) => ( - + Color @@ -929,12 +928,12 @@ export function AgentModificationForm(props: AgentModificationFormProps) { control={props.form.control} name="persona" render={({ field }) => ( - + Personality What is the personality, thought process, or tuning of this - agent? Get creative; this is how you can influence the agent - constitution. + agent? This is where you can provide any instructions to the + agent.