@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/chat/CopilotChatInput.tsx","../../../src/providers/CopilotChatConfigurationProvider.tsx","../../../src/components/ui/button.tsx","../../../src/lib/utils.ts","../../../src/components/ui/tooltip.tsx","../../../src/components/ui/dropdown-menu.tsx","../../../src/components/chat/CopilotChatAudioRecorder.tsx","../../../src/lib/slots.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n KeyboardEvent,\n ChangeEvent,\n useEffect,\n useLayoutEffect,\n forwardRef,\n useImperativeHandle,\n useCallback,\n useMemo,\n} from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Plus, Mic, ArrowUp, X, Check, Square } from \"lucide-react\";\n\nimport {\n CopilotChatLabels,\n useCopilotChatConfiguration,\n CopilotChatDefaultLabels,\n} from \"@/providers/CopilotChatConfigurationProvider\";\nimport { Button } from \"@/components/ui/button\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n DropdownMenuSeparator,\n} from \"@/components/ui/dropdown-menu\";\n\nimport { CopilotChatAudioRecorder } from \"./CopilotChatAudioRecorder\";\nimport { renderSlot, WithSlots } from \"@/lib/slots\";\n\nexport type CopilotChatInputMode = \"input\" | \"transcribe\" | \"processing\";\n\nexport type ToolsMenuItem = {\n label: string;\n} & (\n | {\n action: () => void;\n items?: never;\n }\n | {\n action?: never;\n items: (ToolsMenuItem | \"-\")[];\n }\n);\n\ntype CopilotChatInputSlots = {\n textArea: typeof CopilotChatInput.TextArea;\n sendButton: typeof CopilotChatInput.SendButton;\n startTranscribeButton: typeof CopilotChatInput.StartTranscribeButton;\n cancelTranscribeButton: typeof CopilotChatInput.CancelTranscribeButton;\n finishTranscribeButton: typeof CopilotChatInput.FinishTranscribeButton;\n addMenuButton: typeof CopilotChatInput.AddMenuButton;\n audioRecorder: typeof CopilotChatAudioRecorder;\n};\n\ntype CopilotChatInputRestProps = {\n mode?: CopilotChatInputMode;\n toolsMenu?: (ToolsMenuItem | \"-\")[];\n autoFocus?: boolean;\n onSubmitMessage?: (value: string) => void;\n onStop?: () => void;\n isRunning?: boolean;\n onStartTranscribe?: () => void;\n onCancelTranscribe?: () => void;\n onFinishTranscribe?: () => void;\n onAddFile?: () => void;\n value?: string;\n onChange?: (value: string) => void;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">;\n\ntype CopilotChatInputBaseProps = WithSlots<CopilotChatInputSlots, CopilotChatInputRestProps>;\n\ntype CopilotChatInputChildrenArgs = CopilotChatInputBaseProps extends { children?: infer C }\n ? C extends (props: infer P) => React.ReactNode\n ? P\n : never\n : never;\n\nexport type CopilotChatInputProps = Omit<CopilotChatInputBaseProps, \"children\"> & {\n children?: (props: CopilotChatInputChildrenArgs) => React.ReactNode;\n};\n\nconst SLASH_MENU_MAX_VISIBLE_ITEMS = 5;\nconst SLASH_MENU_ITEM_HEIGHT_PX = 40;\n\nexport function CopilotChatInput({\n mode = \"input\",\n onSubmitMessage,\n onStop,\n isRunning = false,\n onStartTranscribe,\n onCancelTranscribe,\n onFinishTranscribe,\n onAddFile,\n onChange,\n value,\n toolsMenu,\n autoFocus = true,\n textArea,\n sendButton,\n startTranscribeButton,\n cancelTranscribeButton,\n finishTranscribeButton,\n addMenuButton,\n audioRecorder,\n children,\n className,\n ...props\n}: CopilotChatInputProps) {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string>(() => value ?? \"\");\n\n useEffect(() => {\n if (!isControlled && value !== undefined) {\n setInternalValue(value);\n }\n }, [isControlled, value]);\n\n const resolvedValue = isControlled ? (value ?? \"\") : internalValue;\n\n const [layout, setLayout] = useState<\"compact\" | \"expanded\">(\"compact\");\n const ignoreResizeRef = useRef(false);\n const resizeEvaluationRafRef = useRef<number | null>(null);\n const isExpanded = mode === \"input\" && layout === \"expanded\";\n const [commandQuery, setCommandQuery] = useState<string | null>(null);\n const [slashHighlightIndex, setSlashHighlightIndex] = useState(0);\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const gridRef = useRef<HTMLDivElement>(null);\n const addButtonContainerRef = useRef<HTMLDivElement>(null);\n const actionsContainerRef = useRef<HTMLDivElement>(null);\n const audioRecorderRef = useRef<React.ElementRef<typeof CopilotChatAudioRecorder>>(null);\n const slashMenuRef = useRef<HTMLDivElement>(null);\n const config = useCopilotChatConfiguration();\n const labels = config?.labels ?? CopilotChatDefaultLabels;\n\n const previousModalStateRef = useRef<boolean | undefined>(undefined);\n const measurementCanvasRef = useRef<HTMLCanvasElement | null>(null);\n const measurementsRef = useRef({\n singleLineHeight: 0,\n maxHeight: 0,\n paddingLeft: 0,\n paddingRight: 0,\n });\n\n const commandItems = useMemo(() => {\n const entries: ToolsMenuItem[] = [];\n const seen = new Set<string>();\n\n const pushItem = (item: ToolsMenuItem | \"-\") => {\n if (item === \"-\") {\n return;\n }\n\n if (item.items && item.items.length > 0) {\n for (const nested of item.items) {\n pushItem(nested);\n }\n return;\n }\n\n if (!seen.has(item.label)) {\n seen.add(item.label);\n entries.push(item);\n }\n };\n\n if (onAddFile) {\n pushItem({\n label: labels.chatInputToolbarAddButtonLabel,\n action: onAddFile,\n });\n }\n\n if (toolsMenu && toolsMenu.length > 0) {\n for (const item of toolsMenu) {\n pushItem(item);\n }\n }\n\n return entries;\n }, [labels.chatInputToolbarAddButtonLabel, onAddFile, toolsMenu]);\n\n const filteredCommands = useMemo(() => {\n if (commandQuery === null) {\n return [] as ToolsMenuItem[];\n }\n\n if (commandItems.length === 0) {\n return [] as ToolsMenuItem[];\n }\n\n const query = commandQuery.trim().toLowerCase();\n if (query.length === 0) {\n return commandItems;\n }\n\n const startsWith: ToolsMenuItem[] = [];\n const contains: ToolsMenuItem[] = [];\n for (const item of commandItems) {\n const label = item.label.toLowerCase();\n if (label.startsWith(query)) {\n startsWith.push(item);\n } else if (label.includes(query)) {\n contains.push(item);\n }\n }\n\n return [...startsWith, ...contains];\n }, [commandItems, commandQuery]);\n\n useEffect(() => {\n if (!autoFocus) {\n previousModalStateRef.current = config?.isModalOpen;\n return;\n }\n\n if (config?.isModalOpen && !previousModalStateRef.current) {\n inputRef.current?.focus();\n }\n\n previousModalStateRef.current = config?.isModalOpen;\n }, [config?.isModalOpen, autoFocus]);\n\n useEffect(() => {\n if (commandItems.length === 0 && commandQuery !== null) {\n setCommandQuery(null);\n }\n }, [commandItems.length, commandQuery]);\n\n const previousCommandQueryRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (\n commandQuery !== null &&\n commandQuery !== previousCommandQueryRef.current &&\n filteredCommands.length > 0\n ) {\n setSlashHighlightIndex(0);\n }\n\n previousCommandQueryRef.current = commandQuery;\n }, [commandQuery, filteredCommands.length]);\n\n useEffect(() => {\n if (commandQuery === null) {\n setSlashHighlightIndex(0);\n return;\n }\n\n if (filteredCommands.length === 0) {\n setSlashHighlightIndex(-1);\n } else if (slashHighlightIndex < 0 || slashHighlightIndex >= filteredCommands.length) {\n setSlashHighlightIndex(0);\n }\n }, [commandQuery, filteredCommands, slashHighlightIndex]);\n\n // Handle recording based on mode changes\n useEffect(() => {\n const recorder = audioRecorderRef.current;\n if (!recorder) {\n return;\n }\n\n if (mode === \"transcribe\") {\n // Start recording when entering transcribe mode\n recorder.start().catch(console.error);\n } else {\n // Stop recording when leaving transcribe mode\n if (recorder.state === \"recording\") {\n recorder.stop().catch(console.error);\n }\n }\n }, [mode]);\n\n useEffect(() => {\n if (mode !== \"input\") {\n setLayout(\"compact\");\n setCommandQuery(null);\n }\n }, [mode]);\n\n const updateSlashState = useCallback(\n (value: string) => {\n if (commandItems.length === 0) {\n setCommandQuery((prev) => (prev === null ? prev : null));\n return;\n }\n\n if (value.startsWith(\"/\")) {\n const firstLine = value.split(/\\r?\\n/, 1)[0] ?? \"\";\n const query = firstLine.slice(1);\n setCommandQuery((prev) => (prev === query ? prev : query));\n } else {\n setCommandQuery((prev) => (prev === null ? prev : null));\n }\n },\n [commandItems.length],\n );\n\n useEffect(() => {\n updateSlashState(resolvedValue);\n }, [resolvedValue, updateSlashState]);\n\n // Handlers\n const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n const nextValue = e.target.value;\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n onChange?.(nextValue);\n updateSlashState(nextValue);\n };\n\n const clearInputValue = useCallback(() => {\n if (!isControlled) {\n setInternalValue(\"\");\n }\n\n if (onChange) {\n onChange(\"\");\n }\n }, [isControlled, onChange]);\n\n const runCommand = useCallback(\n (item: ToolsMenuItem) => {\n clearInputValue();\n\n item.action?.();\n\n setCommandQuery(null);\n setSlashHighlightIndex(0);\n\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n },\n [clearInputValue],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (commandQuery !== null && mode === \"input\") {\n if (e.key === \"ArrowDown\") {\n if (filteredCommands.length > 0) {\n e.preventDefault();\n setSlashHighlightIndex((prev) => {\n if (filteredCommands.length === 0) {\n return prev;\n }\n const next = prev === -1 ? 0 : (prev + 1) % filteredCommands.length;\n return next;\n });\n }\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n if (filteredCommands.length > 0) {\n e.preventDefault();\n setSlashHighlightIndex((prev) => {\n if (filteredCommands.length === 0) {\n return prev;\n }\n if (prev === -1) {\n return filteredCommands.length - 1;\n }\n return prev <= 0 ? filteredCommands.length - 1 : prev - 1;\n });\n }\n return;\n }\n\n if (e.key === \"Enter\") {\n const selected = slashHighlightIndex >= 0 ? filteredCommands[slashHighlightIndex] : undefined;\n if (selected) {\n e.preventDefault();\n runCommand(selected);\n return;\n }\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setCommandQuery(null);\n return;\n }\n }\n\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n if (isProcessing) {\n onStop?.();\n } else {\n send();\n }\n }\n };\n\n const send = () => {\n if (!onSubmitMessage) {\n return;\n }\n const trimmed = resolvedValue.trim();\n if (!trimmed) {\n return;\n }\n\n onSubmitMessage(trimmed);\n\n if (!isControlled) {\n setInternalValue(\"\");\n onChange?.(\"\");\n }\n\n if (inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const BoundTextArea = renderSlot(textArea, CopilotChatInput.TextArea, {\n ref: inputRef,\n value: resolvedValue,\n onChange: handleChange,\n onKeyDown: handleKeyDown,\n autoFocus: autoFocus,\n className: twMerge(\n \"w-full py-3\",\n isExpanded ? \"px-5\" : \"pr-5\",\n ),\n });\n\n const isProcessing = mode !== \"transcribe\" && isRunning;\n const canSend = resolvedValue.trim().length > 0 && !!onSubmitMessage;\n const canStop = !!onStop;\n\n const handleSendButtonClick = () => {\n if (isProcessing) {\n onStop?.();\n return;\n }\n send();\n };\n\n const BoundAudioRecorder = renderSlot(audioRecorder, CopilotChatAudioRecorder, {\n ref: audioRecorderRef,\n });\n\n const BoundSendButton = renderSlot(sendButton, CopilotChatInput.SendButton, {\n onClick: handleSendButtonClick,\n disabled: isProcessing ? !canStop : !canSend,\n children: isProcessing && canStop ? <Square className=\"size-[18px] fill-current\" /> : undefined,\n });\n\n const BoundStartTranscribeButton = renderSlot(startTranscribeButton, CopilotChatInput.StartTranscribeButton, {\n onClick: onStartTranscribe,\n });\n\n const BoundCancelTranscribeButton = renderSlot(cancelTranscribeButton, CopilotChatInput.CancelTranscribeButton, {\n onClick: onCancelTranscribe,\n });\n\n const BoundFinishTranscribeButton = renderSlot(finishTranscribeButton, CopilotChatInput.FinishTranscribeButton, {\n onClick: onFinishTranscribe,\n });\n\n const BoundAddMenuButton = renderSlot(addMenuButton, CopilotChatInput.AddMenuButton, {\n disabled: mode === \"transcribe\",\n onAddFile,\n toolsMenu,\n });\n\n if (children) {\n const childProps = {\n textArea: BoundTextArea,\n audioRecorder: BoundAudioRecorder,\n sendButton: BoundSendButton,\n startTranscribeButton: BoundStartTranscribeButton,\n cancelTranscribeButton: BoundCancelTranscribeButton,\n finishTranscribeButton: BoundFinishTranscribeButton,\n addMenuButton: BoundAddMenuButton,\n onSubmitMessage,\n onStop,\n isRunning,\n onStartTranscribe,\n onCancelTranscribe,\n onFinishTranscribe,\n onAddFile,\n mode,\n toolsMenu,\n autoFocus,\n } as CopilotChatInputChildrenArgs;\n\n return <>{children(childProps)}</>;\n }\n\n const handleContainerClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // Don't focus if clicking on buttons or other interactive elements\n const target = e.target as HTMLElement;\n if (target.tagName !== \"BUTTON\" && !target.closest(\"button\") && inputRef.current && mode === \"input\") {\n inputRef.current.focus();\n }\n };\n\n const ensureMeasurements = useCallback(() => {\n const textarea = inputRef.current;\n if (!textarea) {\n return;\n }\n\n const previousValue = textarea.value;\n const previousHeight = textarea.style.height;\n\n textarea.style.height = \"auto\";\n\n const computedStyle = window.getComputedStyle(textarea);\n const paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;\n const paddingRight = parseFloat(computedStyle.paddingRight) || 0;\n const paddingTop = parseFloat(computedStyle.paddingTop) || 0;\n const paddingBottom = parseFloat(computedStyle.paddingBottom) || 0;\n\n textarea.value = \"\";\n const singleLineHeight = textarea.scrollHeight;\n textarea.value = previousValue;\n\n const contentHeight = singleLineHeight - paddingTop - paddingBottom;\n const maxHeight = contentHeight * 5 + paddingTop + paddingBottom;\n\n measurementsRef.current = {\n singleLineHeight,\n maxHeight,\n paddingLeft,\n paddingRight,\n };\n\n textarea.style.height = previousHeight;\n textarea.style.maxHeight = `${maxHeight}px`;\n }, []);\n\n const adjustTextareaHeight = useCallback(() => {\n const textarea = inputRef.current;\n if (!textarea) {\n return 0;\n }\n\n if (measurementsRef.current.singleLineHeight === 0) {\n ensureMeasurements();\n }\n\n const { maxHeight } = measurementsRef.current;\n if (maxHeight) {\n textarea.style.maxHeight = `${maxHeight}px`;\n }\n\n textarea.style.height = \"auto\";\n const scrollHeight = textarea.scrollHeight;\n if (maxHeight) {\n textarea.style.height = `${Math.min(scrollHeight, maxHeight)}px`;\n } else {\n textarea.style.height = `${scrollHeight}px`;\n }\n\n return scrollHeight;\n }, [ensureMeasurements]);\n\n const updateLayout = useCallback((nextLayout: \"compact\" | \"expanded\") => {\n setLayout((prev) => {\n if (prev === nextLayout) {\n return prev;\n }\n ignoreResizeRef.current = true;\n return nextLayout;\n });\n }, []);\n\n const evaluateLayout = useCallback(() => {\n if (mode !== \"input\") {\n updateLayout(\"compact\");\n return;\n }\n\n if (typeof window !== \"undefined\" && typeof window.matchMedia === \"function\") {\n const isMobileViewport = window.matchMedia(\"(max-width: 767px)\").matches;\n if (isMobileViewport) {\n ensureMeasurements();\n adjustTextareaHeight();\n updateLayout(\"expanded\");\n return;\n }\n }\n\n const textarea = inputRef.current;\n const grid = gridRef.current;\n const addContainer = addButtonContainerRef.current;\n const actionsContainer = actionsContainerRef.current;\n\n if (!textarea || !grid || !addContainer || !actionsContainer) {\n return;\n }\n\n if (measurementsRef.current.singleLineHeight === 0) {\n ensureMeasurements();\n }\n\n const scrollHeight = adjustTextareaHeight();\n const baseline = measurementsRef.current.singleLineHeight;\n const hasExplicitBreak = resolvedValue.includes(\"\\n\");\n const renderedMultiline = baseline > 0 ? scrollHeight > baseline + 1 : false;\n let shouldExpand = hasExplicitBreak || renderedMultiline;\n\n if (!shouldExpand) {\n const gridStyles = window.getComputedStyle(grid);\n const paddingLeft = parseFloat(gridStyles.paddingLeft) || 0;\n const paddingRight = parseFloat(gridStyles.paddingRight) || 0;\n const columnGap = parseFloat(gridStyles.columnGap) || 0;\n const gridAvailableWidth = grid.clientWidth - paddingLeft - paddingRight;\n\n if (gridAvailableWidth > 0) {\n const addWidth = addContainer.getBoundingClientRect().width;\n const actionsWidth = actionsContainer.getBoundingClientRect().width;\n const compactWidth = Math.max(gridAvailableWidth - addWidth - actionsWidth - columnGap * 2, 0);\n\n const canvas = measurementCanvasRef.current ?? document.createElement(\"canvas\");\n if (!measurementCanvasRef.current) {\n measurementCanvasRef.current = canvas;\n }\n\n const context = canvas.getContext(\"2d\");\n if (context) {\n const textareaStyles = window.getComputedStyle(textarea);\n const font =\n textareaStyles.font ||\n `${textareaStyles.fontStyle} ${textareaStyles.fontVariant} ${textareaStyles.fontWeight} ${textareaStyles.fontSize}/${textareaStyles.lineHeight} ${textareaStyles.fontFamily}`;\n context.font = font;\n\n const compactInnerWidth = Math.max(\n compactWidth - (measurementsRef.current.paddingLeft || 0) - (measurementsRef.current.paddingRight || 0),\n 0,\n );\n\n if (compactInnerWidth > 0) {\n const lines = resolvedValue.length > 0 ? resolvedValue.split(\"\\n\") : [\"\"];\n let longestWidth = 0;\n for (const line of lines) {\n const metrics = context.measureText(line || \" \");\n if (metrics.width > longestWidth) {\n longestWidth = metrics.width;\n }\n }\n\n if (longestWidth > compactInnerWidth) {\n shouldExpand = true;\n }\n }\n }\n }\n }\n\n const nextLayout = shouldExpand ? \"expanded\" : \"compact\";\n updateLayout(nextLayout);\n }, [adjustTextareaHeight, ensureMeasurements, mode, resolvedValue, updateLayout]);\n\n useLayoutEffect(() => {\n evaluateLayout();\n }, [evaluateLayout]);\n\n useEffect(() => {\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const textarea = inputRef.current;\n const grid = gridRef.current;\n const addContainer = addButtonContainerRef.current;\n const actionsContainer = actionsContainerRef.current;\n\n if (!textarea || !grid || !addContainer || !actionsContainer) {\n return;\n }\n\n const scheduleEvaluation = () => {\n if (ignoreResizeRef.current) {\n ignoreResizeRef.current = false;\n return;\n }\n\n if (typeof window === \"undefined\") {\n evaluateLayout();\n return;\n }\n\n if (resizeEvaluationRafRef.current !== null) {\n cancelAnimationFrame(resizeEvaluationRafRef.current);\n }\n\n resizeEvaluationRafRef.current = window.requestAnimationFrame(() => {\n resizeEvaluationRafRef.current = null;\n evaluateLayout();\n });\n };\n\n const observer = new ResizeObserver(() => {\n scheduleEvaluation();\n });\n\n observer.observe(grid);\n observer.observe(addContainer);\n observer.observe(actionsContainer);\n observer.observe(textarea);\n\n return () => {\n observer.disconnect();\n if (typeof window !== \"undefined\" && resizeEvaluationRafRef.current !== null) {\n cancelAnimationFrame(resizeEvaluationRafRef.current);\n resizeEvaluationRafRef.current = null;\n }\n };\n }, [evaluateLayout]);\n\n const slashMenuVisible = commandQuery !== null && commandItems.length > 0;\n\n useEffect(() => {\n if (!slashMenuVisible || slashHighlightIndex < 0) {\n return;\n }\n\n const active = slashMenuRef.current?.querySelector<HTMLElement>(\n `[data-slash-index=\"${slashHighlightIndex}\"]`,\n );\n active?.scrollIntoView({ block: \"nearest\" });\n }, [slashMenuVisible, slashHighlightIndex]);\n\n const slashMenu = slashMenuVisible ? (\n <div\n data-testid=\"copilot-slash-menu\"\n role=\"listbox\"\n aria-label=\"Slash commands\"\n ref={slashMenuRef}\n className=\"absolute bottom-full left-0 right-0 z-30 mb-2 max-h-64 overflow-y-auto rounded-lg border border-border bg-white shadow-lg dark:border-[#3a3a3a] dark:bg-[#1f1f1f]\"\n style={{ maxHeight: `${SLASH_MENU_MAX_VISIBLE_ITEMS * SLASH_MENU_ITEM_HEIGHT_PX}px` }}\n >\n {filteredCommands.length === 0 ? (\n <div className=\"px-3 py-2 text-sm text-muted-foreground\">No commands found</div>\n ) : (\n filteredCommands.map((item, index) => {\n const isActive = index === slashHighlightIndex;\n return (\n <button\n key={`${item.label}-${index}`}\n type=\"button\"\n role=\"option\"\n aria-selected={isActive}\n data-active={isActive ? \"true\" : undefined}\n data-slash-index={index}\n className={twMerge(\n \"w-full px-3 py-2 text-left text-sm transition-colors\",\n \"hover:bg-muted dark:hover:bg-[#2f2f2f]\",\n isActive ? \"bg-muted dark:bg-[#2f2f2f]\" : \"bg-transparent\",\n )}\n onMouseEnter={() => setSlashHighlightIndex(index)}\n onMouseDown={(event) => {\n event.preventDefault();\n runCommand(item);\n }}\n >\n {item.label}\n </button>\n );\n })\n )}\n </div>\n ) : null;\n\n return (\n <div\n className={twMerge(\n // Layout\n \"flex w-full flex-col items-center justify-center\",\n // Interaction\n \"cursor-text\",\n // Overflow and clipping\n \"overflow-visible bg-clip-padding contain-inline-size\",\n // Background\n \"bg-white dark:bg-[#303030]\",\n // Visual effects\n \"shadow-[0_4px_4px_0_#0000000a,0_0_1px_0_#0000009e] rounded-[28px]\",\n className,\n )}\n onClick={handleContainerClick}\n {...props}\n data-layout={isExpanded ? \"expanded\" : \"compact\"}\n >\n <div\n ref={gridRef}\n className={twMerge(\n \"grid w-full gap-x-3 gap-y-3 px-3 py-2\",\n isExpanded\n ? \"grid-cols-[auto_minmax(0,1fr)_auto] grid-rows-[auto_auto]\"\n : \"grid-cols-[auto_minmax(0,1fr)_auto] items-center\",\n )}\n data-layout={isExpanded ? \"expanded\" : \"compact\"}\n >\n <div\n ref={addButtonContainerRef}\n className={twMerge(\n \"flex items-center\",\n isExpanded ? \"row-start-2\" : \"row-start-1\",\n \"col-start-1\",\n )}\n >\n {BoundAddMenuButton}\n </div>\n <div\n className={twMerge(\n \"relative flex min-w-0 flex-col\",\n isExpanded ? \"col-span-3 row-start-1\" : \"col-start-2 row-start-1\",\n )}\n >\n {mode === \"transcribe\" ? (\n BoundAudioRecorder\n ) : (\n <>\n {BoundTextArea}\n {slashMenu}\n </>\n )}\n </div>\n <div\n ref={actionsContainerRef}\n className={twMerge(\n \"flex items-center justify-end gap-2\",\n isExpanded ? \"col-start-3 row-start-2\" : \"col-start-3 row-start-1\",\n )}\n >\n {mode === \"transcribe\" ? (\n <>\n {onCancelTranscribe && BoundCancelTranscribeButton}\n {onFinishTranscribe && BoundFinishTranscribeButton}\n </>\n ) : (\n <>\n {onStartTranscribe && BoundStartTranscribeButton}\n {BoundSendButton}\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace CopilotChatInput {\n export const SendButton: React.FC<React.ButtonHTMLAttributes<HTMLButtonElement>> = ({ className, children, ...props }) => (\n <div className=\"mr-[10px]\">\n <Button\n type=\"button\"\n variant=\"chatInputToolbarPrimary\"\n size=\"chatInputToolbarIcon\"\n className={className}\n {...props}\n >\n {children ?? <ArrowUp className=\"size-[18px]\" />}\n </Button>\n </div>\n );\n\n export const ToolbarButton: React.FC<\n React.ButtonHTMLAttributes<HTMLButtonElement> & {\n icon: React.ReactNode;\n labelKey: keyof CopilotChatLabels;\n defaultClassName?: string;\n }\n > = ({ icon, labelKey, defaultClassName, className, ...props }) => {\n const config = useCopilotChatConfiguration();\n const labels = config?.labels ?? CopilotChatDefaultLabels;\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"chatInputToolbarSecondary\"\n size=\"chatInputToolbarIcon\"\n className={twMerge(defaultClassName, className)}\n {...props}\n >\n {icon}\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n <p>{labels[labelKey]}</p>\n </TooltipContent>\n </Tooltip>\n );\n };\n\n export const StartTranscribeButton: React.FC<React.ButtonHTMLAttributes<HTMLButtonElement>> = (props) => (\n <ToolbarButton\n icon={<Mic className=\"size-[18px]\" />}\n labelKey=\"chatInputToolbarStartTranscribeButtonLabel\"\n defaultClassName=\"mr-2\"\n {...props}\n />\n );\n\n export const CancelTranscribeButton: React.FC<React.ButtonHTMLAttributes<HTMLButtonElement>> = (props) => (\n <ToolbarButton\n icon={<X className=\"size-[18px]\" />}\n labelKey=\"chatInputToolbarCancelTranscribeButtonLabel\"\n defaultClassName=\"mr-2\"\n {...props}\n />\n );\n\n export const FinishTranscribeButton: React.FC<React.ButtonHTMLAttributes<HTMLButtonElement>> = (props) => (\n <ToolbarButton\n icon={<Check className=\"size-[18px]\" />}\n labelKey=\"chatInputToolbarFinishTranscribeButtonLabel\"\n defaultClassName=\"mr-[10px]\"\n {...props}\n />\n );\n\n export const AddMenuButton: React.FC<\n React.ButtonHTMLAttributes<HTMLButtonElement> & {\n toolsMenu?: (ToolsMenuItem | \"-\")[];\n onAddFile?: () => void;\n }\n > = ({ className, toolsMenu, onAddFile, disabled, ...props }) => {\n const config = useCopilotChatConfiguration();\n const labels = config?.labels ?? CopilotChatDefaultLabels;\n\n const menuItems = useMemo<(ToolsMenuItem | \"-\")[]>(() => {\n const items: (ToolsMenuItem | \"-\")[] = [];\n\n if (onAddFile) {\n items.push({\n label: labels.chatInputToolbarAddButtonLabel,\n action: onAddFile,\n });\n }\n\n if (toolsMenu && toolsMenu.length > 0) {\n if (items.length > 0) {\n items.push(\"-\");\n }\n\n for (const item of toolsMenu) {\n if (item === \"-\") {\n if (items.length === 0 || items[items.length - 1] === \"-\") {\n continue;\n }\n items.push(item);\n } else {\n items.push(item);\n }\n }\n\n while (items.length > 0 && items[items.length - 1] === \"-\") {\n items.pop();\n }\n }\n\n return items;\n }, [onAddFile, toolsMenu, labels.chatInputToolbarAddButtonLabel]);\n\n const renderMenuItems = useCallback(\n (items: (ToolsMenuItem | \"-\")[]): React.ReactNode =>\n items.map((item, index) => {\n if (item === \"-\") {\n return <DropdownMenuSeparator key={`separator-${index}`} />;\n }\n\n if (item.items && item.items.length > 0) {\n return (\n <DropdownMenuSub key={`group-${index}`}>\n <DropdownMenuSubTrigger>{item.label}</DropdownMenuSubTrigger>\n <DropdownMenuSubContent>{renderMenuItems(item.items)}</DropdownMenuSubContent>\n </DropdownMenuSub>\n );\n }\n\n return (\n <DropdownMenuItem key={`item-${index}`} onClick={item.action}>\n {item.label}\n </DropdownMenuItem>\n );\n }),\n [],\n );\n\n const hasMenuItems = menuItems.length > 0;\n const isDisabled = disabled || !hasMenuItems;\n\n return (\n <DropdownMenu>\n <Tooltip>\n <TooltipTrigger asChild>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n variant=\"chatInputToolbarSecondary\"\n size=\"chatInputToolbarIcon\"\n className={twMerge(\"ml-1\", className)}\n disabled={isDisabled}\n {...props}\n >\n <Plus className=\"size-[20px]\" />\n </Button>\n </DropdownMenuTrigger>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n <p className=\"flex items-center gap-1 text-xs font-medium\">\n <span>Add files and more</span>\n <code className=\"rounded bg-[#4a4a4a] px-1 py-[1px] font-mono text-[11px] text-white dark:bg-[#e0e0e0] dark:text-black\">/</code>\n </p>\n </TooltipContent>\n </Tooltip>\n {hasMenuItems && (\n <DropdownMenuContent side=\"top\" align=\"start\">\n {renderMenuItems(menuItems)}\n </DropdownMenuContent>\n )}\n </DropdownMenu>\n );\n };\n\n export type TextAreaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\n export const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(function TextArea(\n { style, className, autoFocus, ...props },\n ref,\n ) {\n const internalTextareaRef = useRef<HTMLTextAreaElement>(null);\n const config = useCopilotChatConfiguration();\n const labels = config?.labels ?? CopilotChatDefaultLabels;\n\n useImperativeHandle(ref, () => internalTextareaRef.current as HTMLTextAreaElement);\n\n // Auto-scroll input into view on mobile when focused\n useEffect(() => {\n const textarea = internalTextareaRef.current;\n if (!textarea) return;\n\n const handleFocus = () => {\n // Small delay to let the keyboard start appearing\n setTimeout(() => {\n textarea.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n }, 300);\n };\n\n textarea.addEventListener(\"focus\", handleFocus);\n return () => textarea.removeEventListener(\"focus\", handleFocus);\n }, []);\n\n useEffect(() => {\n if (autoFocus) {\n internalTextareaRef.current?.focus();\n }\n }, [autoFocus]);\n\n return (\n <textarea\n ref={internalTextareaRef}\n {...props}\n style={{\n overflow: \"auto\",\n resize: \"none\",\n ...style,\n }}\n placeholder={labels.chatInputPlaceholder}\n className={twMerge(\n \"bg-transparent outline-none antialiased font-regular leading-relaxed text-[16px] placeholder:text-[#00000077] dark:placeholder:text-[#fffc]\",\n className,\n )}\n rows={1}\n />\n );\n });\n\n export const AudioRecorder = CopilotChatAudioRecorder;\n}\n\nCopilotChatInput.TextArea.displayName = \"CopilotChatInput.TextArea\";\nCopilotChatInput.SendButton.displayName = \"CopilotChatInput.SendButton\";\nCopilotChatInput.ToolbarButton.displayName = \"CopilotChatInput.ToolbarButton\";\nCopilotChatInput.StartTranscribeButton.displayName = \"CopilotChatInput.StartTranscribeButton\";\nCopilotChatInput.CancelTranscribeButton.displayName = \"CopilotChatInput.CancelTranscribeButton\";\nCopilotChatInput.FinishTranscribeButton.displayName = \"CopilotChatInput.FinishTranscribeButton\";\nCopilotChatInput.AddMenuButton.displayName = \"CopilotChatInput.AddMenuButton\";\n\nexport default CopilotChatInput;\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","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 cursor-pointer\",\n link: \"text-primary underline-offset-4 hover:underline\",\n assistantMessageToolbarButton: [\n \"cursor-pointer\",\n // Background and text\n \"p-0 text-[rgb(93,93,93)] hover:bg-[#E8E8E8]\",\n // Dark mode - lighter gray for better contrast\n \"dark:text-[rgb(243,243,243)] dark:hover:bg-[#303030]\",\n // Shape and sizing\n \"h-8 w-8\",\n // Interactions\n \"transition-colors\",\n // Hover states\n \"hover:text-[rgb(93,93,93)]\",\n \"dark:hover:text-[rgb(243,243,243)]\",\n ],\n chatInputToolbarPrimary: [\n \"cursor-pointer\",\n // Background and text\n \"bg-black text-white\",\n // Dark mode\n \"dark:bg-white dark:text-black dark:focus-visible:outline-white\",\n // Shape and sizing\n \"rounded-full\",\n // Interactions\n \"transition-colors\",\n // Focus states\n \"focus:outline-none\",\n // Hover states\n \"hover:opacity-70 disabled:hover:opacity-100\",\n // Disabled states\n \"disabled:cursor-not-allowed disabled:bg-[#00000014] disabled:text-[rgb(13,13,13)]\",\n \"dark:disabled:bg-[#454545] dark:disabled:text-white \",\n ],\n chatInputToolbarSecondary: [\n \"cursor-pointer\",\n // Background and text\n \"bg-transparent text-[#444444]\",\n // Dark mode\n \"dark:text-white dark:border-[#404040]\",\n // Shape and sizing\n \"rounded-full\",\n // Interactions\n \"transition-colors\",\n // Focus states\n \"focus:outline-none\",\n // Hover states\n \"hover:bg-[#f8f8f8] hover:text-[#333333]\",\n \"dark:hover:bg-[#404040] dark:hover:text-[#FFFFFF]\",\n // Disabled states\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"disabled:hover:bg-transparent disabled:hover:text-[#444444]\",\n \"dark:disabled:hover:bg-transparent dark:disabled:hover:text-[#CCCCCC]\",\n ],\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n chatInputToolbarIcon: [\n // Shape and sizing\n \"h-9 w-9 rounded-full\",\n ],\n chatInputToolbarIconLabel: [\n // Shape and sizing\n \"h-9 px-3 rounded-full\",\n // Layout\n \"gap-2\",\n // Typography\n \"font-normal\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import { useRef, useEffect, useImperativeHandle, forwardRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\n/** Finite-state machine for every recorder implementation */\nexport type AudioRecorderState = \"idle\" | \"recording\" | \"processing\";\n\n/** Error subclass so callers can `instanceof`-guard recorder failures */\nexport class AudioRecorderError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AudioRecorderError\";\n }\n}\n\nexport const CopilotChatAudioRecorder = forwardRef<\n any,\n React.HTMLAttributes<HTMLDivElement>\n>((props, ref) => {\n const { className, ...divProps } = props;\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n // Generate fake waveform that moves with time\n const getLoudness = (n: number): number[] => {\n const elapsed = Date.now() / 1000; // Use current timestamp directly\n const samples: number[] = [];\n\n for (let i = 0; i < n; i++) {\n // Create a position that moves from left to right over time\n const position = (i / n) * 10 + elapsed * 0.5; // Scroll speed (slower)\n\n // Generate waveform using multiple sine waves for realism\n const wave1 = Math.sin(position * 2) * 0.3;\n const wave2 = Math.sin(position * 5 + elapsed) * 0.2;\n const wave3 = Math.sin(position * 0.5 + elapsed * 0.3) * 0.4;\n\n // Add some randomness for natural variation\n const noise = (Math.random() - 0.5) * 0.1;\n\n // Combine waves and add envelope for realistic amplitude variation\n const envelope = Math.sin(elapsed * 0.7) * 0.5 + 0.5; // Slow amplitude modulation\n let amplitude = (wave1 + wave2 + wave3 + noise) * envelope;\n\n // Clamp to 0-1 range\n amplitude = Math.max(0, Math.min(1, amplitude * 0.5 + 0.3));\n\n samples.push(amplitude);\n }\n\n return samples;\n };\n\n // No setup needed - stub implementation\n\n // Canvas rendering with 60fps animation\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n let animationId: number;\n\n const draw = () => {\n const rect = canvas.getBoundingClientRect();\n const dpr = window.devicePixelRatio || 1;\n\n // Update canvas dimensions if container resized\n if (\n canvas.width !== rect.width * dpr ||\n canvas.height !== rect.height * dpr\n ) {\n canvas.width = rect.width * dpr;\n canvas.height = rect.height * dpr;\n ctx.scale(dpr, dpr);\n ctx.imageSmoothingEnabled = false;\n }\n\n // Configuration\n const barWidth = 2;\n const minHeight = 2;\n const maxHeight = 20;\n const gap = 2;\n const numSamples = Math.ceil(rect.width / (barWidth + gap));\n\n // Get loudness data\n const loudnessData = getLoudness(numSamples);\n\n // Clear canvas\n ctx.clearRect(0, 0, rect.width, rect.height);\n\n // Get current foreground color\n const computedStyle = getComputedStyle(canvas);\n const currentForeground = computedStyle.color;\n\n // Draw bars\n ctx.fillStyle = currentForeground;\n const centerY = rect.height / 2;\n\n for (let i = 0; i < loudnessData.length; i++) {\n const sample = loudnessData[i] ?? 0;\n const barHeight = Math.round(\n sample * (maxHeight - minHeight) + minHeight\n );\n const x = Math.round(i * (barWidth + gap));\n const y = Math.round(centerY - barHeight / 2);\n\n ctx.fillRect(x, y, barWidth, barHeight);\n }\n\n animationId = requestAnimationFrame(draw);\n };\n\n draw();\n\n return () => {\n if (animationId) {\n cancelAnimationFrame(animationId);\n }\n };\n }, []);\n\n // Expose AudioRecorder API\n useImperativeHandle(\n ref,\n () => ({\n get state() {\n return \"idle\" as AudioRecorderState;\n },\n start: async () => {\n // Stub implementation - no actual recording\n },\n stop: () =>\n new Promise<Blob>((resolve) => {\n // Stub implementation - return empty blob\n const emptyBlob = new Blob([], { type: \"audio/webm\" });\n resolve(emptyBlob);\n }),\n dispose: () => {\n // No cleanup needed\n },\n }),\n []\n );\n\n return (\n <div className={twMerge(\"h-[44px] w-full px-5\", className)} {...divProps}>\n <canvas\n ref={canvasRef}\n className=\"w-full h-full\"\n style={{ imageRendering: \"pixelated\" }}\n />\n </div>\n );\n});\n\nCopilotChatAudioRecorder.displayName = \"WebAudioRecorder\";\n","import React from \"react\";\n\n// /** Utility: Create a component type with specific props omitted */\n// export type OmitSlotProps<\n// C extends React.ComponentType<any>,\n// K extends keyof React.ComponentProps<C>,\n// > = React.ComponentType<Omit<React.ComponentProps<C>, K>>;\n\n/** Existing union (unchanged) */\nexport type SlotValue<C extends React.ComponentType<any>> =\n | C\n | string\n | Partial<React.ComponentProps<C>>;\n\n/** Utility: concrete React elements for every slot */\ntype SlotElements<S> = { [K in keyof S]: React.ReactElement };\n\nexport type WithSlots<\n S extends Record<string, React.ComponentType<any>>,\n Rest = {},\n> = {\n /** Per‑slot overrides */\n [K in keyof S]?: SlotValue<S[K]>;\n} & {\n children?: (props: SlotElements<S> & Rest) => React.ReactNode;\n} & Omit<Rest, \"children\">;\n\nexport function renderSlot<\n C extends React.ComponentType<any>,\n P = React.ComponentProps<C>,\n>(\n slot: SlotValue<C> | undefined,\n DefaultComponent: C,\n props: P\n): React.ReactElement {\n if (typeof slot === \"string\") {\n return React.createElement(DefaultComponent, {\n ...(props as P),\n className: slot,\n });\n }\n if (typeof slot === \"function\") {\n const Comp = slot as C;\n return React.createElement(Comp, props as P);\n }\n\n if (slot && typeof slot === \"object\" && !React.isValidElement(slot)) {\n return React.createElement(DefaultComponent, {\n ...(props as P),\n ...slot,\n });\n }\n\n return React.createElement(DefaultComponent, props as P);\n}\n"],"mappings":"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","names":["import_react","import_tailwind_merge","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_tailwind_merge","import_jsx_runtime","import_react","React","import_jsx_runtime","value","CopilotChatInput","TextArea"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CopilotChatInput,
|
|
3
|
+
CopilotChatInput_default
|
|
4
|
+
} from "../../chunk-KCVDFZJX.mjs";
|
|
5
|
+
import "../../chunk-4UDBR75C.mjs";
|
|
6
|
+
import "../../chunk-TAUOEJH2.mjs";
|
|
7
|
+
import "../../chunk-JWOIINVV.mjs";
|
|
8
|
+
import "../../chunk-VVAXSF3M.mjs";
|
|
9
|
+
import "../../chunk-FIBK3DYE.mjs";
|
|
10
|
+
import "../../chunk-XO4IRKSC.mjs";
|
|
11
|
+
import "../../chunk-4XJK5IVQ.mjs";
|
|
12
|
+
export {
|
|
13
|
+
CopilotChatInput,
|
|
14
|
+
CopilotChatInput_default as default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=CopilotChatInput.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { WithSlots } from '../../lib/slots.mjs';
|
|
3
|
+
import CopilotChatAssistantMessage from './CopilotChatAssistantMessage.mjs';
|
|
4
|
+
import CopilotChatUserMessage from './CopilotChatUserMessage.mjs';
|
|
5
|
+
import { Message } from '@ag-ui/core';
|
|
6
|
+
import 'react';
|
|
7
|
+
import 'streamdown';
|
|
8
|
+
import './CopilotChatToolCallsView.mjs';
|
|
9
|
+
|
|
10
|
+
type CopilotChatMessageViewProps = Omit<WithSlots<{
|
|
11
|
+
assistantMessage: typeof CopilotChatAssistantMessage;
|
|
12
|
+
userMessage: typeof CopilotChatUserMessage;
|
|
13
|
+
cursor: typeof CopilotChatMessageView.Cursor;
|
|
14
|
+
}, {
|
|
15
|
+
isRunning?: boolean;
|
|
16
|
+
messages?: Message[];
|
|
17
|
+
} & React.HTMLAttributes<HTMLDivElement>>, "children"> & {
|
|
18
|
+
children?: (props: {
|
|
19
|
+
isRunning: boolean;
|
|
20
|
+
messages: Message[];
|
|
21
|
+
messageElements: React.ReactElement[];
|
|
22
|
+
}) => React.ReactElement;
|
|
23
|
+
};
|
|
24
|
+
declare function CopilotChatMessageView({ messages, assistantMessage, userMessage, cursor, isRunning, children, className, ...props }: CopilotChatMessageViewProps): react_jsx_runtime.JSX.Element;
|
|
25
|
+
declare namespace CopilotChatMessageView {
|
|
26
|
+
var Cursor: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { CopilotChatMessageView, type CopilotChatMessageViewProps, CopilotChatMessageView as default };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { WithSlots } from '../../lib/slots.js';
|
|
3
|
+
import CopilotChatAssistantMessage from './CopilotChatAssistantMessage.js';
|
|
4
|
+
import CopilotChatUserMessage from './CopilotChatUserMessage.js';
|
|
5
|
+
import { Message } from '@ag-ui/core';
|
|
6
|
+
import 'react';
|
|
7
|
+
import 'streamdown';
|
|
8
|
+
import './CopilotChatToolCallsView.js';
|
|
9
|
+
|
|
10
|
+
type CopilotChatMessageViewProps = Omit<WithSlots<{
|
|
11
|
+
assistantMessage: typeof CopilotChatAssistantMessage;
|
|
12
|
+
userMessage: typeof CopilotChatUserMessage;
|
|
13
|
+
cursor: typeof CopilotChatMessageView.Cursor;
|
|
14
|
+
}, {
|
|
15
|
+
isRunning?: boolean;
|
|
16
|
+
messages?: Message[];
|
|
17
|
+
} & React.HTMLAttributes<HTMLDivElement>>, "children"> & {
|
|
18
|
+
children?: (props: {
|
|
19
|
+
isRunning: boolean;
|
|
20
|
+
messages: Message[];
|
|
21
|
+
messageElements: React.ReactElement[];
|
|
22
|
+
}) => React.ReactElement;
|
|
23
|
+
};
|
|
24
|
+
declare function CopilotChatMessageView({ messages, assistantMessage, userMessage, cursor, isRunning, children, className, ...props }: CopilotChatMessageViewProps): react_jsx_runtime.JSX.Element;
|
|
25
|
+
declare namespace CopilotChatMessageView {
|
|
26
|
+
var Cursor: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { CopilotChatMessageView, type CopilotChatMessageViewProps, CopilotChatMessageView as default };
|