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