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