Spaces:
Build error
Build error
| import React from "react"; | |
| import { useWsClient } from "#/context/ws-client-provider"; | |
| import { generateAgentStateChangeEvent } from "#/services/agent-state-service"; | |
| import { AgentState } from "#/types/agent-state"; | |
| import { displayErrorToast } from "#/utils/custom-toast-handlers"; | |
| interface ServerError { | |
| error: boolean | string; | |
| message: string; | |
| [key: string]: unknown; | |
| } | |
| const isServerError = (data: object): data is ServerError => "error" in data; | |
| export const useHandleWSEvents = () => { | |
| const { events, send } = useWsClient(); | |
| React.useEffect(() => { | |
| if (!events.length) { | |
| return; | |
| } | |
| const event = events[events.length - 1]; | |
| if (isServerError(event)) { | |
| if (event.error_code === 401) { | |
| displayErrorToast("Session expired."); | |
| return; | |
| } | |
| if (typeof event.error === "string") { | |
| displayErrorToast(event.error); | |
| } else { | |
| displayErrorToast(event.message); | |
| } | |
| return; | |
| } | |
| if (event.type === "error") { | |
| const message: string = `${event.message}`; | |
| if (message.startsWith("Agent reached maximum")) { | |
| // We set the agent state to paused here - if the user clicks resume, it auto updates the max iterations | |
| send(generateAgentStateChangeEvent(AgentState.PAUSED)); | |
| } | |
| } | |
| }, [events.length]); | |
| }; | |