@copilotkitnext/react 0.0.22-alpha.1 → 0.0.22-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-32YJ5VJ4.mjs +157 -0
- package/dist/chunk-32YJ5VJ4.mjs.map +1 -0
- package/dist/chunk-36HFWACS.mjs +1 -0
- package/dist/chunk-36HFWACS.mjs.map +1 -0
- package/dist/chunk-3TA5QBSZ.mjs +122 -0
- package/dist/chunk-3TA5QBSZ.mjs.map +1 -0
- package/dist/chunk-46BZRXWT.mjs +16 -0
- package/dist/chunk-46BZRXWT.mjs.map +1 -0
- package/dist/chunk-4UDBR75C.mjs +106 -0
- package/dist/chunk-4UDBR75C.mjs.map +1 -0
- package/dist/chunk-4XJK5IVQ.mjs +83 -0
- package/dist/chunk-4XJK5IVQ.mjs.map +1 -0
- package/dist/chunk-5AAT4Z3C.mjs +107 -0
- package/dist/chunk-5AAT4Z3C.mjs.map +1 -0
- package/dist/chunk-5JNWVLQI.mjs +72 -0
- package/dist/chunk-5JNWVLQI.mjs.map +1 -0
- package/dist/chunk-5SC3CO5Q.mjs +69 -0
- package/dist/chunk-5SC3CO5Q.mjs.map +1 -0
- package/dist/chunk-6VUKDHOD.mjs +1 -0
- package/dist/chunk-6VUKDHOD.mjs.map +1 -0
- package/dist/chunk-AEFM73CL.mjs +32 -0
- package/dist/chunk-AEFM73CL.mjs.map +1 -0
- package/dist/chunk-AI3Z3CHN.mjs +97 -0
- package/dist/chunk-AI3Z3CHN.mjs.map +1 -0
- package/dist/chunk-AXFRCGH6.mjs +107 -0
- package/dist/chunk-AXFRCGH6.mjs.map +1 -0
- package/dist/chunk-BT6C5OPU.mjs +278 -0
- package/dist/chunk-BT6C5OPU.mjs.map +1 -0
- package/dist/chunk-CGLGXQAU.mjs +78 -0
- package/dist/chunk-CGLGXQAU.mjs.map +1 -0
- package/dist/chunk-CSHBUHRW.mjs +69 -0
- package/dist/chunk-CSHBUHRW.mjs.map +1 -0
- package/dist/chunk-CZ3GI3IF.mjs +283 -0
- package/dist/chunk-CZ3GI3IF.mjs.map +1 -0
- package/dist/chunk-DVUQO72Z.mjs +1 -0
- package/dist/chunk-DVUQO72Z.mjs.map +1 -0
- package/dist/chunk-E4HD4M7R.mjs +76 -0
- package/dist/chunk-E4HD4M7R.mjs.map +1 -0
- package/dist/chunk-E56GYBP3.mjs +101 -0
- package/dist/chunk-E56GYBP3.mjs.map +1 -0
- package/dist/chunk-EJ5ZEAAN.mjs +57 -0
- package/dist/chunk-EJ5ZEAAN.mjs.map +1 -0
- package/dist/chunk-ETWJDCGE.mjs +1 -0
- package/dist/chunk-ETWJDCGE.mjs.map +1 -0
- package/dist/chunk-F43IPGPA.mjs +311 -0
- package/dist/chunk-F43IPGPA.mjs.map +1 -0
- package/dist/chunk-FIBK3DYE.mjs +26 -0
- package/dist/chunk-FIBK3DYE.mjs.map +1 -0
- package/dist/chunk-FVURPXQK.mjs +45 -0
- package/dist/chunk-FVURPXQK.mjs.map +1 -0
- package/dist/chunk-FZR2XQKR.mjs +44 -0
- package/dist/chunk-FZR2XQKR.mjs.map +1 -0
- package/dist/chunk-IA4CLXDM.mjs +76 -0
- package/dist/chunk-IA4CLXDM.mjs.map +1 -0
- package/dist/chunk-IH5VFJ4L.mjs +60 -0
- package/dist/chunk-IH5VFJ4L.mjs.map +1 -0
- package/dist/chunk-IICUCI5S.mjs +43 -0
- package/dist/chunk-IICUCI5S.mjs.map +1 -0
- package/dist/chunk-JLVGSNAO.mjs +311 -0
- package/dist/chunk-JLVGSNAO.mjs.map +1 -0
- package/dist/chunk-JWOIINVV.mjs +237 -0
- package/dist/chunk-JWOIINVV.mjs.map +1 -0
- package/dist/chunk-KCVDFZJX.mjs +873 -0
- package/dist/chunk-KCVDFZJX.mjs.map +1 -0
- package/dist/chunk-KPRUSQ3K.mjs +1 -0
- package/dist/chunk-KPRUSQ3K.mjs.map +1 -0
- package/dist/chunk-MWC5OV7Z.mjs +1 -0
- package/dist/chunk-MWC5OV7Z.mjs.map +1 -0
- package/dist/chunk-N5EP5OD5.mjs +1 -0
- package/dist/chunk-N5EP5OD5.mjs.map +1 -0
- package/dist/chunk-NASFZS3N.mjs +43 -0
- package/dist/chunk-NASFZS3N.mjs.map +1 -0
- package/dist/chunk-NB2GZAKG.mjs +131 -0
- package/dist/chunk-NB2GZAKG.mjs.map +1 -0
- package/dist/chunk-NB4DFAZH.mjs +185 -0
- package/dist/chunk-NB4DFAZH.mjs.map +1 -0
- package/dist/chunk-NNAYEAP2.mjs +49 -0
- package/dist/chunk-NNAYEAP2.mjs.map +1 -0
- package/dist/chunk-NNPKBGD6.mjs +37 -0
- package/dist/chunk-NNPKBGD6.mjs.map +1 -0
- package/dist/chunk-OMPVTGXH.mjs +122 -0
- package/dist/chunk-OMPVTGXH.mjs.map +1 -0
- package/dist/chunk-QFBM3ZT2.mjs +45 -0
- package/dist/chunk-QFBM3ZT2.mjs.map +1 -0
- package/dist/chunk-QJ6DZ645.mjs +78 -0
- package/dist/chunk-QJ6DZ645.mjs.map +1 -0
- package/dist/chunk-R5OLAA3L.mjs +135 -0
- package/dist/chunk-R5OLAA3L.mjs.map +1 -0
- package/dist/chunk-RF2CGPHQ.mjs +215 -0
- package/dist/chunk-RF2CGPHQ.mjs.map +1 -0
- package/dist/chunk-RGD2L3Z4.mjs +96 -0
- package/dist/chunk-RGD2L3Z4.mjs.map +1 -0
- package/dist/chunk-RK5P2LG6.mjs +57 -0
- package/dist/chunk-RK5P2LG6.mjs.map +1 -0
- package/dist/chunk-RRXDJCXI.mjs +60 -0
- package/dist/chunk-RRXDJCXI.mjs.map +1 -0
- package/dist/chunk-SPDE34WC.mjs +283 -0
- package/dist/chunk-SPDE34WC.mjs.map +1 -0
- package/dist/chunk-TAUOEJH2.mjs +120 -0
- package/dist/chunk-TAUOEJH2.mjs.map +1 -0
- package/dist/chunk-TKFOXPXF.mjs +157 -0
- package/dist/chunk-TKFOXPXF.mjs.map +1 -0
- package/dist/chunk-UOX5D73C.mjs +22 -0
- package/dist/chunk-UOX5D73C.mjs.map +1 -0
- package/dist/chunk-US4KNAAV.mjs +1 -0
- package/dist/chunk-US4KNAAV.mjs.map +1 -0
- package/dist/chunk-UZB3CTOY.mjs +873 -0
- package/dist/chunk-UZB3CTOY.mjs.map +1 -0
- package/dist/chunk-VBI6JXPC.mjs +1 -0
- package/dist/chunk-VBI6JXPC.mjs.map +1 -0
- package/dist/chunk-VE3SBLU7.mjs +215 -0
- package/dist/chunk-VE3SBLU7.mjs.map +1 -0
- package/dist/chunk-VUHFLJWI.mjs +185 -0
- package/dist/chunk-VUHFLJWI.mjs.map +1 -0
- package/dist/chunk-VVAXSF3M.mjs +61 -0
- package/dist/chunk-VVAXSF3M.mjs.map +1 -0
- package/dist/chunk-W5DUKRCI.mjs +97 -0
- package/dist/chunk-W5DUKRCI.mjs.map +1 -0
- package/dist/chunk-WNRDFAZ5.mjs +22 -0
- package/dist/chunk-WNRDFAZ5.mjs.map +1 -0
- package/dist/chunk-XO4IRKSC.mjs +11 -0
- package/dist/chunk-XO4IRKSC.mjs.map +1 -0
- package/dist/chunk-XU5CEPYQ.mjs +75 -0
- package/dist/chunk-XU5CEPYQ.mjs.map +1 -0
- package/dist/chunk-YPH4BHOY.mjs +39 -0
- package/dist/chunk-YPH4BHOY.mjs.map +1 -0
- package/dist/chunk-YVPPF62K.mjs +32 -0
- package/dist/chunk-YVPPF62K.mjs.map +1 -0
- package/dist/chunk-YZUPVMHC.mjs +1 -0
- package/dist/chunk-YZUPVMHC.mjs.map +1 -0
- package/dist/chunk-Z3OIGQCZ.mjs +75 -0
- package/dist/chunk-Z3OIGQCZ.mjs.map +1 -0
- package/dist/chunk-ZIDT52TM.mjs +131 -0
- package/dist/chunk-ZIDT52TM.mjs.map +1 -0
- package/dist/components/CopilotKitInspector.d.mts +13 -0
- package/dist/components/CopilotKitInspector.d.ts +13 -0
- package/dist/components/CopilotKitInspector.js +69 -0
- package/dist/components/CopilotKitInspector.js.map +1 -0
- package/dist/components/CopilotKitInspector.mjs +7 -0
- package/dist/components/CopilotKitInspector.mjs.map +1 -0
- package/dist/components/WildcardToolCallRender.d.mts +7 -0
- package/dist/components/WildcardToolCallRender.d.ts +7 -0
- package/dist/components/WildcardToolCallRender.js +106 -0
- package/dist/components/WildcardToolCallRender.js.map +1 -0
- package/dist/components/WildcardToolCallRender.mjs +8 -0
- package/dist/components/WildcardToolCallRender.mjs.map +1 -0
- package/dist/components/chat/CopilotChat.d.mts +30 -0
- package/dist/components/chat/CopilotChat.d.ts +30 -0
- package/dist/components/chat/CopilotChat.js +2934 -0
- package/dist/components/chat/CopilotChat.js.map +1 -0
- package/dist/components/chat/CopilotChat.mjs +37 -0
- package/dist/components/chat/CopilotChat.mjs.map +1 -0
- package/dist/components/chat/CopilotChatAssistantMessage.d.mts +45 -0
- package/dist/components/chat/CopilotChatAssistantMessage.d.ts +45 -0
- package/dist/components/chat/CopilotChatAssistantMessage.js +735 -0
- package/dist/components/chat/CopilotChatAssistantMessage.js.map +1 -0
- package/dist/components/chat/CopilotChatAssistantMessage.mjs +29 -0
- package/dist/components/chat/CopilotChatAssistantMessage.mjs.map +1 -0
- package/dist/components/chat/CopilotChatAudioRecorder.d.mts +11 -0
- package/dist/components/chat/CopilotChatAudioRecorder.d.ts +11 -0
- package/dist/components/chat/CopilotChatAudioRecorder.js +131 -0
- package/dist/components/chat/CopilotChatAudioRecorder.js.map +1 -0
- package/dist/components/chat/CopilotChatAudioRecorder.mjs +9 -0
- package/dist/components/chat/CopilotChatAudioRecorder.mjs.map +1 -0
- package/dist/components/chat/CopilotChatInput.d.mts +67 -0
- package/dist/components/chat/CopilotChatInput.d.ts +67 -0
- package/dist/components/chat/CopilotChatInput.js +1305 -0
- package/dist/components/chat/CopilotChatInput.js.map +1 -0
- package/dist/components/chat/CopilotChatInput.mjs +16 -0
- package/dist/components/chat/CopilotChatInput.mjs.map +1 -0
- package/dist/components/chat/CopilotChatMessageView.d.mts +29 -0
- package/dist/components/chat/CopilotChatMessageView.d.ts +29 -0
- package/dist/components/chat/CopilotChatMessageView.js +1164 -0
- package/dist/components/chat/CopilotChatMessageView.js.map +1 -0
- package/dist/components/chat/CopilotChatMessageView.mjs +31 -0
- package/dist/components/chat/CopilotChatMessageView.mjs.map +1 -0
- package/dist/components/chat/CopilotChatSuggestionPill.d.mts +11 -0
- package/dist/components/chat/CopilotChatSuggestionPill.d.ts +11 -0
- package/dist/components/chat/CopilotChatSuggestionPill.js +76 -0
- package/dist/components/chat/CopilotChatSuggestionPill.js.map +1 -0
- package/dist/components/chat/CopilotChatSuggestionPill.mjs +10 -0
- package/dist/components/chat/CopilotChatSuggestionPill.mjs.map +1 -0
- package/dist/components/chat/CopilotChatSuggestionView.d.mts +33 -0
- package/dist/components/chat/CopilotChatSuggestionView.d.ts +33 -0
- package/dist/components/chat/CopilotChatSuggestionView.js +179 -0
- package/dist/components/chat/CopilotChatSuggestionView.js.map +1 -0
- package/dist/components/chat/CopilotChatSuggestionView.mjs +12 -0
- package/dist/components/chat/CopilotChatSuggestionView.mjs.map +1 -0
- package/dist/components/chat/CopilotChatToggleButton.d.mts +14 -0
- package/dist/components/chat/CopilotChatToggleButton.d.ts +14 -0
- package/dist/components/chat/CopilotChatToggleButton.js +222 -0
- package/dist/components/chat/CopilotChatToggleButton.js.map +1 -0
- package/dist/components/chat/CopilotChatToggleButton.mjs +16 -0
- package/dist/components/chat/CopilotChatToggleButton.mjs.map +1 -0
- package/dist/components/chat/CopilotChatToolCallsView.d.mts +10 -0
- package/dist/components/chat/CopilotChatToolCallsView.d.ts +10 -0
- package/dist/components/chat/CopilotChatToolCallsView.js +264 -0
- package/dist/components/chat/CopilotChatToolCallsView.js.map +1 -0
- package/dist/components/chat/CopilotChatToolCallsView.mjs +24 -0
- package/dist/components/chat/CopilotChatToolCallsView.mjs.map +1 -0
- package/dist/components/chat/CopilotChatUserMessage.d.mts +52 -0
- package/dist/components/chat/CopilotChatUserMessage.d.ts +52 -0
- package/dist/components/chat/CopilotChatUserMessage.js +523 -0
- package/dist/components/chat/CopilotChatUserMessage.js.map +1 -0
- package/dist/components/chat/CopilotChatUserMessage.mjs +14 -0
- package/dist/components/chat/CopilotChatUserMessage.mjs.map +1 -0
- package/dist/components/chat/CopilotChatView.d.mts +54 -0
- package/dist/components/chat/CopilotChatView.d.ts +54 -0
- package/dist/components/chat/CopilotChatView.js +2640 -0
- package/dist/components/chat/CopilotChatView.js.map +1 -0
- package/dist/components/chat/CopilotChatView.mjs +38 -0
- package/dist/components/chat/CopilotChatView.mjs.map +1 -0
- package/dist/components/chat/CopilotModalHeader.d.mts +22 -0
- package/dist/components/chat/CopilotModalHeader.d.ts +22 -0
- package/dist/components/chat/CopilotModalHeader.js +186 -0
- package/dist/components/chat/CopilotModalHeader.js.map +1 -0
- package/dist/components/chat/CopilotModalHeader.mjs +12 -0
- package/dist/components/chat/CopilotModalHeader.mjs.map +1 -0
- package/dist/components/chat/CopilotPopup.d.mts +33 -0
- package/dist/components/chat/CopilotPopup.d.ts +33 -0
- package/dist/components/chat/CopilotPopup.js +3343 -0
- package/dist/components/chat/CopilotPopup.js.map +1 -0
- package/dist/components/chat/CopilotPopup.mjs +43 -0
- package/dist/components/chat/CopilotPopup.mjs.map +1 -0
- package/dist/components/chat/CopilotPopupView.d.mts +30 -0
- package/dist/components/chat/CopilotPopupView.d.ts +30 -0
- package/dist/components/chat/CopilotPopupView.js +3003 -0
- package/dist/components/chat/CopilotPopupView.js.map +1 -0
- package/dist/components/chat/CopilotPopupView.mjs +41 -0
- package/dist/components/chat/CopilotPopupView.mjs.map +1 -0
- package/dist/components/chat/CopilotSidebar.d.mts +31 -0
- package/dist/components/chat/CopilotSidebar.d.ts +31 -0
- package/dist/components/chat/CopilotSidebar.js +3266 -0
- package/dist/components/chat/CopilotSidebar.js.map +1 -0
- package/dist/components/chat/CopilotSidebar.mjs +43 -0
- package/dist/components/chat/CopilotSidebar.mjs.map +1 -0
- package/dist/components/chat/CopilotSidebarView.d.mts +28 -0
- package/dist/components/chat/CopilotSidebarView.d.ts +28 -0
- package/dist/components/chat/CopilotSidebarView.js +2941 -0
- package/dist/components/chat/CopilotSidebarView.js.map +1 -0
- package/dist/components/chat/CopilotSidebarView.mjs +41 -0
- package/dist/components/chat/CopilotSidebarView.mjs.map +1 -0
- package/dist/components/chat/index.d.mts +23 -0
- package/dist/components/chat/index.d.ts +23 -0
- package/dist/components/chat/index.js +3503 -0
- package/dist/components/chat/index.js.map +1 -0
- package/dist/components/chat/index.mjs +95 -0
- package/dist/components/chat/index.mjs.map +1 -0
- package/dist/components/index.d.mts +29 -0
- package/dist/components/index.d.ts +29 -0
- package/dist/components/index.js +3583 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/index.mjs +104 -0
- package/dist/components/index.mjs.map +1 -0
- package/dist/components/ui/button.d.mts +14 -0
- package/dist/components/ui/button.d.ts +14 -0
- package/dist/components/ui/button.js +150 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/button.mjs +10 -0
- package/dist/components/ui/button.mjs.map +1 -0
- package/dist/components/ui/dropdown-menu.d.mts +28 -0
- package/dist/components/ui/dropdown-menu.d.ts +28 -0
- package/dist/components/ui/dropdown-menu.js +291 -0
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/dropdown-menu.mjs +37 -0
- package/dist/components/ui/dropdown-menu.mjs.map +1 -0
- package/dist/components/ui/tooltip.d.mts +10 -0
- package/dist/components/ui/tooltip.d.ts +10 -0
- package/dist/components/ui/tooltip.js +103 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/components/ui/tooltip.mjs +14 -0
- package/dist/components/ui/tooltip.mjs.map +1 -0
- package/dist/hooks/index.d.mts +19 -0
- package/dist/hooks/index.d.ts +19 -0
- package/dist/hooks/index.js +691 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/index.mjs +45 -0
- package/dist/hooks/index.mjs.map +1 -0
- package/dist/hooks/use-agent-context.d.mts +5 -0
- package/dist/hooks/use-agent-context.d.ts +5 -0
- package/dist/hooks/use-agent-context.js +116 -0
- package/dist/hooks/use-agent-context.js.map +1 -0
- package/dist/hooks/use-agent-context.mjs +10 -0
- package/dist/hooks/use-agent-context.mjs.map +1 -0
- package/dist/hooks/use-agent.d.mts +16 -0
- package/dist/hooks/use-agent.d.ts +16 -0
- package/dist/hooks/use-agent.js +171 -0
- package/dist/hooks/use-agent.js.map +1 -0
- package/dist/hooks/use-agent.mjs +12 -0
- package/dist/hooks/use-agent.mjs.map +1 -0
- package/dist/hooks/use-configure-suggestions.d.mts +13 -0
- package/dist/hooks/use-configure-suggestions.d.ts +13 -0
- package/dist/hooks/use-configure-suggestions.js +232 -0
- package/dist/hooks/use-configure-suggestions.js.map +1 -0
- package/dist/hooks/use-configure-suggestions.mjs +11 -0
- package/dist/hooks/use-configure-suggestions.mjs.map +1 -0
- package/dist/hooks/use-frontend-tool.d.mts +8 -0
- package/dist/hooks/use-frontend-tool.d.ts +8 -0
- package/dist/hooks/use-frontend-tool.js +137 -0
- package/dist/hooks/use-frontend-tool.js.map +1 -0
- package/dist/hooks/use-frontend-tool.mjs +10 -0
- package/dist/hooks/use-frontend-tool.mjs.map +1 -0
- package/dist/hooks/use-human-in-the-loop.d.mts +7 -0
- package/dist/hooks/use-human-in-the-loop.d.ts +7 -0
- package/dist/hooks/use-human-in-the-loop.js +206 -0
- package/dist/hooks/use-human-in-the-loop.js.map +1 -0
- package/dist/hooks/use-human-in-the-loop.mjs +11 -0
- package/dist/hooks/use-human-in-the-loop.mjs.map +1 -0
- package/dist/hooks/use-keyboard-height.d.mts +15 -0
- package/dist/hooks/use-keyboard-height.d.ts +15 -0
- package/dist/hooks/use-keyboard-height.js +68 -0
- package/dist/hooks/use-keyboard-height.js.map +1 -0
- package/dist/hooks/use-keyboard-height.mjs +7 -0
- package/dist/hooks/use-keyboard-height.mjs.map +1 -0
- package/dist/hooks/use-render-activity-message.d.mts +5 -0
- package/dist/hooks/use-render-activity-message.d.ts +5 -0
- package/dist/hooks/use-render-activity-message.js +158 -0
- package/dist/hooks/use-render-activity-message.js.map +1 -0
- package/dist/hooks/use-render-activity-message.mjs +12 -0
- package/dist/hooks/use-render-activity-message.mjs.map +1 -0
- package/dist/hooks/use-render-custom-messages.d.mts +11 -0
- package/dist/hooks/use-render-custom-messages.d.ts +11 -0
- package/dist/hooks/use-render-custom-messages.js +170 -0
- package/dist/hooks/use-render-custom-messages.js.map +1 -0
- package/dist/hooks/use-render-custom-messages.mjs +12 -0
- package/dist/hooks/use-render-custom-messages.mjs.map +1 -0
- package/dist/hooks/use-render-tool-call.d.mts +16 -0
- package/dist/hooks/use-render-tool-call.d.ts +16 -0
- package/dist/hooks/use-render-tool-call.js +208 -0
- package/dist/hooks/use-render-tool-call.js.map +1 -0
- package/dist/hooks/use-render-tool-call.mjs +11 -0
- package/dist/hooks/use-render-tool-call.mjs.map +1 -0
- package/dist/hooks/use-suggestions.d.mts +14 -0
- package/dist/hooks/use-suggestions.d.ts +14 -0
- package/dist/hooks/use-suggestions.js +176 -0
- package/dist/hooks/use-suggestions.js.map +1 -0
- package/dist/hooks/use-suggestions.mjs +11 -0
- package/dist/hooks/use-suggestions.mjs.map +1 -0
- package/dist/index.d.mts +46 -635
- package/dist/index.d.ts +46 -635
- package/dist/index.mjs +110 -3960
- package/dist/index.mjs.map +1 -1
- package/dist/lib/react-core.d.mts +33 -0
- package/dist/lib/react-core.d.ts +33 -0
- package/dist/lib/react-core.js +73 -0
- package/dist/lib/react-core.js.map +1 -0
- package/dist/lib/react-core.mjs +7 -0
- package/dist/lib/react-core.mjs.map +1 -0
- package/dist/lib/slots.d.mts +16 -0
- package/dist/lib/slots.d.ts +16 -0
- package/dist/lib/slots.js +60 -0
- package/dist/lib/slots.js.map +1 -0
- package/dist/lib/slots.mjs +7 -0
- package/dist/lib/slots.mjs.map +1 -0
- package/dist/lib/utils.d.mts +5 -0
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.js +35 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/utils.mjs +7 -0
- package/dist/lib/utils.mjs.map +1 -0
- package/dist/providers/CopilotChatConfigurationProvider.d.mts +43 -0
- package/dist/providers/CopilotChatConfigurationProvider.d.ts +43 -0
- package/dist/providers/CopilotChatConfigurationProvider.js +109 -0
- package/dist/providers/CopilotChatConfigurationProvider.js.map +1 -0
- package/dist/providers/CopilotChatConfigurationProvider.mjs +11 -0
- package/dist/providers/CopilotChatConfigurationProvider.mjs.map +1 -0
- package/dist/providers/CopilotKitProvider.d.mts +33 -0
- package/dist/providers/CopilotKitProvider.d.ts +33 -0
- package/dist/providers/CopilotKitProvider.js +314 -0
- package/dist/providers/CopilotKitProvider.js.map +1 -0
- package/dist/providers/CopilotKitProvider.mjs +12 -0
- package/dist/providers/CopilotKitProvider.mjs.map +1 -0
- package/dist/providers/index.d.mts +13 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.js +396 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/index.mjs +18 -0
- package/dist/providers/index.mjs.map +1 -0
- package/dist/types/defineToolCallRenderer.d.mts +41 -0
- package/dist/types/defineToolCallRenderer.d.ts +41 -0
- package/dist/types/defineToolCallRenderer.js +40 -0
- package/dist/types/defineToolCallRenderer.js.map +1 -0
- package/dist/types/defineToolCallRenderer.mjs +7 -0
- package/dist/types/defineToolCallRenderer.mjs.map +1 -0
- package/dist/types/frontend-tool.d.mts +9 -0
- package/dist/types/frontend-tool.d.ts +9 -0
- package/dist/types/frontend-tool.js +19 -0
- package/dist/types/frontend-tool.js.map +1 -0
- package/dist/types/frontend-tool.mjs +2 -0
- package/dist/types/frontend-tool.mjs.map +1 -0
- package/dist/types/human-in-the-loop.d.mts +29 -0
- package/dist/types/human-in-the-loop.d.ts +29 -0
- package/dist/types/human-in-the-loop.js +19 -0
- package/dist/types/human-in-the-loop.js.map +1 -0
- package/dist/types/human-in-the-loop.mjs +2 -0
- package/dist/types/human-in-the-loop.mjs.map +1 -0
- package/dist/types/index.d.mts +11 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.js +42 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +13 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/types/react-activity-message-renderer.d.mts +29 -0
- package/dist/types/react-activity-message-renderer.d.ts +29 -0
- package/dist/types/react-activity-message-renderer.js +19 -0
- package/dist/types/react-activity-message-renderer.js.map +1 -0
- package/dist/types/react-activity-message-renderer.mjs +2 -0
- package/dist/types/react-activity-message-renderer.mjs.map +1 -0
- package/dist/types/react-custom-message-renderer.d.mts +18 -0
- package/dist/types/react-custom-message-renderer.d.ts +18 -0
- package/dist/types/react-custom-message-renderer.js +19 -0
- package/dist/types/react-custom-message-renderer.js.map +1 -0
- package/dist/types/react-custom-message-renderer.mjs +2 -0
- package/dist/types/react-custom-message-renderer.mjs.map +1 -0
- package/dist/types/react-tool-call-renderer.d.mts +30 -0
- package/dist/types/react-tool-call-renderer.d.ts +30 -0
- package/dist/types/react-tool-call-renderer.js +19 -0
- package/dist/types/react-tool-call-renderer.js.map +1 -0
- package/dist/types/react-tool-call-renderer.mjs +2 -0
- package/dist/types/react-tool-call-renderer.mjs.map +1 -0
- package/package.json +8 -7
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/hooks/use-human-in-the-loop.tsx
|
|
31
|
+
var use_human_in_the_loop_exports = {};
|
|
32
|
+
__export(use_human_in_the_loop_exports, {
|
|
33
|
+
useHumanInTheLoop: () => useHumanInTheLoop
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(use_human_in_the_loop_exports);
|
|
36
|
+
|
|
37
|
+
// src/hooks/use-frontend-tool.tsx
|
|
38
|
+
var import_react3 = require("react");
|
|
39
|
+
|
|
40
|
+
// src/providers/CopilotKitProvider.tsx
|
|
41
|
+
var import_react2 = require("react");
|
|
42
|
+
var import_zod = require("zod");
|
|
43
|
+
|
|
44
|
+
// src/lib/react-core.ts
|
|
45
|
+
var import_core = require("@copilotkitnext/core");
|
|
46
|
+
|
|
47
|
+
// src/components/CopilotKitInspector.tsx
|
|
48
|
+
var React = __toESM(require("react"));
|
|
49
|
+
var import_react = require("@lit-labs/react");
|
|
50
|
+
var import_web_inspector = require("@copilotkitnext/web-inspector");
|
|
51
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
52
|
+
(0, import_web_inspector.defineWebInspector)();
|
|
53
|
+
var CopilotKitInspectorBase = (0, import_react.createComponent)({
|
|
54
|
+
tagName: import_web_inspector.WEB_INSPECTOR_TAG,
|
|
55
|
+
elementClass: import_web_inspector.WebInspectorElement,
|
|
56
|
+
react: React
|
|
57
|
+
});
|
|
58
|
+
var CopilotKitInspector = React.forwardRef(
|
|
59
|
+
({ core, ...rest }, ref) => {
|
|
60
|
+
const innerRef = React.useRef(null);
|
|
61
|
+
React.useImperativeHandle(ref, () => innerRef.current, []);
|
|
62
|
+
React.useEffect(() => {
|
|
63
|
+
if (innerRef.current) {
|
|
64
|
+
innerRef.current.core = core ?? null;
|
|
65
|
+
}
|
|
66
|
+
}, [core]);
|
|
67
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
68
|
+
CopilotKitInspectorBase,
|
|
69
|
+
{
|
|
70
|
+
...rest,
|
|
71
|
+
ref: innerRef
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
CopilotKitInspector.displayName = "CopilotKitInspector";
|
|
77
|
+
|
|
78
|
+
// src/providers/CopilotKitProvider.tsx
|
|
79
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
80
|
+
var CopilotKitContext = (0, import_react2.createContext)({
|
|
81
|
+
copilotkit: null
|
|
82
|
+
});
|
|
83
|
+
var useCopilotKit = () => {
|
|
84
|
+
const context = (0, import_react2.useContext)(CopilotKitContext);
|
|
85
|
+
const [, forceUpdate] = (0, import_react2.useReducer)((x) => x + 1, 0);
|
|
86
|
+
if (!context) {
|
|
87
|
+
throw new Error("useCopilotKit must be used within CopilotKitProvider");
|
|
88
|
+
}
|
|
89
|
+
(0, import_react2.useEffect)(() => {
|
|
90
|
+
const unsubscribe = context.copilotkit.subscribe({
|
|
91
|
+
onRuntimeConnectionStatusChanged: () => {
|
|
92
|
+
forceUpdate();
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
return () => {
|
|
96
|
+
unsubscribe();
|
|
97
|
+
};
|
|
98
|
+
}, []);
|
|
99
|
+
return context;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// src/hooks/use-frontend-tool.tsx
|
|
103
|
+
function useFrontendTool(tool) {
|
|
104
|
+
const { copilotkit } = useCopilotKit();
|
|
105
|
+
(0, import_react3.useEffect)(() => {
|
|
106
|
+
const name = tool.name;
|
|
107
|
+
if (copilotkit.getTool({ toolName: name, agentId: tool.agentId })) {
|
|
108
|
+
console.warn(
|
|
109
|
+
`Tool '${name}' already exists for agent '${tool.agentId || "global"}'. Overriding with latest registration.`
|
|
110
|
+
);
|
|
111
|
+
copilotkit.removeTool(name, tool.agentId);
|
|
112
|
+
}
|
|
113
|
+
copilotkit.addTool(tool);
|
|
114
|
+
if (tool.render) {
|
|
115
|
+
const keyOf = (rc) => `${rc.agentId ?? ""}:${rc.name}`;
|
|
116
|
+
const currentRenderToolCalls = copilotkit.renderToolCalls;
|
|
117
|
+
const mergedMap = /* @__PURE__ */ new Map();
|
|
118
|
+
for (const rc of currentRenderToolCalls) {
|
|
119
|
+
mergedMap.set(keyOf(rc), rc);
|
|
120
|
+
}
|
|
121
|
+
const newEntry = {
|
|
122
|
+
name,
|
|
123
|
+
args: tool.parameters,
|
|
124
|
+
agentId: tool.agentId,
|
|
125
|
+
render: tool.render
|
|
126
|
+
};
|
|
127
|
+
mergedMap.set(keyOf(newEntry), newEntry);
|
|
128
|
+
copilotkit.setRenderToolCalls(Array.from(mergedMap.values()));
|
|
129
|
+
}
|
|
130
|
+
return () => {
|
|
131
|
+
copilotkit.removeTool(name, tool.agentId);
|
|
132
|
+
};
|
|
133
|
+
}, [tool.name, copilotkit]);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// src/hooks/use-human-in-the-loop.tsx
|
|
137
|
+
var import_react4 = require("react");
|
|
138
|
+
var import_react5 = __toESM(require("react"));
|
|
139
|
+
function useHumanInTheLoop(tool) {
|
|
140
|
+
const { copilotkit } = useCopilotKit();
|
|
141
|
+
const resolvePromiseRef = (0, import_react4.useRef)(null);
|
|
142
|
+
const respond = (0, import_react4.useCallback)(async (result) => {
|
|
143
|
+
if (resolvePromiseRef.current) {
|
|
144
|
+
resolvePromiseRef.current(result);
|
|
145
|
+
resolvePromiseRef.current = null;
|
|
146
|
+
}
|
|
147
|
+
}, []);
|
|
148
|
+
const handler = (0, import_react4.useCallback)(async () => {
|
|
149
|
+
return new Promise((resolve) => {
|
|
150
|
+
resolvePromiseRef.current = resolve;
|
|
151
|
+
});
|
|
152
|
+
}, []);
|
|
153
|
+
const RenderComponent = (0, import_react4.useCallback)(
|
|
154
|
+
(props) => {
|
|
155
|
+
const ToolComponent = tool.render;
|
|
156
|
+
if (props.status === "inProgress") {
|
|
157
|
+
const enhancedProps = {
|
|
158
|
+
...props,
|
|
159
|
+
name: tool.name,
|
|
160
|
+
description: tool.description || "",
|
|
161
|
+
respond: void 0
|
|
162
|
+
};
|
|
163
|
+
return import_react5.default.createElement(ToolComponent, enhancedProps);
|
|
164
|
+
} else if (props.status === "executing") {
|
|
165
|
+
const enhancedProps = {
|
|
166
|
+
...props,
|
|
167
|
+
name: tool.name,
|
|
168
|
+
description: tool.description || "",
|
|
169
|
+
respond
|
|
170
|
+
};
|
|
171
|
+
return import_react5.default.createElement(ToolComponent, enhancedProps);
|
|
172
|
+
} else if (props.status === "complete") {
|
|
173
|
+
const enhancedProps = {
|
|
174
|
+
...props,
|
|
175
|
+
name: tool.name,
|
|
176
|
+
description: tool.description || "",
|
|
177
|
+
respond: void 0
|
|
178
|
+
};
|
|
179
|
+
return import_react5.default.createElement(ToolComponent, enhancedProps);
|
|
180
|
+
}
|
|
181
|
+
return import_react5.default.createElement(ToolComponent, props);
|
|
182
|
+
},
|
|
183
|
+
[tool.render, tool.name, tool.description, respond]
|
|
184
|
+
);
|
|
185
|
+
const frontendTool = {
|
|
186
|
+
...tool,
|
|
187
|
+
handler,
|
|
188
|
+
render: RenderComponent
|
|
189
|
+
};
|
|
190
|
+
useFrontendTool(frontendTool);
|
|
191
|
+
(0, import_react4.useEffect)(() => {
|
|
192
|
+
return () => {
|
|
193
|
+
const keyOf = (rc) => `${rc.agentId ?? ""}:${rc.name}`;
|
|
194
|
+
const currentRenderToolCalls = copilotkit.renderToolCalls;
|
|
195
|
+
const filtered = currentRenderToolCalls.filter(
|
|
196
|
+
(rc) => keyOf(rc) !== keyOf({ name: tool.name, agentId: tool.agentId })
|
|
197
|
+
);
|
|
198
|
+
copilotkit.setRenderToolCalls(filtered);
|
|
199
|
+
};
|
|
200
|
+
}, [copilotkit, tool.name, tool.agentId]);
|
|
201
|
+
}
|
|
202
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
203
|
+
0 && (module.exports = {
|
|
204
|
+
useHumanInTheLoop
|
|
205
|
+
});
|
|
206
|
+
//# sourceMappingURL=use-human-in-the-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/use-human-in-the-loop.tsx","../../src/hooks/use-frontend-tool.tsx","../../src/providers/CopilotKitProvider.tsx","../../src/lib/react-core.ts","../../src/components/CopilotKitInspector.tsx"],"sourcesContent":["import { ReactToolCallRenderer } from \"@/types/react-tool-call-renderer\";\nimport { useFrontendTool } from \"./use-frontend-tool\";\nimport { ReactFrontendTool } from \"@/types/frontend-tool\";\nimport { ReactHumanInTheLoop } from \"@/types/human-in-the-loop\";\nimport { useCallback, useRef, useEffect } from \"react\";\nimport React from \"react\";\nimport { useCopilotKit } from \"@/providers/CopilotKitProvider\";\n\nexport function useHumanInTheLoop<T extends Record<string, unknown> = Record<string, unknown>>(\n tool: ReactHumanInTheLoop<T>,\n) {\n const { copilotkit } = useCopilotKit();\n const resolvePromiseRef = useRef<((result: unknown) => void) | null>(null);\n\n const respond = useCallback(async (result: unknown) => {\n if (resolvePromiseRef.current) {\n resolvePromiseRef.current(result);\n resolvePromiseRef.current = null;\n }\n }, []);\n\n const handler = useCallback(async () => {\n return new Promise((resolve) => {\n resolvePromiseRef.current = resolve;\n });\n }, []);\n\n const RenderComponent: ReactToolCallRenderer<T>[\"render\"] = useCallback(\n (props) => {\n const ToolComponent = tool.render;\n\n // Enhance props based on current status\n if (props.status === \"inProgress\") {\n const enhancedProps = {\n ...props,\n name: tool.name,\n description: tool.description || \"\",\n respond: undefined,\n };\n return React.createElement(ToolComponent, enhancedProps);\n } else if (props.status === \"executing\") {\n const enhancedProps = {\n ...props,\n name: tool.name,\n description: tool.description || \"\",\n respond,\n };\n return React.createElement(ToolComponent, enhancedProps);\n } else if (props.status === \"complete\") {\n const enhancedProps = {\n ...props,\n name: tool.name,\n description: tool.description || \"\",\n respond: undefined,\n };\n return React.createElement(ToolComponent, enhancedProps);\n }\n\n // Fallback - just render with original props\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return React.createElement(ToolComponent, props as any);\n },\n [tool.render, tool.name, tool.description, respond],\n );\n\n const frontendTool: ReactFrontendTool<T> = {\n ...tool,\n handler,\n render: RenderComponent,\n };\n\n useFrontendTool(frontendTool);\n\n // Human-in-the-loop tools should remove their renderer on unmount\n // since they can't respond to user interactions anymore\n useEffect(() => {\n return () => {\n const keyOf = (rc: ReactToolCallRenderer<any>) => `${rc.agentId ?? \"\"}:${rc.name}`;\n const currentRenderToolCalls = copilotkit.renderToolCalls as ReactToolCallRenderer<any>[];\n const filtered = currentRenderToolCalls.filter(\n (rc) => keyOf(rc) !== keyOf({ name: tool.name, agentId: tool.agentId } as any),\n );\n copilotkit.setRenderToolCalls(filtered);\n };\n }, [copilotkit, tool.name, tool.agentId]);\n}\n","import { useEffect } from \"react\";\nimport { useCopilotKit } from \"../providers/CopilotKitProvider\";\nimport { ReactFrontendTool } from \"../types/frontend-tool\";\nimport { ReactToolCallRenderer } from \"../types/react-tool-call-renderer\";\n\nexport function useFrontendTool<\n T extends Record<string, unknown> = Record<string, unknown>,\n>(tool: ReactFrontendTool<T>) {\n const { copilotkit } = useCopilotKit();\n\n useEffect(() => {\n const name = tool.name;\n\n // Always register/override the tool for this name on mount\n if (copilotkit.getTool({ toolName: name, agentId: tool.agentId })) {\n console.warn(\n `Tool '${name}' already exists for agent '${tool.agentId || 'global'}'. Overriding with latest registration.`\n );\n copilotkit.removeTool(name, tool.agentId);\n }\n copilotkit.addTool(tool);\n\n // Register/override renderer by name and agentId through core\n if (tool.render) {\n // Get current render tool calls and merge with new entry\n const keyOf = (rc: ReactToolCallRenderer<any>) => `${rc.agentId ?? \"\"}:${rc.name}`;\n const currentRenderToolCalls = copilotkit.renderToolCalls as ReactToolCallRenderer<any>[];\n\n // Build map from existing entries\n const mergedMap = new Map<string, ReactToolCallRenderer<any>>();\n for (const rc of currentRenderToolCalls) {\n mergedMap.set(keyOf(rc), rc);\n }\n\n // Add/overwrite with new entry\n const newEntry = {\n name,\n args: tool.parameters,\n agentId: tool.agentId,\n render: tool.render,\n } as ReactToolCallRenderer<any>;\n mergedMap.set(keyOf(newEntry), newEntry);\n\n // Set the merged list back\n copilotkit.setRenderToolCalls(Array.from(mergedMap.values()));\n }\n\n return () => {\n copilotkit.removeTool(name, tool.agentId);\n // we are intentionally not removing the render here so that the tools can still render in the chat history\n };\n // Depend only on stable keys to avoid re-register loops due to object identity\n }, [tool.name, copilotkit]);\n}\n","\"use client\";\n\nimport React, {\n createContext,\n useContext,\n ReactNode,\n useMemo,\n useEffect,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { ReactActivityMessageRenderer, ReactToolCallRenderer } from \"../types\";\nimport { ReactCustomMessageRenderer } from \"../types/react-custom-message-renderer\";\nimport { ReactFrontendTool } from \"../types/frontend-tool\";\nimport { ReactHumanInTheLoop } from \"../types/human-in-the-loop\";\nimport { z } from \"zod\";\nimport { FrontendTool } from \"@copilotkitnext/core\";\nimport { AbstractAgent } from \"@ag-ui/client\";\nimport { CopilotKitCoreReact } from \"../lib/react-core\";\nimport { CopilotKitInspector } from \"../components/CopilotKitInspector\";\n\n// Define the context value interface - idiomatic React naming\nexport interface CopilotKitContextValue {\n copilotkit: CopilotKitCoreReact;\n}\n\n// Create the CopilotKit context\nconst CopilotKitContext = createContext<CopilotKitContextValue>({\n copilotkit: null!,\n});\n\n// Provider props interface\nexport interface CopilotKitProviderProps {\n children: ReactNode;\n runtimeUrl?: string;\n headers?: Record<string, string>;\n properties?: Record<string, unknown>;\n useSingleEndpoint?: boolean;\n agents__unsafe_dev_only?: Record<string, AbstractAgent>;\n renderToolCalls?: ReactToolCallRenderer<any>[];\n renderActivityMessages?: ReactActivityMessageRenderer<any>[];\n renderCustomMessages?: ReactCustomMessageRenderer[];\n frontendTools?: ReactFrontendTool[];\n humanInTheLoop?: ReactHumanInTheLoop[];\n showDevConsole?: boolean | \"auto\";\n}\n\n// Small helper to normalize array props to a stable reference and warn\nfunction useStableArrayProp<T>(\n prop: T[] | undefined,\n warningMessage?: string,\n isMeaningfulChange?: (initial: T[], next: T[]) => boolean,\n): T[] {\n const empty = useMemo<T[]>(() => [], []);\n const value = prop ?? empty;\n const initial = useRef(value);\n\n useEffect(() => {\n if (\n warningMessage &&\n value !== initial.current &&\n (isMeaningfulChange ? isMeaningfulChange(initial.current, value) : true)\n ) {\n console.error(warningMessage);\n }\n }, [value, warningMessage]);\n\n return value;\n}\n\n// Provider component\nexport const CopilotKitProvider: React.FC<CopilotKitProviderProps> = ({\n children,\n runtimeUrl,\n headers = {},\n properties = {},\n agents__unsafe_dev_only: agents = {},\n renderToolCalls,\n renderActivityMessages,\n renderCustomMessages,\n frontendTools,\n humanInTheLoop,\n showDevConsole = false,\n useSingleEndpoint = false,\n}) => {\n const [shouldRenderInspector, setShouldRenderInspector] = useState(false);\n\n useEffect(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (showDevConsole === true) {\n // Explicitly show the inspector\n setShouldRenderInspector(true);\n } else if (showDevConsole === \"auto\") {\n // Show on localhost or 127.0.0.1 only\n const localhostHosts = new Set([\"localhost\", \"127.0.0.1\"]);\n if (localhostHosts.has(window.location.hostname)) {\n setShouldRenderInspector(true);\n } else {\n setShouldRenderInspector(false);\n }\n } else {\n // showDevConsole is false or undefined (default false)\n setShouldRenderInspector(false);\n }\n }, [showDevConsole]);\n\n // Normalize array props to stable references with clear dev warnings\n const renderToolCallsList = useStableArrayProp<ReactToolCallRenderer<any>>(\n renderToolCalls,\n \"renderToolCalls must be a stable array. If you want to dynamically add or remove tools, use `useFrontendTool` instead.\",\n (initial, next) => {\n // Only warn if the shape (names+agentId) changed. Allow identity changes\n // to support updated closures from parents (e.g., Storybook state).\n const key = (rc?: ReactToolCallRenderer<unknown>) => `${rc?.agentId ?? \"\"}:${rc?.name ?? \"\"}`;\n const setFrom = (arr: ReactToolCallRenderer<unknown>[]) => new Set(arr.map(key));\n const a = setFrom(initial);\n const b = setFrom(next);\n if (a.size !== b.size) return true;\n for (const k of a) if (!b.has(k)) return true;\n return false;\n },\n );\n\n const renderCustomMessagesList = useStableArrayProp<ReactCustomMessageRenderer>(\n renderCustomMessages,\n \"renderCustomMessages must be a stable array.\",\n );\n\n const renderActivityMessagesList = useStableArrayProp<ReactActivityMessageRenderer<any>>(\n renderActivityMessages,\n \"renderActivityMessages must be a stable array.\",\n );\n\n const frontendToolsList = useStableArrayProp<ReactFrontendTool>(\n frontendTools,\n \"frontendTools must be a stable array. If you want to dynamically add or remove tools, use `useFrontendTool` instead.\",\n );\n const humanInTheLoopList = useStableArrayProp<ReactHumanInTheLoop>(\n humanInTheLoop,\n \"humanInTheLoop must be a stable array. If you want to dynamically add or remove human-in-the-loop tools, use `useHumanInTheLoop` instead.\",\n );\n\n // Note: warnings for array identity changes are handled by useStableArrayProp\n\n // Process humanInTheLoop tools to create handlers and add render components\n const processedHumanInTheLoopTools = useMemo(() => {\n const processedTools: FrontendTool[] = [];\n const processedRenderToolCalls: ReactToolCallRenderer<unknown>[] = [];\n\n humanInTheLoopList.forEach((tool) => {\n // Create a promise-based handler for each human-in-the-loop tool\n const frontendTool: FrontendTool = {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n followUp: tool.followUp,\n ...(tool.agentId && { agentId: tool.agentId }),\n handler: async () => {\n // This handler will be replaced by the hook when it runs\n // For provider-level tools, we create a basic handler that waits for user interaction\n return new Promise((resolve) => {\n // The actual implementation will be handled by the render component\n // This is a placeholder that the hook will override\n console.warn(`Human-in-the-loop tool '${tool.name}' called but no interactive handler is set up.`);\n resolve(undefined);\n });\n },\n };\n processedTools.push(frontendTool);\n\n // Add the render component to renderToolCalls\n if (tool.render) {\n processedRenderToolCalls.push({\n name: tool.name,\n args: tool.parameters!,\n render: tool.render,\n ...(tool.agentId && { agentId: tool.agentId }),\n } as ReactToolCallRenderer<unknown>);\n }\n });\n\n return { tools: processedTools, renderToolCalls: processedRenderToolCalls };\n }, [humanInTheLoopList]);\n\n // Combine all tools for CopilotKitCore\n const allTools = useMemo(() => {\n const tools: FrontendTool[] = [];\n\n // Add frontend tools\n tools.push(...frontendToolsList);\n\n // Add processed human-in-the-loop tools\n tools.push(...processedHumanInTheLoopTools.tools);\n\n return tools;\n }, [frontendToolsList, processedHumanInTheLoopTools]);\n\n // Combine all render tool calls\n const allRenderToolCalls = useMemo(() => {\n const combined: ReactToolCallRenderer<unknown>[] = [...renderToolCallsList];\n\n // Add render components from frontend tools\n frontendToolsList.forEach((tool) => {\n if (tool.render) {\n // For wildcard tools without parameters, default to z.any()\n const args = tool.parameters || (tool.name === \"*\" ? z.any() : undefined);\n if (args) {\n combined.push({\n name: tool.name,\n args: args,\n render: tool.render,\n } as ReactToolCallRenderer<unknown>);\n }\n }\n });\n\n // Add render components from human-in-the-loop tools\n combined.push(...processedHumanInTheLoopTools.renderToolCalls);\n\n return combined;\n }, [renderToolCallsList, frontendToolsList, processedHumanInTheLoopTools]);\n\n const copilotkit = useMemo(() => {\n const copilotkit = new CopilotKitCoreReact({\n runtimeUrl,\n runtimeTransport: useSingleEndpoint ? \"single\" : \"rest\",\n headers,\n properties,\n agents__unsafe_dev_only: agents,\n tools: allTools,\n renderToolCalls: allRenderToolCalls,\n renderActivityMessages: renderActivityMessagesList,\n renderCustomMessages: renderCustomMessagesList,\n });\n\n return copilotkit;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allTools, allRenderToolCalls, renderActivityMessagesList, renderCustomMessagesList, useSingleEndpoint]);\n\n // Subscribe to render tool calls changes to force re-renders\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n useEffect(() => {\n const unsubscribe = copilotkit.subscribe({\n onRenderToolCallsChanged: () => {\n forceUpdate();\n },\n });\n\n return () => {\n unsubscribe();\n };\n }, [copilotkit]);\n\n useEffect(() => {\n copilotkit.setRuntimeUrl(runtimeUrl);\n copilotkit.setRuntimeTransport(useSingleEndpoint ? \"single\" : \"rest\");\n copilotkit.setHeaders(headers);\n copilotkit.setProperties(properties);\n copilotkit.setAgents__unsafe_dev_only(agents);\n }, [runtimeUrl, headers, properties, agents, useSingleEndpoint]);\n\n return (\n <CopilotKitContext.Provider\n value={{\n copilotkit,\n }}\n >\n {children}\n {shouldRenderInspector ? <CopilotKitInspector core={copilotkit} /> : null}\n </CopilotKitContext.Provider>\n );\n};\n\n// Hook to use the CopilotKit instance - returns the full context value\nexport const useCopilotKit = (): CopilotKitContextValue => {\n const context = useContext(CopilotKitContext);\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n if (!context) {\n throw new Error(\"useCopilotKit must be used within CopilotKitProvider\");\n }\n useEffect(() => {\n const unsubscribe = context.copilotkit.subscribe({\n onRuntimeConnectionStatusChanged: () => {\n forceUpdate();\n },\n });\n return () => {\n unsubscribe();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return context;\n};\n","import { ReactActivityMessageRenderer, ReactToolCallRenderer } from \"@/types\";\nimport { ReactCustomMessageRenderer } from \"@/types/react-custom-message-renderer\";\nimport { CopilotKitCore, CopilotKitCoreConfig, CopilotKitCoreSubscriber } from \"@copilotkitnext/core\";\n\nexport interface CopilotKitCoreReactConfig extends CopilotKitCoreConfig {\n // Add any additional configuration properties specific to the React implementation\n renderToolCalls?: ReactToolCallRenderer<any>[];\n renderActivityMessages?: ReactActivityMessageRenderer<any>[];\n\n // Add custom message renderers\n renderCustomMessages?: ReactCustomMessageRenderer[];\n}\n\nexport interface CopilotKitCoreReactSubscriber extends CopilotKitCoreSubscriber {\n onRenderToolCallsChanged?: (event: {\n copilotkit: CopilotKitCore;\n renderToolCalls: ReactToolCallRenderer<any>[];\n }) => void | Promise<void>;\n}\n\nexport class CopilotKitCoreReact extends CopilotKitCore {\n private _renderToolCalls: ReactToolCallRenderer<any>[] = [];\n private _renderCustomMessages: ReactCustomMessageRenderer[] = [];\n private _renderActivityMessages: ReactActivityMessageRenderer<any>[] = [];\n\n constructor(config: CopilotKitCoreReactConfig) {\n super(config);\n this._renderToolCalls = config.renderToolCalls ?? [];\n this._renderCustomMessages = config.renderCustomMessages ?? [];\n this._renderActivityMessages = config.renderActivityMessages ?? [];\n }\n\n get renderCustomMessages(): Readonly<ReactCustomMessageRenderer[]> {\n return this._renderCustomMessages;\n }\n\n get renderActivityMessages(): Readonly<ReactActivityMessageRenderer<any>>[] {\n return this._renderActivityMessages;\n }\n\n get renderToolCalls(): Readonly<ReactToolCallRenderer<any>>[] {\n return this._renderToolCalls;\n }\n\n setRenderToolCalls(renderToolCalls: ReactToolCallRenderer<any>[]): void {\n this._renderToolCalls = renderToolCalls;\n\n // Notify React-specific subscribers\n void this.notifySubscribers(\n (subscriber) => {\n const reactSubscriber = subscriber as CopilotKitCoreReactSubscriber;\n if (reactSubscriber.onRenderToolCallsChanged) {\n reactSubscriber.onRenderToolCallsChanged({\n copilotkit: this,\n renderToolCalls: this.renderToolCalls,\n });\n }\n },\n \"Subscriber onRenderToolCallsChanged error:\"\n );\n }\n\n // Override to accept React-specific subscriber type\n subscribe(subscriber: CopilotKitCoreReactSubscriber): () => void {\n return super.subscribe(subscriber);\n }\n\n unsubscribe(subscriber: CopilotKitCoreReactSubscriber): void {\n super.unsubscribe(subscriber);\n }\n}\n","import * as React from \"react\";\nimport { createComponent } from \"@lit-labs/react\";\nimport {\n WEB_INSPECTOR_TAG,\n WebInspectorElement,\n defineWebInspector,\n} from \"@copilotkitnext/web-inspector\";\nimport type { CopilotKitCore } from \"@copilotkitnext/core\";\n\ndefineWebInspector();\n\nconst CopilotKitInspectorBase = createComponent({\n tagName: WEB_INSPECTOR_TAG,\n elementClass: WebInspectorElement,\n react: React,\n});\n\nexport type CopilotKitInspectorBaseProps = React.ComponentProps<typeof CopilotKitInspectorBase>;\n\nexport interface CopilotKitInspectorProps extends Omit<CopilotKitInspectorBaseProps, \"core\"> {\n core?: CopilotKitCore | null;\n}\n\nexport const CopilotKitInspector = React.forwardRef<\n WebInspectorElement,\n CopilotKitInspectorProps\n>(\n ({ core, ...rest }, ref) => {\n const innerRef = React.useRef<WebInspectorElement>(null);\n\n React.useImperativeHandle(ref, () => innerRef.current as WebInspectorElement, []);\n\n React.useEffect(() => {\n if (innerRef.current) {\n innerRef.current.core = core ?? null;\n }\n }, [core]);\n\n return (\n <CopilotKitInspectorBase\n {...(rest as CopilotKitInspectorBaseProps)}\n ref={innerRef}\n />\n ); // eslint-disable-line react/jsx-props-no-spreading\n },\n);\n\nCopilotKitInspector.displayName = \"CopilotKitInspector\";\n"],"mappings":"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","names":["import_react","import_react","import_jsx_runtime","import_react","React"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useHumanInTheLoop
|
|
3
|
+
} from "../chunk-QJ6DZ645.mjs";
|
|
4
|
+
import "../chunk-NASFZS3N.mjs";
|
|
5
|
+
import "../chunk-VE3SBLU7.mjs";
|
|
6
|
+
import "../chunk-YPH4BHOY.mjs";
|
|
7
|
+
import "../chunk-NNAYEAP2.mjs";
|
|
8
|
+
export {
|
|
9
|
+
useHumanInTheLoop
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=use-human-in-the-loop.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface KeyboardState {
|
|
2
|
+
isKeyboardOpen: boolean;
|
|
3
|
+
keyboardHeight: number;
|
|
4
|
+
availableHeight: number;
|
|
5
|
+
viewportHeight: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Hook to detect mobile keyboard appearance and calculate available viewport height.
|
|
9
|
+
* Uses the Visual Viewport API to track keyboard state on mobile devices.
|
|
10
|
+
*
|
|
11
|
+
* @returns KeyboardState object with keyboard information
|
|
12
|
+
*/
|
|
13
|
+
declare function useKeyboardHeight(): KeyboardState;
|
|
14
|
+
|
|
15
|
+
export { type KeyboardState, useKeyboardHeight };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface KeyboardState {
|
|
2
|
+
isKeyboardOpen: boolean;
|
|
3
|
+
keyboardHeight: number;
|
|
4
|
+
availableHeight: number;
|
|
5
|
+
viewportHeight: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Hook to detect mobile keyboard appearance and calculate available viewport height.
|
|
9
|
+
* Uses the Visual Viewport API to track keyboard state on mobile devices.
|
|
10
|
+
*
|
|
11
|
+
* @returns KeyboardState object with keyboard information
|
|
12
|
+
*/
|
|
13
|
+
declare function useKeyboardHeight(): KeyboardState;
|
|
14
|
+
|
|
15
|
+
export { type KeyboardState, useKeyboardHeight };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/hooks/use-keyboard-height.tsx
|
|
21
|
+
var use_keyboard_height_exports = {};
|
|
22
|
+
__export(use_keyboard_height_exports, {
|
|
23
|
+
useKeyboardHeight: () => useKeyboardHeight
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(use_keyboard_height_exports);
|
|
26
|
+
var import_react = require("react");
|
|
27
|
+
function useKeyboardHeight() {
|
|
28
|
+
const [keyboardState, setKeyboardState] = (0, import_react.useState)({
|
|
29
|
+
isKeyboardOpen: false,
|
|
30
|
+
keyboardHeight: 0,
|
|
31
|
+
availableHeight: typeof window !== "undefined" ? window.innerHeight : 0,
|
|
32
|
+
viewportHeight: typeof window !== "undefined" ? window.innerHeight : 0
|
|
33
|
+
});
|
|
34
|
+
(0, import_react.useEffect)(() => {
|
|
35
|
+
if (typeof window === "undefined") {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const visualViewport = window.visualViewport;
|
|
39
|
+
if (!visualViewport) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const updateKeyboardState = () => {
|
|
43
|
+
const layoutHeight = window.innerHeight;
|
|
44
|
+
const visualHeight = visualViewport.height;
|
|
45
|
+
const keyboardHeight = Math.max(0, layoutHeight - visualHeight);
|
|
46
|
+
const isKeyboardOpen = keyboardHeight > 150;
|
|
47
|
+
setKeyboardState({
|
|
48
|
+
isKeyboardOpen,
|
|
49
|
+
keyboardHeight,
|
|
50
|
+
availableHeight: visualHeight,
|
|
51
|
+
viewportHeight: layoutHeight
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
updateKeyboardState();
|
|
55
|
+
visualViewport.addEventListener("resize", updateKeyboardState);
|
|
56
|
+
visualViewport.addEventListener("scroll", updateKeyboardState);
|
|
57
|
+
return () => {
|
|
58
|
+
visualViewport.removeEventListener("resize", updateKeyboardState);
|
|
59
|
+
visualViewport.removeEventListener("scroll", updateKeyboardState);
|
|
60
|
+
};
|
|
61
|
+
}, []);
|
|
62
|
+
return keyboardState;
|
|
63
|
+
}
|
|
64
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
65
|
+
0 && (module.exports = {
|
|
66
|
+
useKeyboardHeight
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=use-keyboard-height.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/use-keyboard-height.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\n\nexport interface KeyboardState {\n isKeyboardOpen: boolean;\n keyboardHeight: number;\n availableHeight: number;\n viewportHeight: number;\n}\n\n/**\n * Hook to detect mobile keyboard appearance and calculate available viewport height.\n * Uses the Visual Viewport API to track keyboard state on mobile devices.\n *\n * @returns KeyboardState object with keyboard information\n */\nexport function useKeyboardHeight(): KeyboardState {\n const [keyboardState, setKeyboardState] = useState<KeyboardState>({\n isKeyboardOpen: false,\n keyboardHeight: 0,\n availableHeight: typeof window !== \"undefined\" ? window.innerHeight : 0,\n viewportHeight: typeof window !== \"undefined\" ? window.innerHeight : 0,\n });\n\n useEffect(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n // Check if Visual Viewport API is available\n const visualViewport = window.visualViewport;\n if (!visualViewport) {\n return;\n }\n\n const updateKeyboardState = () => {\n const layoutHeight = window.innerHeight;\n const visualHeight = visualViewport.height;\n\n // Calculate keyboard height (difference between layout and visual viewport)\n const keyboardHeight = Math.max(0, layoutHeight - visualHeight);\n\n // Keyboard is considered open if the height difference is significant (> 150px)\n const isKeyboardOpen = keyboardHeight > 150;\n\n setKeyboardState({\n isKeyboardOpen,\n keyboardHeight,\n availableHeight: visualHeight,\n viewportHeight: layoutHeight,\n });\n };\n\n // Initial state\n updateKeyboardState();\n\n // Listen for viewport changes\n visualViewport.addEventListener(\"resize\", updateKeyboardState);\n visualViewport.addEventListener(\"scroll\", updateKeyboardState);\n\n return () => {\n visualViewport.removeEventListener(\"resize\", updateKeyboardState);\n visualViewport.removeEventListener(\"scroll\", updateKeyboardState);\n };\n }, []);\n\n return keyboardState;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAoC;AAe7B,SAAS,oBAAmC;AACjD,QAAM,CAAC,eAAe,gBAAgB,QAAI,uBAAwB;AAAA,IAChE,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,iBAAiB,OAAO,WAAW,cAAc,OAAO,cAAc;AAAA,IACtE,gBAAgB,OAAO,WAAW,cAAc,OAAO,cAAc;AAAA,EACvE,CAAC;AAED,8BAAU,MAAM;AACd,QAAI,OAAO,WAAW,aAAa;AACjC;AAAA,IACF;AAGA,UAAM,iBAAiB,OAAO;AAC9B,QAAI,CAAC,gBAAgB;AACnB;AAAA,IACF;AAEA,UAAM,sBAAsB,MAAM;AAChC,YAAM,eAAe,OAAO;AAC5B,YAAM,eAAe,eAAe;AAGpC,YAAM,iBAAiB,KAAK,IAAI,GAAG,eAAe,YAAY;AAG9D,YAAM,iBAAiB,iBAAiB;AAExC,uBAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,MAClB,CAAC;AAAA,IACH;AAGA,wBAAoB;AAGpB,mBAAe,iBAAiB,UAAU,mBAAmB;AAC7D,mBAAe,iBAAiB,UAAU,mBAAmB;AAE7D,WAAO,MAAM;AACX,qBAAe,oBAAoB,UAAU,mBAAmB;AAChE,qBAAe,oBAAoB,UAAU,mBAAmB;AAAA,IAClE;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/hooks/use-render-activity-message.tsx
|
|
31
|
+
var use_render_activity_message_exports = {};
|
|
32
|
+
__export(use_render_activity_message_exports, {
|
|
33
|
+
useRenderActivityMessage: () => useRenderActivityMessage
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(use_render_activity_message_exports);
|
|
36
|
+
var import_shared2 = require("@copilotkitnext/shared");
|
|
37
|
+
|
|
38
|
+
// src/providers/CopilotChatConfigurationProvider.tsx
|
|
39
|
+
var import_react = require("react");
|
|
40
|
+
var import_shared = require("@copilotkitnext/shared");
|
|
41
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
42
|
+
var CopilotChatConfiguration = (0, import_react.createContext)(null);
|
|
43
|
+
var useCopilotChatConfiguration = () => {
|
|
44
|
+
const configuration = (0, import_react.useContext)(CopilotChatConfiguration);
|
|
45
|
+
return configuration;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// src/providers/CopilotKitProvider.tsx
|
|
49
|
+
var import_react3 = require("react");
|
|
50
|
+
var import_zod = require("zod");
|
|
51
|
+
|
|
52
|
+
// src/lib/react-core.ts
|
|
53
|
+
var import_core = require("@copilotkitnext/core");
|
|
54
|
+
|
|
55
|
+
// src/components/CopilotKitInspector.tsx
|
|
56
|
+
var React2 = __toESM(require("react"));
|
|
57
|
+
var import_react2 = require("@lit-labs/react");
|
|
58
|
+
var import_web_inspector = require("@copilotkitnext/web-inspector");
|
|
59
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
60
|
+
(0, import_web_inspector.defineWebInspector)();
|
|
61
|
+
var CopilotKitInspectorBase = (0, import_react2.createComponent)({
|
|
62
|
+
tagName: import_web_inspector.WEB_INSPECTOR_TAG,
|
|
63
|
+
elementClass: import_web_inspector.WebInspectorElement,
|
|
64
|
+
react: React2
|
|
65
|
+
});
|
|
66
|
+
var CopilotKitInspector = React2.forwardRef(
|
|
67
|
+
({ core, ...rest }, ref) => {
|
|
68
|
+
const innerRef = React2.useRef(null);
|
|
69
|
+
React2.useImperativeHandle(ref, () => innerRef.current, []);
|
|
70
|
+
React2.useEffect(() => {
|
|
71
|
+
if (innerRef.current) {
|
|
72
|
+
innerRef.current.core = core ?? null;
|
|
73
|
+
}
|
|
74
|
+
}, [core]);
|
|
75
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
76
|
+
CopilotKitInspectorBase,
|
|
77
|
+
{
|
|
78
|
+
...rest,
|
|
79
|
+
ref: innerRef
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
CopilotKitInspector.displayName = "CopilotKitInspector";
|
|
85
|
+
|
|
86
|
+
// src/providers/CopilotKitProvider.tsx
|
|
87
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
88
|
+
var CopilotKitContext = (0, import_react3.createContext)({
|
|
89
|
+
copilotkit: null
|
|
90
|
+
});
|
|
91
|
+
var useCopilotKit = () => {
|
|
92
|
+
const context = (0, import_react3.useContext)(CopilotKitContext);
|
|
93
|
+
const [, forceUpdate] = (0, import_react3.useReducer)((x) => x + 1, 0);
|
|
94
|
+
if (!context) {
|
|
95
|
+
throw new Error("useCopilotKit must be used within CopilotKitProvider");
|
|
96
|
+
}
|
|
97
|
+
(0, import_react3.useEffect)(() => {
|
|
98
|
+
const unsubscribe = context.copilotkit.subscribe({
|
|
99
|
+
onRuntimeConnectionStatusChanged: () => {
|
|
100
|
+
forceUpdate();
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
return () => {
|
|
104
|
+
unsubscribe();
|
|
105
|
+
};
|
|
106
|
+
}, []);
|
|
107
|
+
return context;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
// src/hooks/use-render-activity-message.tsx
|
|
111
|
+
var import_react4 = require("react");
|
|
112
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
113
|
+
function useRenderActivityMessage() {
|
|
114
|
+
const { copilotkit } = useCopilotKit();
|
|
115
|
+
const config = useCopilotChatConfiguration();
|
|
116
|
+
const agentId = config?.agentId ?? import_shared2.DEFAULT_AGENT_ID;
|
|
117
|
+
const renderers = copilotkit.renderActivityMessages;
|
|
118
|
+
return (0, import_react4.useCallback)(
|
|
119
|
+
(message) => {
|
|
120
|
+
if (!renderers.length) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
const matches = renderers.filter(
|
|
124
|
+
(renderer2) => renderer2.activityType === message.activityType
|
|
125
|
+
);
|
|
126
|
+
const renderer = matches.find((candidate) => candidate.agentId === agentId) ?? matches.find((candidate) => candidate.agentId === void 0) ?? renderers.find((candidate) => candidate.activityType === "*");
|
|
127
|
+
if (!renderer) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
const parseResult = renderer.content.safeParse(message.content);
|
|
131
|
+
if (!parseResult.success) {
|
|
132
|
+
console.warn(
|
|
133
|
+
`Failed to parse content for activity message '${message.activityType}':`,
|
|
134
|
+
parseResult.error
|
|
135
|
+
);
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
const Component = renderer.render;
|
|
139
|
+
const agent = copilotkit.getAgent(agentId);
|
|
140
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
141
|
+
Component,
|
|
142
|
+
{
|
|
143
|
+
activityType: message.activityType,
|
|
144
|
+
content: parseResult.data,
|
|
145
|
+
message,
|
|
146
|
+
agent
|
|
147
|
+
},
|
|
148
|
+
message.id
|
|
149
|
+
);
|
|
150
|
+
},
|
|
151
|
+
[agentId, copilotkit, renderers]
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
155
|
+
0 && (module.exports = {
|
|
156
|
+
useRenderActivityMessage
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=use-render-activity-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/use-render-activity-message.tsx","../../src/providers/CopilotChatConfigurationProvider.tsx","../../src/providers/CopilotKitProvider.tsx","../../src/lib/react-core.ts","../../src/components/CopilotKitInspector.tsx"],"sourcesContent":["import { ActivityMessage } from \"@ag-ui/core\";\nimport { DEFAULT_AGENT_ID } from \"@copilotkitnext/shared\";\nimport { useCopilotKit, useCopilotChatConfiguration } from \"@/providers\";\nimport { useCallback } from \"react\";\n\nexport function useRenderActivityMessage() {\n const { copilotkit } = useCopilotKit();\n const config = useCopilotChatConfiguration();\n const agentId = config?.agentId ?? DEFAULT_AGENT_ID;\n\n const renderers = copilotkit.renderActivityMessages;\n\n return useCallback(\n (message: ActivityMessage): React.ReactElement | null => {\n if (!renderers.length) {\n return null;\n }\n\n const matches = renderers.filter(\n (renderer) => renderer.activityType === message.activityType\n );\n\n const renderer =\n matches.find((candidate) => candidate.agentId === agentId) ??\n matches.find((candidate) => candidate.agentId === undefined) ??\n renderers.find((candidate) => candidate.activityType === \"*\");\n\n if (!renderer) {\n return null;\n }\n\n const parseResult = renderer.content.safeParse(message.content);\n\n if (!parseResult.success) {\n console.warn(\n `Failed to parse content for activity message '${message.activityType}':`,\n parseResult.error\n );\n return null;\n }\n\n const Component = renderer.render;\n\n const agent = copilotkit.getAgent(agentId);\n\n return (\n <Component\n key={message.id}\n activityType={message.activityType}\n content={parseResult.data}\n message={message}\n agent={agent}\n />\n );\n },\n [agentId, copilotkit, renderers]\n );\n}\n","import React, { createContext, useContext, ReactNode, useMemo, useState } from \"react\";\nimport { DEFAULT_AGENT_ID, randomUUID } from \"@copilotkitnext/shared\";\n\n// Default labels\nexport const CopilotChatDefaultLabels = {\n chatInputPlaceholder: \"Type a message...\",\n chatInputToolbarStartTranscribeButtonLabel: \"Transcribe\",\n chatInputToolbarCancelTranscribeButtonLabel: \"Cancel\",\n chatInputToolbarFinishTranscribeButtonLabel: \"Finish\",\n chatInputToolbarAddButtonLabel: \"Add photos or files\",\n chatInputToolbarToolsButtonLabel: \"Tools\",\n assistantMessageToolbarCopyCodeLabel: \"Copy\",\n assistantMessageToolbarCopyCodeCopiedLabel: \"Copied\",\n assistantMessageToolbarCopyMessageLabel: \"Copy\",\n assistantMessageToolbarThumbsUpLabel: \"Good response\",\n assistantMessageToolbarThumbsDownLabel: \"Bad response\",\n assistantMessageToolbarReadAloudLabel: \"Read aloud\",\n assistantMessageToolbarRegenerateLabel: \"Regenerate\",\n userMessageToolbarCopyMessageLabel: \"Copy\",\n userMessageToolbarEditMessageLabel: \"Edit\",\n chatDisclaimerText: \"AI can make mistakes. Please verify important information.\",\n chatToggleOpenLabel: \"Open chat\",\n chatToggleCloseLabel: \"Close chat\",\n modalHeaderTitle: \"CopilotKit Chat\",\n};\n\nexport type CopilotChatLabels = typeof CopilotChatDefaultLabels;\n\n// Define the full configuration interface\nexport interface CopilotChatConfigurationValue {\n labels: CopilotChatLabels;\n agentId: string;\n threadId: string;\n isModalOpen: boolean;\n setModalOpen: (open: boolean) => void;\n isModalDefaultOpen: boolean;\n}\n\n// Create the configuration context\nconst CopilotChatConfiguration =\n createContext<CopilotChatConfigurationValue | null>(null);\n\n// Provider props interface\nexport interface CopilotChatConfigurationProviderProps {\n children: ReactNode;\n labels?: Partial<CopilotChatLabels>;\n agentId?: string;\n threadId?: string;\n isModalDefaultOpen?: boolean;\n}\n\n// Provider component\nexport const CopilotChatConfigurationProvider: React.FC<\n CopilotChatConfigurationProviderProps\n> = ({ children, labels, agentId, threadId, isModalDefaultOpen }) => {\n const parentConfig = useContext(CopilotChatConfiguration);\n\n const mergedLabels: CopilotChatLabels = useMemo(\n () => ({\n ...CopilotChatDefaultLabels,\n ...(parentConfig?.labels ?? {}),\n ...(labels ?? {}),\n }),\n [labels, parentConfig?.labels],\n );\n\n const resolvedAgentId = agentId ?? parentConfig?.agentId ?? DEFAULT_AGENT_ID;\n\n const resolvedThreadId = useMemo(() => {\n if (threadId) {\n return threadId;\n }\n if (parentConfig?.threadId) {\n return parentConfig.threadId;\n }\n return randomUUID();\n }, [threadId, parentConfig?.threadId]);\n\n const resolvedDefaultOpen = isModalDefaultOpen ?? parentConfig?.isModalDefaultOpen ?? true;\n\n const [internalModalOpen, setInternalModalOpen] = useState<boolean>(\n parentConfig?.isModalOpen ?? resolvedDefaultOpen,\n );\n\n const resolvedIsModalOpen = parentConfig?.isModalOpen ?? internalModalOpen;\n const resolvedSetModalOpen = parentConfig?.setModalOpen ?? setInternalModalOpen;\n\n const configurationValue: CopilotChatConfigurationValue = useMemo(\n () => ({\n labels: mergedLabels,\n agentId: resolvedAgentId,\n threadId: resolvedThreadId,\n isModalOpen: resolvedIsModalOpen,\n setModalOpen: resolvedSetModalOpen,\n isModalDefaultOpen: resolvedDefaultOpen,\n }),\n [\n mergedLabels,\n resolvedAgentId,\n resolvedThreadId,\n resolvedIsModalOpen,\n resolvedSetModalOpen,\n resolvedDefaultOpen,\n ],\n );\n\n return (\n <CopilotChatConfiguration.Provider value={configurationValue}>\n {children}\n </CopilotChatConfiguration.Provider>\n );\n};\n\n// Hook to use the full configuration\nexport const useCopilotChatConfiguration =\n (): CopilotChatConfigurationValue | null => {\n const configuration = useContext(CopilotChatConfiguration);\n return configuration;\n };\n","\"use client\";\n\nimport React, {\n createContext,\n useContext,\n ReactNode,\n useMemo,\n useEffect,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { ReactActivityMessageRenderer, ReactToolCallRenderer } from \"../types\";\nimport { ReactCustomMessageRenderer } from \"../types/react-custom-message-renderer\";\nimport { ReactFrontendTool } from \"../types/frontend-tool\";\nimport { ReactHumanInTheLoop } from \"../types/human-in-the-loop\";\nimport { z } from \"zod\";\nimport { FrontendTool } from \"@copilotkitnext/core\";\nimport { AbstractAgent } from \"@ag-ui/client\";\nimport { CopilotKitCoreReact } from \"../lib/react-core\";\nimport { CopilotKitInspector } from \"../components/CopilotKitInspector\";\n\n// Define the context value interface - idiomatic React naming\nexport interface CopilotKitContextValue {\n copilotkit: CopilotKitCoreReact;\n}\n\n// Create the CopilotKit context\nconst CopilotKitContext = createContext<CopilotKitContextValue>({\n copilotkit: null!,\n});\n\n// Provider props interface\nexport interface CopilotKitProviderProps {\n children: ReactNode;\n runtimeUrl?: string;\n headers?: Record<string, string>;\n properties?: Record<string, unknown>;\n useSingleEndpoint?: boolean;\n agents__unsafe_dev_only?: Record<string, AbstractAgent>;\n renderToolCalls?: ReactToolCallRenderer<any>[];\n renderActivityMessages?: ReactActivityMessageRenderer<any>[];\n renderCustomMessages?: ReactCustomMessageRenderer[];\n frontendTools?: ReactFrontendTool[];\n humanInTheLoop?: ReactHumanInTheLoop[];\n showDevConsole?: boolean | \"auto\";\n}\n\n// Small helper to normalize array props to a stable reference and warn\nfunction useStableArrayProp<T>(\n prop: T[] | undefined,\n warningMessage?: string,\n isMeaningfulChange?: (initial: T[], next: T[]) => boolean,\n): T[] {\n const empty = useMemo<T[]>(() => [], []);\n const value = prop ?? empty;\n const initial = useRef(value);\n\n useEffect(() => {\n if (\n warningMessage &&\n value !== initial.current &&\n (isMeaningfulChange ? isMeaningfulChange(initial.current, value) : true)\n ) {\n console.error(warningMessage);\n }\n }, [value, warningMessage]);\n\n return value;\n}\n\n// Provider component\nexport const CopilotKitProvider: React.FC<CopilotKitProviderProps> = ({\n children,\n runtimeUrl,\n headers = {},\n properties = {},\n agents__unsafe_dev_only: agents = {},\n renderToolCalls,\n renderActivityMessages,\n renderCustomMessages,\n frontendTools,\n humanInTheLoop,\n showDevConsole = false,\n useSingleEndpoint = false,\n}) => {\n const [shouldRenderInspector, setShouldRenderInspector] = useState(false);\n\n useEffect(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (showDevConsole === true) {\n // Explicitly show the inspector\n setShouldRenderInspector(true);\n } else if (showDevConsole === \"auto\") {\n // Show on localhost or 127.0.0.1 only\n const localhostHosts = new Set([\"localhost\", \"127.0.0.1\"]);\n if (localhostHosts.has(window.location.hostname)) {\n setShouldRenderInspector(true);\n } else {\n setShouldRenderInspector(false);\n }\n } else {\n // showDevConsole is false or undefined (default false)\n setShouldRenderInspector(false);\n }\n }, [showDevConsole]);\n\n // Normalize array props to stable references with clear dev warnings\n const renderToolCallsList = useStableArrayProp<ReactToolCallRenderer<any>>(\n renderToolCalls,\n \"renderToolCalls must be a stable array. If you want to dynamically add or remove tools, use `useFrontendTool` instead.\",\n (initial, next) => {\n // Only warn if the shape (names+agentId) changed. Allow identity changes\n // to support updated closures from parents (e.g., Storybook state).\n const key = (rc?: ReactToolCallRenderer<unknown>) => `${rc?.agentId ?? \"\"}:${rc?.name ?? \"\"}`;\n const setFrom = (arr: ReactToolCallRenderer<unknown>[]) => new Set(arr.map(key));\n const a = setFrom(initial);\n const b = setFrom(next);\n if (a.size !== b.size) return true;\n for (const k of a) if (!b.has(k)) return true;\n return false;\n },\n );\n\n const renderCustomMessagesList = useStableArrayProp<ReactCustomMessageRenderer>(\n renderCustomMessages,\n \"renderCustomMessages must be a stable array.\",\n );\n\n const renderActivityMessagesList = useStableArrayProp<ReactActivityMessageRenderer<any>>(\n renderActivityMessages,\n \"renderActivityMessages must be a stable array.\",\n );\n\n const frontendToolsList = useStableArrayProp<ReactFrontendTool>(\n frontendTools,\n \"frontendTools must be a stable array. If you want to dynamically add or remove tools, use `useFrontendTool` instead.\",\n );\n const humanInTheLoopList = useStableArrayProp<ReactHumanInTheLoop>(\n humanInTheLoop,\n \"humanInTheLoop must be a stable array. If you want to dynamically add or remove human-in-the-loop tools, use `useHumanInTheLoop` instead.\",\n );\n\n // Note: warnings for array identity changes are handled by useStableArrayProp\n\n // Process humanInTheLoop tools to create handlers and add render components\n const processedHumanInTheLoopTools = useMemo(() => {\n const processedTools: FrontendTool[] = [];\n const processedRenderToolCalls: ReactToolCallRenderer<unknown>[] = [];\n\n humanInTheLoopList.forEach((tool) => {\n // Create a promise-based handler for each human-in-the-loop tool\n const frontendTool: FrontendTool = {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n followUp: tool.followUp,\n ...(tool.agentId && { agentId: tool.agentId }),\n handler: async () => {\n // This handler will be replaced by the hook when it runs\n // For provider-level tools, we create a basic handler that waits for user interaction\n return new Promise((resolve) => {\n // The actual implementation will be handled by the render component\n // This is a placeholder that the hook will override\n console.warn(`Human-in-the-loop tool '${tool.name}' called but no interactive handler is set up.`);\n resolve(undefined);\n });\n },\n };\n processedTools.push(frontendTool);\n\n // Add the render component to renderToolCalls\n if (tool.render) {\n processedRenderToolCalls.push({\n name: tool.name,\n args: tool.parameters!,\n render: tool.render,\n ...(tool.agentId && { agentId: tool.agentId }),\n } as ReactToolCallRenderer<unknown>);\n }\n });\n\n return { tools: processedTools, renderToolCalls: processedRenderToolCalls };\n }, [humanInTheLoopList]);\n\n // Combine all tools for CopilotKitCore\n const allTools = useMemo(() => {\n const tools: FrontendTool[] = [];\n\n // Add frontend tools\n tools.push(...frontendToolsList);\n\n // Add processed human-in-the-loop tools\n tools.push(...processedHumanInTheLoopTools.tools);\n\n return tools;\n }, [frontendToolsList, processedHumanInTheLoopTools]);\n\n // Combine all render tool calls\n const allRenderToolCalls = useMemo(() => {\n const combined: ReactToolCallRenderer<unknown>[] = [...renderToolCallsList];\n\n // Add render components from frontend tools\n frontendToolsList.forEach((tool) => {\n if (tool.render) {\n // For wildcard tools without parameters, default to z.any()\n const args = tool.parameters || (tool.name === \"*\" ? z.any() : undefined);\n if (args) {\n combined.push({\n name: tool.name,\n args: args,\n render: tool.render,\n } as ReactToolCallRenderer<unknown>);\n }\n }\n });\n\n // Add render components from human-in-the-loop tools\n combined.push(...processedHumanInTheLoopTools.renderToolCalls);\n\n return combined;\n }, [renderToolCallsList, frontendToolsList, processedHumanInTheLoopTools]);\n\n const copilotkit = useMemo(() => {\n const copilotkit = new CopilotKitCoreReact({\n runtimeUrl,\n runtimeTransport: useSingleEndpoint ? \"single\" : \"rest\",\n headers,\n properties,\n agents__unsafe_dev_only: agents,\n tools: allTools,\n renderToolCalls: allRenderToolCalls,\n renderActivityMessages: renderActivityMessagesList,\n renderCustomMessages: renderCustomMessagesList,\n });\n\n return copilotkit;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allTools, allRenderToolCalls, renderActivityMessagesList, renderCustomMessagesList, useSingleEndpoint]);\n\n // Subscribe to render tool calls changes to force re-renders\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n useEffect(() => {\n const unsubscribe = copilotkit.subscribe({\n onRenderToolCallsChanged: () => {\n forceUpdate();\n },\n });\n\n return () => {\n unsubscribe();\n };\n }, [copilotkit]);\n\n useEffect(() => {\n copilotkit.setRuntimeUrl(runtimeUrl);\n copilotkit.setRuntimeTransport(useSingleEndpoint ? \"single\" : \"rest\");\n copilotkit.setHeaders(headers);\n copilotkit.setProperties(properties);\n copilotkit.setAgents__unsafe_dev_only(agents);\n }, [runtimeUrl, headers, properties, agents, useSingleEndpoint]);\n\n return (\n <CopilotKitContext.Provider\n value={{\n copilotkit,\n }}\n >\n {children}\n {shouldRenderInspector ? <CopilotKitInspector core={copilotkit} /> : null}\n </CopilotKitContext.Provider>\n );\n};\n\n// Hook to use the CopilotKit instance - returns the full context value\nexport const useCopilotKit = (): CopilotKitContextValue => {\n const context = useContext(CopilotKitContext);\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n if (!context) {\n throw new Error(\"useCopilotKit must be used within CopilotKitProvider\");\n }\n useEffect(() => {\n const unsubscribe = context.copilotkit.subscribe({\n onRuntimeConnectionStatusChanged: () => {\n forceUpdate();\n },\n });\n return () => {\n unsubscribe();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return context;\n};\n","import { ReactActivityMessageRenderer, ReactToolCallRenderer } from \"@/types\";\nimport { ReactCustomMessageRenderer } from \"@/types/react-custom-message-renderer\";\nimport { CopilotKitCore, CopilotKitCoreConfig, CopilotKitCoreSubscriber } from \"@copilotkitnext/core\";\n\nexport interface CopilotKitCoreReactConfig extends CopilotKitCoreConfig {\n // Add any additional configuration properties specific to the React implementation\n renderToolCalls?: ReactToolCallRenderer<any>[];\n renderActivityMessages?: ReactActivityMessageRenderer<any>[];\n\n // Add custom message renderers\n renderCustomMessages?: ReactCustomMessageRenderer[];\n}\n\nexport interface CopilotKitCoreReactSubscriber extends CopilotKitCoreSubscriber {\n onRenderToolCallsChanged?: (event: {\n copilotkit: CopilotKitCore;\n renderToolCalls: ReactToolCallRenderer<any>[];\n }) => void | Promise<void>;\n}\n\nexport class CopilotKitCoreReact extends CopilotKitCore {\n private _renderToolCalls: ReactToolCallRenderer<any>[] = [];\n private _renderCustomMessages: ReactCustomMessageRenderer[] = [];\n private _renderActivityMessages: ReactActivityMessageRenderer<any>[] = [];\n\n constructor(config: CopilotKitCoreReactConfig) {\n super(config);\n this._renderToolCalls = config.renderToolCalls ?? [];\n this._renderCustomMessages = config.renderCustomMessages ?? [];\n this._renderActivityMessages = config.renderActivityMessages ?? [];\n }\n\n get renderCustomMessages(): Readonly<ReactCustomMessageRenderer[]> {\n return this._renderCustomMessages;\n }\n\n get renderActivityMessages(): Readonly<ReactActivityMessageRenderer<any>>[] {\n return this._renderActivityMessages;\n }\n\n get renderToolCalls(): Readonly<ReactToolCallRenderer<any>>[] {\n return this._renderToolCalls;\n }\n\n setRenderToolCalls(renderToolCalls: ReactToolCallRenderer<any>[]): void {\n this._renderToolCalls = renderToolCalls;\n\n // Notify React-specific subscribers\n void this.notifySubscribers(\n (subscriber) => {\n const reactSubscriber = subscriber as CopilotKitCoreReactSubscriber;\n if (reactSubscriber.onRenderToolCallsChanged) {\n reactSubscriber.onRenderToolCallsChanged({\n copilotkit: this,\n renderToolCalls: this.renderToolCalls,\n });\n }\n },\n \"Subscriber onRenderToolCallsChanged error:\"\n );\n }\n\n // Override to accept React-specific subscriber type\n subscribe(subscriber: CopilotKitCoreReactSubscriber): () => void {\n return super.subscribe(subscriber);\n }\n\n unsubscribe(subscriber: CopilotKitCoreReactSubscriber): void {\n super.unsubscribe(subscriber);\n }\n}\n","import * as React from \"react\";\nimport { createComponent } from \"@lit-labs/react\";\nimport {\n WEB_INSPECTOR_TAG,\n WebInspectorElement,\n defineWebInspector,\n} from \"@copilotkitnext/web-inspector\";\nimport type { CopilotKitCore } from \"@copilotkitnext/core\";\n\ndefineWebInspector();\n\nconst CopilotKitInspectorBase = createComponent({\n tagName: WEB_INSPECTOR_TAG,\n elementClass: WebInspectorElement,\n react: React,\n});\n\nexport type CopilotKitInspectorBaseProps = React.ComponentProps<typeof CopilotKitInspectorBase>;\n\nexport interface CopilotKitInspectorProps extends Omit<CopilotKitInspectorBaseProps, \"core\"> {\n core?: CopilotKitCore | null;\n}\n\nexport const CopilotKitInspector = React.forwardRef<\n WebInspectorElement,\n CopilotKitInspectorProps\n>(\n ({ core, ...rest }, ref) => {\n const innerRef = React.useRef<WebInspectorElement>(null);\n\n React.useImperativeHandle(ref, () => innerRef.current as WebInspectorElement, []);\n\n React.useEffect(() => {\n if (innerRef.current) {\n innerRef.current.core = core ?? null;\n }\n }, [core]);\n\n return (\n <CopilotKitInspectorBase\n {...(rest as CopilotKitInspectorBaseProps)}\n ref={innerRef}\n />\n ); // eslint-disable-line react/jsx-props-no-spreading\n },\n);\n\nCopilotKitInspector.displayName = \"CopilotKitInspector\";\n"],"mappings":"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","names":["import_shared","import_react","React","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","renderer"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useRenderActivityMessage
|
|
3
|
+
} from "../chunk-EJ5ZEAAN.mjs";
|
|
4
|
+
import "../chunk-YZUPVMHC.mjs";
|
|
5
|
+
import "../chunk-4XJK5IVQ.mjs";
|
|
6
|
+
import "../chunk-VE3SBLU7.mjs";
|
|
7
|
+
import "../chunk-YPH4BHOY.mjs";
|
|
8
|
+
import "../chunk-NNAYEAP2.mjs";
|
|
9
|
+
export {
|
|
10
|
+
useRenderActivityMessage
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=use-render-activity-message.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|