39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
import { useCopilotKit } from "../providers/CopilotKitProvider.mjs";
|
|
import { useEffect } from "react";
|
|
|
|
//#region src/hooks/use-frontend-tool.tsx
|
|
const EMPTY_DEPS = [];
|
|
function useFrontendTool(tool, deps) {
|
|
const { copilotkit } = useCopilotKit();
|
|
const extraDeps = deps ?? EMPTY_DEPS;
|
|
useEffect(() => {
|
|
const name = tool.name;
|
|
if (copilotkit.getTool({
|
|
toolName: name,
|
|
agentId: tool.agentId
|
|
})) {
|
|
console.warn(`Tool '${name}' already exists for agent '${tool.agentId || "global"}'. Overriding with latest registration.`);
|
|
copilotkit.removeTool(name, tool.agentId);
|
|
}
|
|
copilotkit.addTool(tool);
|
|
if (tool.render && tool.parameters) copilotkit.addHookRenderToolCall({
|
|
name,
|
|
args: tool.parameters,
|
|
agentId: tool.agentId,
|
|
render: tool.render
|
|
});
|
|
return () => {
|
|
copilotkit.removeTool(name, tool.agentId);
|
|
};
|
|
}, [
|
|
tool.name,
|
|
tool.available,
|
|
copilotkit,
|
|
extraDeps.length,
|
|
...extraDeps
|
|
]);
|
|
}
|
|
|
|
//#endregion
|
|
export { useFrontendTool };
|
|
//# sourceMappingURL=use-frontend-tool.mjs.map
|