@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
JavaScript
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