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;" />

54 lines (52 loc) 1.83 kB
import { __spreadProps, __spreadValues } from "./chunk-SKC7AJIV.mjs"; // src/hooks/use-render-tool-call.ts import { getZodParameters } from "@copilotkit/shared"; import { useEffect, useRef } from "react"; import { defineToolCallRenderer, useCopilotKit } from "@copilotkitnext/react"; import { parseJson } from "@copilotkit/shared"; function useRenderToolCall(tool, dependencies) { const { copilotkit } = useCopilotKit(); const hasAddedRef = useRef(false); useEffect(() => { const { name, parameters, render } = tool; const zodParameters = getZodParameters(parameters); const renderToolCall = name === "*" ? defineToolCallRenderer({ name: "*", render: (args) => { return render(__spreadProps(__spreadValues({}, args), { result: args.result ? parseJson(args.result, args.result) : args.result })); } }) : defineToolCallRenderer({ name, args: zodParameters, render: (args) => { return render(__spreadProps(__spreadValues({}, args), { result: args.result ? parseJson(args.result, args.result) : args.result })); } }); const existingIndex = copilotkit.renderToolCalls.findIndex((r) => r.name === name); if (existingIndex !== -1) { copilotkit.renderToolCalls.splice(existingIndex, 1); } copilotkit.renderToolCalls.push(renderToolCall); hasAddedRef.current = true; return () => { if (hasAddedRef.current) { const index = copilotkit.renderToolCalls.findIndex((r) => r.name === name); if (index !== -1) { copilotkit.renderToolCalls.splice(index, 1); } hasAddedRef.current = false; } }; }, [tool, ...dependencies != null ? dependencies : []]); } export { useRenderToolCall }; //# sourceMappingURL=chunk-NBK4KBLX.mjs.map