UNPKG

@copilotkit/react-core

Version:

<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />

66 lines (64 loc) 2.18 kB
import { useToast } from "./chunk-EFL5OBKN.mjs"; // src/components/CopilotListeners.tsx import { useCallback, useEffect, useRef } from "react"; import { useAgent, useCopilotChatConfiguration, useCopilotKit } from "@copilotkitnext/react"; import { parseJson } from "@copilotkit/shared"; import { CopilotKitLowLevelError } from "@copilotkit/shared"; var usePredictStateSubscription = (agent) => { const predictStateToolsRef = useRef([]); const getSubscriber = useCallback( (agent2) => ({ onCustomEvent: ({ event }) => { if (event.name === "PredictState") { predictStateToolsRef.current = event.value; } }, onToolCallArgsEvent: ({ partialToolCallArgs, toolCallName }) => { predictStateToolsRef.current.forEach((t) => { if ((t == null ? void 0 : t.tool) !== toolCallName) return; const emittedState = typeof partialToolCallArgs === "string" ? parseJson(partialToolCallArgs, partialToolCallArgs) : partialToolCallArgs; agent2.setState({ [t.state_key]: emittedState[t.state_key] }); }); } }), [] ); useEffect(() => { if (!agent) return; const subscriber = getSubscriber(agent); const { unsubscribe } = agent.subscribe(subscriber); return () => { unsubscribe(); }; }, [agent, getSubscriber]); }; function CopilotListeners() { const { copilotkit } = useCopilotKit(); const existingConfig = useCopilotChatConfiguration(); const resolvedAgentId = existingConfig == null ? void 0 : existingConfig.agentId; const { setBannerError } = useToast(); const { agent } = useAgent({ agentId: resolvedAgentId }); usePredictStateSubscription(agent); useEffect(() => { const subscriber = { onError: ({ error }) => { setBannerError(new CopilotKitLowLevelError({ error, message: error.message })); } }; const subscription = copilotkit.subscribe(subscriber); return () => { subscription.unsubscribe(); }; }, [copilotkit == null ? void 0 : copilotkit.subscribe]); return null; } export { CopilotListeners }; //# sourceMappingURL=chunk-WF65O6HX.mjs.map