import { useCopilotKit } from "../providers/CopilotKitProvider.mjs"; import { useFrontendTool } from "./use-frontend-tool.mjs"; import React, { useCallback, useEffect, useRef } from "react"; //#region src/hooks/use-human-in-the-loop.tsx function useHumanInTheLoop(tool, deps) { const { copilotkit } = useCopilotKit(); const resolvePromiseRef = useRef(null); const respond = useCallback(async (result) => { if (resolvePromiseRef.current) { resolvePromiseRef.current(result); resolvePromiseRef.current = null; } }, []); const handler = useCallback(async () => { return new Promise((resolve) => { resolvePromiseRef.current = resolve; }); }, []); const RenderComponent = useCallback((props) => { const ToolComponent = tool.render; if (props.status === "inProgress") { const enhancedProps = { ...props, name: tool.name, description: tool.description || "", respond: void 0 }; return React.createElement(ToolComponent, enhancedProps); } else if (props.status === "executing") { const enhancedProps = { ...props, name: tool.name, description: tool.description || "", respond }; return React.createElement(ToolComponent, enhancedProps); } else if (props.status === "complete") { const enhancedProps = { ...props, name: tool.name, description: tool.description || "", respond: void 0 }; return React.createElement(ToolComponent, enhancedProps); } return React.createElement(ToolComponent, props); }, [ tool.render, tool.name, tool.description, respond ]); useFrontendTool({ ...tool, handler, render: RenderComponent }, deps); useEffect(() => { return () => { copilotkit.removeHookRenderToolCall(tool.name, tool.agentId); }; }, [ copilotkit, tool.name, tool.agentId ]); } //#endregion export { useHumanInTheLoop }; //# sourceMappingURL=use-human-in-the-loop.mjs.map