@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;" />
60 lines (58 loc) • 1.8 kB
JavaScript
import {
__spreadProps,
__spreadValues
} from "./chunk-SKC7AJIV.mjs";
// src/hooks/use-frontend-tool.ts
import React, { useEffect, useRef } from "react";
import { getZodParameters } from "@copilotkit/shared";
import { parseJson } from "@copilotkit/shared";
import {
useFrontendTool as useFrontendToolVNext
} from "@copilotkitnext/react";
function useFrontendTool(tool, dependencies) {
const { name, description, parameters, render, followUp } = tool;
const zodParameters = getZodParameters(parameters);
const normalizedRender = (() => {
if (typeof render === "undefined") {
return void 0;
}
if (typeof render === "string") {
const staticRender = render;
return () => React.createElement(
React.Fragment,
null,
staticRender
);
}
return (args) => {
const renderArgs = __spreadProps(__spreadValues({}, args), {
result: typeof args.result === "string" ? parseJson(args.result, args.result) : args.result
});
const rendered = render(renderArgs);
if (typeof rendered === "string") {
return React.createElement(React.Fragment, null, rendered);
}
return rendered != null ? rendered : null;
};
})();
const handlerRef = useRef(tool.handler);
useEffect(() => {
handlerRef.current = tool.handler;
}, [tool.handler, ...dependencies != null ? dependencies : []]);
const normalizedHandler = tool.handler ? (args) => {
var _a;
return (_a = handlerRef.current) == null ? void 0 : _a.call(handlerRef, args);
} : void 0;
useFrontendToolVNext({
name,
description,
parameters: zodParameters,
handler: normalizedHandler,
followUp,
render: normalizedRender
});
}
export {
useFrontendTool
};
//# sourceMappingURL=chunk-CDUIA2WM.mjs.map