@copilotkit/react-ui 1.8.0-next.6 → 1.8.0-next.8
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/CHANGELOG.md +19 -0
- package/dist/{chunk-FBYETUFL.mjs → chunk-5M7ODWKH.mjs} +6 -12
- package/dist/chunk-5M7ODWKH.mjs.map +1 -0
- package/dist/{chunk-GBXUOB6L.mjs → chunk-7BXD65QV.mjs} +3 -3
- package/dist/{chunk-6H7IQRIU.mjs → chunk-DKYAA4DM.mjs} +2 -2
- package/dist/{chunk-DFHFPZQD.mjs → chunk-FGVMRZ5D.mjs} +9 -16
- package/dist/chunk-FGVMRZ5D.mjs.map +1 -0
- package/dist/{chunk-Z6YOBQUJ.mjs → chunk-HGA4N4ME.mjs} +8 -13
- package/dist/chunk-HGA4N4ME.mjs.map +1 -0
- package/dist/{chunk-FFNESJSG.mjs → chunk-N5QWMFFT.mjs} +2 -2
- package/dist/{chunk-YC4NBUGE.mjs → chunk-NRA3CFEE.mjs} +3 -3
- package/dist/chunk-NRA3CFEE.mjs.map +1 -0
- package/dist/{chunk-CGVOCLHN.mjs → chunk-P7S3E5UW.mjs} +2 -2
- package/dist/{chunk-OTPAZXVR.mjs → chunk-Q5V6S67N.mjs} +17 -6
- package/dist/chunk-Q5V6S67N.mjs.map +1 -0
- package/dist/{chunk-LYHZXHTJ.mjs → chunk-SNLHKLW3.mjs} +2 -2
- package/dist/{chunk-5JY5QJ2W.mjs → chunk-UN2E3HCK.mjs} +9 -3
- package/dist/chunk-UN2E3HCK.mjs.map +1 -0
- package/dist/{chunk-QS7UFQFD.mjs → chunk-Y5RNSFAD.mjs} +3 -3
- package/dist/{chunk-VC4NO5QZ.mjs → chunk-YOEL33HG.mjs} +2 -2
- package/dist/{chunk-GJME6MK4.mjs → chunk-ZY25LVYR.mjs} +2 -2
- package/dist/components/chat/Button.js.map +1 -1
- package/dist/components/chat/Button.mjs +2 -2
- package/dist/components/chat/Chat.d.ts +2 -11
- package/dist/components/chat/Chat.js +67 -76
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +6 -7
- package/dist/components/chat/ChatContext.d.ts +15 -0
- package/dist/components/chat/ChatContext.js +67 -1
- package/dist/components/chat/ChatContext.js.map +1 -1
- package/dist/components/chat/ChatContext.mjs +1 -1
- package/dist/components/chat/Header.js +18 -7
- package/dist/components/chat/Header.js.map +1 -1
- package/dist/components/chat/Header.mjs +5 -5
- package/dist/components/chat/Input.js.map +1 -1
- package/dist/components/chat/Input.mjs +2 -2
- package/dist/components/chat/Messages.js.map +1 -1
- package/dist/components/chat/Messages.mjs +2 -2
- package/dist/components/chat/Modal.d.ts +1 -1
- package/dist/components/chat/Modal.js +92 -94
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +13 -14
- package/dist/components/chat/Popup.js +94 -96
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +14 -15
- package/dist/components/chat/Sidebar.js +94 -96
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +14 -15
- package/dist/components/chat/Window.js.map +1 -1
- package/dist/components/chat/Window.mjs +2 -2
- package/dist/components/chat/index.d.ts +1 -1
- package/dist/components/chat/index.js +96 -98
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +17 -18
- package/dist/components/chat/messages/AssistantMessage.js +4 -67
- package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
- package/dist/components/chat/messages/AssistantMessage.mjs +2 -2
- package/dist/components/chat/props.d.ts +1 -5
- package/dist/components/chat/props.js.map +1 -1
- package/dist/components/dev-console/console.js +18 -7
- package/dist/components/dev-console/console.js.map +1 -1
- package/dist/components/dev-console/console.mjs +3 -3
- package/dist/components/dev-console/icons.js +16 -5
- package/dist/components/dev-console/icons.js.map +1 -1
- package/dist/components/dev-console/icons.mjs +1 -1
- package/dist/components/dev-console/index.js +18 -7
- package/dist/components/dev-console/index.js.map +1 -1
- package/dist/components/dev-console/index.mjs +3 -3
- package/dist/components/help-modal/index.js +2 -2
- package/dist/components/help-modal/index.js.map +1 -1
- package/dist/components/help-modal/index.mjs +1 -1
- package/dist/components/help-modal/modal.js +2 -2
- package/dist/components/help-modal/modal.js.map +1 -1
- package/dist/components/help-modal/modal.mjs +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +96 -98
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +17 -18
- package/dist/index.css +39 -34
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +96 -98
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -19
- package/dist/types/css.d.ts +2 -0
- package/dist/types/css.js.map +1 -1
- package/package.json +4 -4
- package/src/components/chat/Chat.tsx +0 -16
- package/src/components/chat/ChatContext.tsx +25 -0
- package/src/components/chat/Modal.tsx +0 -6
- package/src/components/chat/messages/AssistantMessage.tsx +4 -5
- package/src/components/chat/props.ts +0 -5
- package/src/components/dev-console/icons.tsx +9 -2
- package/src/components/help-modal/modal.tsx +2 -2
- package/src/css/colors.css +3 -0
- package/src/css/console.css +44 -9
- package/src/styles.css +0 -1
- package/src/types/css.ts +2 -0
- package/dist/chunk-5JY5QJ2W.mjs.map +0 -1
- package/dist/chunk-DFHFPZQD.mjs.map +0 -1
- package/dist/chunk-FBYETUFL.mjs.map +0 -1
- package/dist/chunk-OTPAZXVR.mjs.map +0 -1
- package/dist/chunk-UZTZXMYS.mjs +0 -18
- package/dist/chunk-UZTZXMYS.mjs.map +0 -1
- package/dist/chunk-YC4NBUGE.mjs.map +0 -1
- package/dist/chunk-Z6YOBQUJ.mjs.map +0 -1
- package/dist/components/chat/Response.d.ts +0 -7
- package/dist/components/chat/Response.js +0 -64
- package/dist/components/chat/Response.js.map +0 -1
- package/dist/components/chat/Response.mjs +0 -10
- package/dist/components/chat/Response.mjs.map +0 -1
- package/src/components/chat/Response.tsx +0 -12
- package/src/css/response.css +0 -26
- /package/dist/{chunk-GBXUOB6L.mjs.map → chunk-7BXD65QV.mjs.map} +0 -0
- /package/dist/{chunk-6H7IQRIU.mjs.map → chunk-DKYAA4DM.mjs.map} +0 -0
- /package/dist/{chunk-FFNESJSG.mjs.map → chunk-N5QWMFFT.mjs.map} +0 -0
- /package/dist/{chunk-CGVOCLHN.mjs.map → chunk-P7S3E5UW.mjs.map} +0 -0
- /package/dist/{chunk-LYHZXHTJ.mjs.map → chunk-SNLHKLW3.mjs.map} +0 -0
- /package/dist/{chunk-QS7UFQFD.mjs.map → chunk-Y5RNSFAD.mjs.map} +0 -0
- /package/dist/{chunk-VC4NO5QZ.mjs.map → chunk-YOEL33HG.mjs.map} +0 -0
- /package/dist/{chunk-GJME6MK4.mjs.map → chunk-ZY25LVYR.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/chat/Messages.tsx","../../../src/components/chat/ChatContext.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { Message, ResultMessage, TextMessage, Role } from \"@copilotkit/runtime-client-gql\";\nimport { useLangGraphInterruptRender } from \"@copilotkit/react-core\";\n\nexport const Messages = ({\n messages,\n inProgress,\n children,\n RenderTextMessage,\n RenderActionExecutionMessage,\n RenderAgentStateMessage,\n RenderResultMessage,\n AssistantMessage,\n UserMessage,\n onRegenerate,\n onCopy,\n onThumbsUp,\n onThumbsDown,\n}: MessagesProps) => {\n const context = useChatContext();\n const initialMessages = useMemo(\n () => makeInitialMessages(context.labels.initial),\n [context.labels.initial],\n );\n\n messages = [...initialMessages, ...messages];\n\n const actionResults: Record<string, string> = {};\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i].isActionExecutionMessage()) {\n const id = messages[i].id;\n const resultMessage: ResultMessage | undefined = messages.find(\n (message) => message.isResultMessage() && message.actionExecutionId === id,\n ) as ResultMessage | undefined;\n\n if (resultMessage) {\n actionResults[id] = ResultMessage.decodeResult(resultMessage.result || \"\");\n }\n }\n }\n\n const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);\n\n const interrupt = useLangGraphInterruptRender();\n\n return (\n <div className=\"copilotKitMessages\" ref={messagesContainerRef}>\n <div className=\"copilotKitMessagesContainer\">\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1;\n\n if (message.isTextMessage()) {\n return (\n <RenderTextMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n onRegenerate={onRegenerate}\n onCopy={onCopy}\n onThumbsUp={onThumbsUp}\n onThumbsDown={onThumbsDown}\n />\n );\n } else if (message.isActionExecutionMessage()) {\n return (\n <RenderActionExecutionMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n actionResult={actionResults[message.id]}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isAgentStateMessage()) {\n return (\n <RenderAgentStateMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isResultMessage()) {\n return (\n <RenderResultMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n }\n })}\n {interrupt}\n </div>\n <footer className=\"copilotKitMessagesFooter\" ref={messagesEndRef}>\n {children}\n </footer>\n </div>\n );\n};\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = [];\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial);\n } else {\n initialArray.push(initial);\n }\n }\n\n return initialArray.map(\n (message) =>\n new TextMessage({\n role: Role.Assistant,\n content: message,\n }),\n );\n}\nexport function useScrollToBottom(messages: any[]) {\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const messagesContainerRef = useRef<HTMLDivElement | null>(null);\n const isProgrammaticScrollRef = useRef(false);\n const isUserScrollUpRef = useRef(false);\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n isProgrammaticScrollRef.current = true;\n messagesEndRef.current.scrollIntoView({\n behavior: \"auto\",\n });\n }\n };\n\n const handleScroll = () => {\n if (isProgrammaticScrollRef.current) {\n isProgrammaticScrollRef.current = false;\n return;\n }\n\n if (messagesContainerRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;\n isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;\n }\n };\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (container) {\n container.addEventListener(\"scroll\", handleScroll);\n }\n return () => {\n if (container) {\n container.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, []);\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (!container) {\n return;\n }\n\n const mutationObserver = new MutationObserver(() => {\n if (!isUserScrollUpRef.current) {\n scrollToBottom();\n }\n });\n\n mutationObserver.observe(container, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n\n return () => {\n mutationObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n isUserScrollUpRef.current = false;\n scrollToBottom();\n }, [messages.filter((m) => m.isTextMessage() && m.role === Role.User).length]);\n\n return { messagesEndRef, messagesContainerRef };\n}\n","import React, { useMemo, useState } from \"react\";\nimport * as DefaultIcons from \"./Icons\";\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode;\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode;\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode;\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode;\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode;\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode;\n\n /**\n * The icons to use for push to talk.\n * @default <PushToTalkIcon />\n */\n\n pushToTalkIcon?: React.ReactNode;\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[];\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string;\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string;\n\n /**\n * The message to display when an error occurs.\n * @default \"❌ An error occurred. Please try again.\"\n */\n error?: string;\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string;\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string;\n\n /**\n * The label for the copy button.\n * @default \"Copy to clipboard\"\n */\n copyToClipboard?: string;\n\n /**\n * The label for the thumbs up button.\n * @default \"Thumbs up\"\n */\n thumbsUp?: string;\n\n /**\n * The label for the thumbs down button.\n * @default \"Thumbs down\"\n */\n thumbsDown?: string;\n\n /**\n * The text to display when content is copied.\n * @default \"Copied!\"\n */\n copied?: string;\n}\n\ninterface ChatContext {\n labels: Required<CopilotChatLabels>;\n icons: Required<CopilotChatIcons>;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const ChatContext = React.createContext<ChatContext | undefined>(undefined);\n\nexport function useChatContext(): ChatContext {\n const context = React.useContext(ChatContext);\n if (context === undefined) {\n throw new Error(\n \"Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?\",\n );\n }\n return context;\n}\n\ninterface ChatContextProps {\n // temperature?: number;\n // instructions?: string;\n // maxFeedback?: number;\n labels?: CopilotChatLabels;\n icons?: CopilotChatIcons;\n children?: React.ReactNode;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const ChatContextProvider = ({\n // temperature,\n // instructions,\n // maxFeedback,\n labels,\n icons,\n children,\n open,\n setOpen,\n}: ChatContextProps) => {\n const memoizedLabels = useMemo(\n () => ({\n ...{\n initial: \"\",\n title: \"CopilotKit\",\n placeholder: \"Type a message...\",\n error: \"❌ An error occurred. Please try again.\",\n stopGenerating: \"Stop generating\",\n regenerateResponse: \"Regenerate response\",\n copyToClipboard: \"Copy to clipboard\",\n thumbsUp: \"Thumbs up\",\n thumbsDown: \"Thumbs down\",\n copied: \"Copied!\",\n },\n ...labels,\n }),\n [labels],\n );\n\n const memoizedIcons = useMemo(\n () => ({\n ...{\n openIcon: DefaultIcons.OpenIcon,\n closeIcon: DefaultIcons.CloseIcon,\n headerCloseIcon: DefaultIcons.HeaderCloseIcon,\n sendIcon: DefaultIcons.SendIcon,\n activityIcon: DefaultIcons.ActivityIcon,\n spinnerIcon: DefaultIcons.SpinnerIcon,\n stopIcon: DefaultIcons.StopIcon,\n regenerateIcon: DefaultIcons.RegenerateIcon,\n pushToTalkIcon: DefaultIcons.MicrophoneIcon,\n },\n ...icons,\n }),\n [icons],\n );\n\n const context = useMemo(\n () => ({\n labels: memoizedLabels,\n icons: memoizedIcons,\n open,\n setOpen,\n }),\n [memoizedLabels, memoizedIcons, open, setOpen],\n );\n\n return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;\n};\n"],"mappings":"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","names":["import_react","React","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/chat/Messages.tsx","../../../src/components/chat/ChatContext.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { Message, ResultMessage, TextMessage, Role } from \"@copilotkit/runtime-client-gql\";\nimport { useLangGraphInterruptRender } from \"@copilotkit/react-core\";\n\nexport const Messages = ({\n messages,\n inProgress,\n children,\n RenderTextMessage,\n RenderActionExecutionMessage,\n RenderAgentStateMessage,\n RenderResultMessage,\n AssistantMessage,\n UserMessage,\n onRegenerate,\n onCopy,\n onThumbsUp,\n onThumbsDown,\n}: MessagesProps) => {\n const context = useChatContext();\n const initialMessages = useMemo(\n () => makeInitialMessages(context.labels.initial),\n [context.labels.initial],\n );\n\n messages = [...initialMessages, ...messages];\n\n const actionResults: Record<string, string> = {};\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i].isActionExecutionMessage()) {\n const id = messages[i].id;\n const resultMessage: ResultMessage | undefined = messages.find(\n (message) => message.isResultMessage() && message.actionExecutionId === id,\n ) as ResultMessage | undefined;\n\n if (resultMessage) {\n actionResults[id] = ResultMessage.decodeResult(resultMessage.result || \"\");\n }\n }\n }\n\n const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);\n\n const interrupt = useLangGraphInterruptRender();\n\n return (\n <div className=\"copilotKitMessages\" ref={messagesContainerRef}>\n <div className=\"copilotKitMessagesContainer\">\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1;\n\n if (message.isTextMessage()) {\n return (\n <RenderTextMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n onRegenerate={onRegenerate}\n onCopy={onCopy}\n onThumbsUp={onThumbsUp}\n onThumbsDown={onThumbsDown}\n />\n );\n } else if (message.isActionExecutionMessage()) {\n return (\n <RenderActionExecutionMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n actionResult={actionResults[message.id]}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isAgentStateMessage()) {\n return (\n <RenderAgentStateMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isResultMessage()) {\n return (\n <RenderResultMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n }\n })}\n {interrupt}\n </div>\n <footer className=\"copilotKitMessagesFooter\" ref={messagesEndRef}>\n {children}\n </footer>\n </div>\n );\n};\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = [];\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial);\n } else {\n initialArray.push(initial);\n }\n }\n\n return initialArray.map(\n (message) =>\n new TextMessage({\n role: Role.Assistant,\n content: message,\n }),\n );\n}\nexport function useScrollToBottom(messages: any[]) {\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const messagesContainerRef = useRef<HTMLDivElement | null>(null);\n const isProgrammaticScrollRef = useRef(false);\n const isUserScrollUpRef = useRef(false);\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n isProgrammaticScrollRef.current = true;\n messagesEndRef.current.scrollIntoView({\n behavior: \"auto\",\n });\n }\n };\n\n const handleScroll = () => {\n if (isProgrammaticScrollRef.current) {\n isProgrammaticScrollRef.current = false;\n return;\n }\n\n if (messagesContainerRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;\n isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;\n }\n };\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (container) {\n container.addEventListener(\"scroll\", handleScroll);\n }\n return () => {\n if (container) {\n container.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, []);\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (!container) {\n return;\n }\n\n const mutationObserver = new MutationObserver(() => {\n if (!isUserScrollUpRef.current) {\n scrollToBottom();\n }\n });\n\n mutationObserver.observe(container, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n\n return () => {\n mutationObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n isUserScrollUpRef.current = false;\n scrollToBottom();\n }, [messages.filter((m) => m.isTextMessage() && m.role === Role.User).length]);\n\n return { messagesEndRef, messagesContainerRef };\n}\n","import React, { useMemo, useState } from \"react\";\nimport * as DefaultIcons from \"./Icons\";\nimport { ThumbsDownIcon, ThumbsUpIcon } from \"./Icons\";\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode;\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode;\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode;\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode;\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode;\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode;\n\n /**\n * The icons to use for push to talk.\n * @default <PushToTalkIcon />\n */\n\n pushToTalkIcon?: React.ReactNode;\n\n /**\n * The icons to use for copy assistant response\n * @default <CopyIcon />\n */\n\n copyIcon?: React.ReactNode;\n\n /**\n * The icon to use for thumbs up/response approval.\n * @default <ThumbsUpIcon />\n */\n\n thumbsUpIcon?: React.ReactNode;\n\n /**\n * The icon to use for thumbs down/response rejection.\n * @default <ThumbsDownIcon />\n */\n\n thumbsDownIcon?: React.ReactNode;\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[];\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string;\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string;\n\n /**\n * The message to display when an error occurs.\n * @default \"❌ An error occurred. Please try again.\"\n */\n error?: string;\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string;\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string;\n\n /**\n * The label for the copy button.\n * @default \"Copy to clipboard\"\n */\n copyToClipboard?: string;\n\n /**\n * The label for the thumbs up button.\n * @default \"Thumbs up\"\n */\n thumbsUp?: string;\n\n /**\n * The label for the thumbs down button.\n * @default \"Thumbs down\"\n */\n thumbsDown?: string;\n\n /**\n * The text to display when content is copied.\n * @default \"Copied!\"\n */\n copied?: string;\n}\n\ninterface ChatContext {\n labels: Required<CopilotChatLabels>;\n icons: Required<CopilotChatIcons>;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const ChatContext = React.createContext<ChatContext | undefined>(undefined);\n\nexport function useChatContext(): ChatContext {\n const context = React.useContext(ChatContext);\n if (context === undefined) {\n throw new Error(\n \"Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?\",\n );\n }\n return context;\n}\n\ninterface ChatContextProps {\n // temperature?: number;\n // instructions?: string;\n // maxFeedback?: number;\n labels?: CopilotChatLabels;\n icons?: CopilotChatIcons;\n children?: React.ReactNode;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const ChatContextProvider = ({\n // temperature,\n // instructions,\n // maxFeedback,\n labels,\n icons,\n children,\n open,\n setOpen,\n}: ChatContextProps) => {\n const memoizedLabels = useMemo(\n () => ({\n ...{\n initial: \"\",\n title: \"CopilotKit\",\n placeholder: \"Type a message...\",\n error: \"❌ An error occurred. Please try again.\",\n stopGenerating: \"Stop generating\",\n regenerateResponse: \"Regenerate response\",\n copyToClipboard: \"Copy to clipboard\",\n thumbsUp: \"Thumbs up\",\n thumbsDown: \"Thumbs down\",\n copied: \"Copied!\",\n },\n ...labels,\n }),\n [labels],\n );\n\n const memoizedIcons = useMemo(\n () => ({\n ...{\n openIcon: DefaultIcons.OpenIcon,\n closeIcon: DefaultIcons.CloseIcon,\n headerCloseIcon: DefaultIcons.HeaderCloseIcon,\n sendIcon: DefaultIcons.SendIcon,\n activityIcon: DefaultIcons.ActivityIcon,\n spinnerIcon: DefaultIcons.SpinnerIcon,\n stopIcon: DefaultIcons.StopIcon,\n regenerateIcon: DefaultIcons.RegenerateIcon,\n pushToTalkIcon: DefaultIcons.MicrophoneIcon,\n copyIcon: DefaultIcons.CopyIcon,\n thumbsUpIcon: DefaultIcons.ThumbsUpIcon,\n thumbsDownIcon: DefaultIcons.ThumbsDownIcon,\n },\n ...icons,\n }),\n [icons],\n );\n\n const context = useMemo(\n () => ({\n labels: memoizedLabels,\n icons: memoizedIcons,\n open,\n setOpen,\n }),\n [memoizedLabels, memoizedIcons, open, setOpen],\n );\n\n return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;\n};\n"],"mappings":"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","names":["import_react","React","import_jsx_runtime"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Messages,
|
|
3
3
|
useScrollToBottom
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-ZY25LVYR.mjs";
|
|
5
|
+
import "../../chunk-UN2E3HCK.mjs";
|
|
6
6
|
import "../../chunk-ORSMX3SE.mjs";
|
|
7
7
|
import "../../chunk-MRXNTQOX.mjs";
|
|
8
8
|
export {
|
|
@@ -46,6 +46,6 @@ interface CopilotModalProps extends CopilotChatProps {
|
|
|
46
46
|
*/
|
|
47
47
|
Header?: React__default.ComponentType<HeaderProps>;
|
|
48
48
|
}
|
|
49
|
-
declare const CopilotModal: ({ instructions, defaultOpen, clickOutsideToClose, hitEscapeToClose, onSetOpen, onSubmitMessage, onStopGeneration, onReloadMessages, shortcut, icons, labels, makeSystemMessage,
|
|
49
|
+
declare const CopilotModal: ({ instructions, defaultOpen, clickOutsideToClose, hitEscapeToClose, onSetOpen, onSubmitMessage, onStopGeneration, onReloadMessages, shortcut, icons, labels, makeSystemMessage, onInProgress, Window, Button, Header, Messages, Input, AssistantMessage, UserMessage, className, children, }: CopilotModalProps) => react_jsx_runtime.JSX.Element;
|
|
50
50
|
|
|
51
51
|
export { CopilotModal, CopilotModalProps };
|
|
@@ -360,7 +360,10 @@ var ChatContextProvider = ({
|
|
|
360
360
|
spinnerIcon: SpinnerIcon,
|
|
361
361
|
stopIcon: StopIcon,
|
|
362
362
|
regenerateIcon: RegenerateIcon,
|
|
363
|
-
pushToTalkIcon: MicrophoneIcon
|
|
363
|
+
pushToTalkIcon: MicrophoneIcon,
|
|
364
|
+
copyIcon: CopyIcon,
|
|
365
|
+
thumbsUpIcon: ThumbsUpIcon,
|
|
366
|
+
thumbsDownIcon: ThumbsDownIcon
|
|
364
367
|
}), icons),
|
|
365
368
|
[icons]
|
|
366
369
|
);
|
|
@@ -675,13 +678,24 @@ var ExclamationMarkIcon = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
|
675
678
|
) }) })
|
|
676
679
|
}
|
|
677
680
|
);
|
|
678
|
-
var ChevronDownIcon = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
679
|
-
"
|
|
681
|
+
var ChevronDownIcon = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
682
|
+
"svg",
|
|
680
683
|
{
|
|
681
|
-
|
|
682
|
-
|
|
684
|
+
width: "7px",
|
|
685
|
+
height: "4px",
|
|
686
|
+
viewBox: "0 0 7 4",
|
|
687
|
+
version: "1.1",
|
|
688
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
689
|
+
fill: "currentColor",
|
|
690
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Group", fill: "currentColor", fillRule: "nonzero", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
691
|
+
"path",
|
|
692
|
+
{
|
|
693
|
+
d: "M3.71690723,3.90271086 C3.59268176,4.03242971 3.39143629,4.03242971 3.26721082,3.90271086 L0.0853966595,0.57605615 C-0.0314221035,0.444981627 -0.0279751448,0.240725043 0.0931934622,0.114040675 C0.214362069,-0.0126436935 0.409725445,-0.0162475626 0.535093061,0.105888951 L3.49205902,3.19746006 L6.44902499,0.105888951 C6.52834574,0.0168884389 6.64780588,-0.0197473458 6.7605411,0.0103538404 C6.87327633,0.0404550266 6.96130636,0.132492308 6.99009696,0.250359396 C7.01888756,0.368226483 6.98384687,0.493124608 6.89872139,0.57605615 L3.71690723,3.90271086 Z",
|
|
694
|
+
id: "Path"
|
|
695
|
+
}
|
|
696
|
+
) }) })
|
|
683
697
|
}
|
|
684
|
-
)
|
|
698
|
+
);
|
|
685
699
|
var CheckIcon2 = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
686
700
|
"svg",
|
|
687
701
|
{
|
|
@@ -764,11 +778,11 @@ function CopilotKitHelpModal() {
|
|
|
764
778
|
right: "-120px",
|
|
765
779
|
width: "380px"
|
|
766
780
|
},
|
|
767
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "
|
|
781
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "copilotKitHelpModal rounded-lg shadow-xl w-full p-4 flex-col relative", children: [
|
|
768
782
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
769
783
|
"button",
|
|
770
784
|
{
|
|
771
|
-
className: "absolute text-gray-400 hover:text-gray-600 focus:outline-none",
|
|
785
|
+
className: "copilotKitHelpModalCloseButton absolute text-gray-400 hover:text-gray-600 focus:outline-none",
|
|
772
786
|
style: { top: "10px", right: "10px" },
|
|
773
787
|
onClick: () => setShowHelpModal(false),
|
|
774
788
|
"aria-label": "Close",
|
|
@@ -1427,18 +1441,8 @@ var Input = ({ inProgress, onSend, isVisible = false, onStop }) => {
|
|
|
1427
1441
|
] }) });
|
|
1428
1442
|
};
|
|
1429
1443
|
|
|
1430
|
-
// src/components/chat/Response.tsx
|
|
1431
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1432
|
-
var ResponseButton = ({ onClick, inProgress }) => {
|
|
1433
|
-
const context = useChatContext();
|
|
1434
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("button", { onClick, className: "copilotKitResponseButton", children: [
|
|
1435
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: inProgress ? context.icons.stopIcon : context.icons.regenerateIcon }),
|
|
1436
|
-
inProgress ? context.labels.stopGenerating : context.labels.regenerateResponse
|
|
1437
|
-
] });
|
|
1438
|
-
};
|
|
1439
|
-
|
|
1440
1444
|
// src/components/chat/messages/RenderTextMessage.tsx
|
|
1441
|
-
var
|
|
1445
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1442
1446
|
function RenderTextMessage(props) {
|
|
1443
1447
|
const {
|
|
1444
1448
|
message,
|
|
@@ -1454,7 +1458,7 @@ function RenderTextMessage(props) {
|
|
|
1454
1458
|
} = props;
|
|
1455
1459
|
if (message.isTextMessage()) {
|
|
1456
1460
|
if (message.role === "user") {
|
|
1457
|
-
return /* @__PURE__ */ (0,
|
|
1461
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1458
1462
|
UserMessage2,
|
|
1459
1463
|
{
|
|
1460
1464
|
"data-message-role": "user",
|
|
@@ -1464,7 +1468,7 @@ function RenderTextMessage(props) {
|
|
|
1464
1468
|
index
|
|
1465
1469
|
);
|
|
1466
1470
|
} else if (message.role == "assistant") {
|
|
1467
|
-
return /* @__PURE__ */ (0,
|
|
1471
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1468
1472
|
AssistantMessage2,
|
|
1469
1473
|
{
|
|
1470
1474
|
"data-message-role": "assistant",
|
|
@@ -1487,7 +1491,7 @@ function RenderTextMessage(props) {
|
|
|
1487
1491
|
// src/components/chat/messages/RenderActionExecutionMessage.tsx
|
|
1488
1492
|
var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
|
|
1489
1493
|
var import_react_core6 = require("@copilotkit/react-core");
|
|
1490
|
-
var
|
|
1494
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1491
1495
|
function RenderActionExecutionMessage(props) {
|
|
1492
1496
|
const { chatComponentsCache } = (0, import_react_core6.useCopilotContext)();
|
|
1493
1497
|
const { message, inProgress, index, isCurrentMessage, actionResult, AssistantMessage: AssistantMessage2 } = props;
|
|
@@ -1496,7 +1500,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1496
1500
|
const render = chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"];
|
|
1497
1501
|
if (typeof render === "string") {
|
|
1498
1502
|
if (isCurrentMessage && inProgress) {
|
|
1499
|
-
return /* @__PURE__ */ (0,
|
|
1503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1500
1504
|
AssistantMessage2,
|
|
1501
1505
|
{
|
|
1502
1506
|
rawData: message,
|
|
@@ -1529,7 +1533,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1529
1533
|
return null;
|
|
1530
1534
|
}
|
|
1531
1535
|
if (typeof toRender === "string") {
|
|
1532
|
-
return /* @__PURE__ */ (0,
|
|
1536
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1533
1537
|
AssistantMessage2,
|
|
1534
1538
|
{
|
|
1535
1539
|
rawData: message,
|
|
@@ -1541,7 +1545,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1541
1545
|
index
|
|
1542
1546
|
);
|
|
1543
1547
|
} else {
|
|
1544
|
-
return /* @__PURE__ */ (0,
|
|
1548
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1545
1549
|
AssistantMessage2,
|
|
1546
1550
|
{
|
|
1547
1551
|
rawData: message,
|
|
@@ -1555,20 +1559,20 @@ function RenderActionExecutionMessage(props) {
|
|
|
1555
1559
|
}
|
|
1556
1560
|
} catch (e) {
|
|
1557
1561
|
console.error(`Error executing render function for action ${message.name}: ${e}`);
|
|
1558
|
-
return /* @__PURE__ */ (0,
|
|
1562
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1559
1563
|
AssistantMessage2,
|
|
1560
1564
|
{
|
|
1561
1565
|
rawData: message,
|
|
1562
1566
|
"data-message-role": "assistant",
|
|
1563
1567
|
isLoading: false,
|
|
1564
1568
|
isGenerating: false,
|
|
1565
|
-
subComponent: /* @__PURE__ */ (0,
|
|
1566
|
-
/* @__PURE__ */ (0,
|
|
1569
|
+
subComponent: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
1570
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("b", { children: [
|
|
1567
1571
|
"\u274C Error executing render function for action ",
|
|
1568
1572
|
message.name,
|
|
1569
1573
|
":"
|
|
1570
1574
|
] }),
|
|
1571
|
-
/* @__PURE__ */ (0,
|
|
1575
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("pre", { children: e instanceof Error ? e.message : String(e) })
|
|
1572
1576
|
] })
|
|
1573
1577
|
},
|
|
1574
1578
|
index
|
|
@@ -1578,7 +1582,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1578
1582
|
} else if (!inProgress || !isCurrentMessage) {
|
|
1579
1583
|
return null;
|
|
1580
1584
|
} else {
|
|
1581
|
-
return /* @__PURE__ */ (0,
|
|
1585
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1582
1586
|
AssistantMessage2,
|
|
1583
1587
|
{
|
|
1584
1588
|
rawData: message,
|
|
@@ -1593,11 +1597,11 @@ function RenderActionExecutionMessage(props) {
|
|
|
1593
1597
|
}
|
|
1594
1598
|
|
|
1595
1599
|
// src/components/chat/messages/RenderResultMessage.tsx
|
|
1596
|
-
var
|
|
1600
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1597
1601
|
function RenderResultMessage(props) {
|
|
1598
1602
|
const { message, inProgress, index, isCurrentMessage, AssistantMessage: AssistantMessage2 } = props;
|
|
1599
1603
|
if (message.isResultMessage() && inProgress && isCurrentMessage) {
|
|
1600
|
-
return /* @__PURE__ */ (0,
|
|
1604
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1601
1605
|
AssistantMessage2,
|
|
1602
1606
|
{
|
|
1603
1607
|
"data-message-role": "assistant",
|
|
@@ -1614,7 +1618,7 @@ function RenderResultMessage(props) {
|
|
|
1614
1618
|
|
|
1615
1619
|
// src/components/chat/messages/RenderAgentStateMessage.tsx
|
|
1616
1620
|
var import_react_core7 = require("@copilotkit/react-core");
|
|
1617
|
-
var
|
|
1621
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1618
1622
|
function RenderAgentStateMessage(props) {
|
|
1619
1623
|
const { chatComponentsCache } = (0, import_react_core7.useCopilotContext)();
|
|
1620
1624
|
const { message, inProgress, index, isCurrentMessage, AssistantMessage: AssistantMessage2 } = props;
|
|
@@ -1626,7 +1630,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1626
1630
|
if (render) {
|
|
1627
1631
|
if (typeof render === "string") {
|
|
1628
1632
|
if (isCurrentMessage && inProgress) {
|
|
1629
|
-
return /* @__PURE__ */ (0,
|
|
1633
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1630
1634
|
AssistantMessage2,
|
|
1631
1635
|
{
|
|
1632
1636
|
rawData: message,
|
|
@@ -1652,7 +1656,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1652
1656
|
return null;
|
|
1653
1657
|
}
|
|
1654
1658
|
if (!toRender && isCurrentMessage && inProgress) {
|
|
1655
|
-
return /* @__PURE__ */ (0,
|
|
1659
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1656
1660
|
AssistantMessage2,
|
|
1657
1661
|
{
|
|
1658
1662
|
"data-message-role": "assistant",
|
|
@@ -1666,7 +1670,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1666
1670
|
return null;
|
|
1667
1671
|
}
|
|
1668
1672
|
if (typeof toRender === "string") {
|
|
1669
|
-
return /* @__PURE__ */ (0,
|
|
1673
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1670
1674
|
AssistantMessage2,
|
|
1671
1675
|
{
|
|
1672
1676
|
rawData: message,
|
|
@@ -1678,7 +1682,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1678
1682
|
index
|
|
1679
1683
|
);
|
|
1680
1684
|
} else {
|
|
1681
|
-
return /* @__PURE__ */ (0,
|
|
1685
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1682
1686
|
AssistantMessage2,
|
|
1683
1687
|
{
|
|
1684
1688
|
rawData: message,
|
|
@@ -1694,7 +1698,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1694
1698
|
} else if (!inProgress || !isCurrentMessage) {
|
|
1695
1699
|
return null;
|
|
1696
1700
|
} else {
|
|
1697
|
-
return /* @__PURE__ */ (0,
|
|
1701
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1698
1702
|
AssistantMessage2,
|
|
1699
1703
|
{
|
|
1700
1704
|
rawData: message,
|
|
@@ -1739,7 +1743,7 @@ function useCopyToClipboard({ timeout = 2e3 }) {
|
|
|
1739
1743
|
}
|
|
1740
1744
|
|
|
1741
1745
|
// src/components/chat/CodeBlock.tsx
|
|
1742
|
-
var
|
|
1746
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1743
1747
|
var programmingLanguages = {
|
|
1744
1748
|
javascript: ".js",
|
|
1745
1749
|
python: ".py",
|
|
@@ -1802,15 +1806,15 @@ var CodeBlock = (0, import_react10.memo)(({ language, value }) => {
|
|
|
1802
1806
|
return;
|
|
1803
1807
|
copyToClipboard(value);
|
|
1804
1808
|
};
|
|
1805
|
-
return /* @__PURE__ */ (0,
|
|
1806
|
-
/* @__PURE__ */ (0,
|
|
1807
|
-
/* @__PURE__ */ (0,
|
|
1808
|
-
/* @__PURE__ */ (0,
|
|
1809
|
-
/* @__PURE__ */ (0,
|
|
1810
|
-
/* @__PURE__ */ (0,
|
|
1809
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlock", children: [
|
|
1810
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlockToolbar", children: [
|
|
1811
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "copilotKitCodeBlockToolbarLanguage", children: language }),
|
|
1812
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlockToolbarButtons", children: [
|
|
1813
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: downloadAsFile, children: DownloadIcon }),
|
|
1814
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: onCopy, children: isCopied ? CheckIcon : CopyIcon })
|
|
1811
1815
|
] })
|
|
1812
1816
|
] }),
|
|
1813
|
-
/* @__PURE__ */ (0,
|
|
1817
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1814
1818
|
import_react_syntax_highlighter.Prism,
|
|
1815
1819
|
{
|
|
1816
1820
|
language,
|
|
@@ -2113,18 +2117,18 @@ var highlightStyle = {
|
|
|
2113
2117
|
// src/components/chat/Markdown.tsx
|
|
2114
2118
|
var import_remark_gfm = __toESM(require("remark-gfm"));
|
|
2115
2119
|
var import_remark_math = __toESM(require("remark-math"));
|
|
2116
|
-
var
|
|
2120
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
2117
2121
|
var MemoizedReactMarkdown = (0, import_react11.memo)(
|
|
2118
2122
|
import_react_markdown.default,
|
|
2119
2123
|
(prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className
|
|
2120
2124
|
);
|
|
2121
2125
|
var Markdown = ({ content }) => {
|
|
2122
|
-
return /* @__PURE__ */ (0,
|
|
2126
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "copilotKitMarkdown", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(MemoizedReactMarkdown, { components, remarkPlugins: [import_remark_gfm.default, import_remark_math.default], children: content }) });
|
|
2123
2127
|
};
|
|
2124
2128
|
var components = {
|
|
2125
2129
|
a(_a) {
|
|
2126
2130
|
var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
|
|
2127
|
-
return /* @__PURE__ */ (0,
|
|
2131
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2128
2132
|
"a",
|
|
2129
2133
|
__spreadProps(__spreadValues({
|
|
2130
2134
|
style: { color: "blue", textDecoration: "underline" }
|
|
@@ -2139,7 +2143,7 @@ var components = {
|
|
|
2139
2143
|
var _d = _c, { children, className, inline } = _d, props = __objRest(_d, ["children", "className", "inline"]);
|
|
2140
2144
|
if (children.length) {
|
|
2141
2145
|
if (children[0] == "\u258D") {
|
|
2142
|
-
return /* @__PURE__ */ (0,
|
|
2146
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2143
2147
|
"span",
|
|
2144
2148
|
{
|
|
2145
2149
|
style: {
|
|
@@ -2154,9 +2158,9 @@ var components = {
|
|
|
2154
2158
|
}
|
|
2155
2159
|
const match = /language-(\w+)/.exec(className || "");
|
|
2156
2160
|
if (inline) {
|
|
2157
|
-
return /* @__PURE__ */ (0,
|
|
2161
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", __spreadProps(__spreadValues({ className }, props), { children }));
|
|
2158
2162
|
}
|
|
2159
|
-
return /* @__PURE__ */ (0,
|
|
2163
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2160
2164
|
CodeBlock,
|
|
2161
2165
|
__spreadValues({
|
|
2162
2166
|
language: match && match[1] || "",
|
|
@@ -2169,7 +2173,7 @@ var components = {
|
|
|
2169
2173
|
|
|
2170
2174
|
// src/components/chat/messages/AssistantMessage.tsx
|
|
2171
2175
|
var import_react12 = require("react");
|
|
2172
|
-
var
|
|
2176
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2173
2177
|
var AssistantMessage = (props) => {
|
|
2174
2178
|
const { icons, labels } = useChatContext();
|
|
2175
2179
|
const {
|
|
@@ -2210,77 +2214,77 @@ var AssistantMessage = (props) => {
|
|
|
2210
2214
|
onThumbsDown(message);
|
|
2211
2215
|
}
|
|
2212
2216
|
};
|
|
2213
|
-
const LoadingIcon = () => /* @__PURE__ */ (0,
|
|
2214
|
-
return /* @__PURE__ */ (0,
|
|
2215
|
-
(message || isLoading) && /* @__PURE__ */ (0,
|
|
2216
|
-
message && /* @__PURE__ */ (0,
|
|
2217
|
-
isLoading && /* @__PURE__ */ (0,
|
|
2218
|
-
message && !isLoading && /* @__PURE__ */ (0,
|
|
2217
|
+
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: icons.activityIcon });
|
|
2218
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
|
|
2219
|
+
(message || isLoading) && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
2220
|
+
message && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Markdown, { content: message || "" }),
|
|
2221
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(LoadingIcon, {}),
|
|
2222
|
+
message && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
2219
2223
|
"div",
|
|
2220
2224
|
{
|
|
2221
2225
|
className: `copilotKitMessageControls ${isCurrentMessage ? "currentMessage" : ""}`,
|
|
2222
2226
|
children: [
|
|
2223
|
-
/* @__PURE__ */ (0,
|
|
2227
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2224
2228
|
"button",
|
|
2225
2229
|
{
|
|
2226
2230
|
className: "copilotKitMessageControlButton",
|
|
2227
2231
|
onClick: handleRegenerate,
|
|
2228
2232
|
"aria-label": labels.regenerateResponse,
|
|
2229
2233
|
title: labels.regenerateResponse,
|
|
2230
|
-
children:
|
|
2234
|
+
children: icons.regenerateIcon
|
|
2231
2235
|
}
|
|
2232
2236
|
),
|
|
2233
|
-
/* @__PURE__ */ (0,
|
|
2237
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2234
2238
|
"button",
|
|
2235
2239
|
{
|
|
2236
2240
|
className: "copilotKitMessageControlButton",
|
|
2237
2241
|
onClick: handleCopy,
|
|
2238
2242
|
"aria-label": labels.copyToClipboard,
|
|
2239
2243
|
title: labels.copyToClipboard,
|
|
2240
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
2244
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { style: { fontSize: "10px", fontWeight: "bold" }, children: "\u2713" }) : icons.copyIcon
|
|
2241
2245
|
}
|
|
2242
2246
|
),
|
|
2243
|
-
onThumbsUp && /* @__PURE__ */ (0,
|
|
2247
|
+
onThumbsUp && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2244
2248
|
"button",
|
|
2245
2249
|
{
|
|
2246
2250
|
className: "copilotKitMessageControlButton",
|
|
2247
2251
|
onClick: handleThumbsUp,
|
|
2248
2252
|
"aria-label": labels.thumbsUp,
|
|
2249
2253
|
title: labels.thumbsUp,
|
|
2250
|
-
children:
|
|
2254
|
+
children: icons.thumbsUpIcon
|
|
2251
2255
|
}
|
|
2252
2256
|
),
|
|
2253
|
-
onThumbsDown && /* @__PURE__ */ (0,
|
|
2257
|
+
onThumbsDown && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2254
2258
|
"button",
|
|
2255
2259
|
{
|
|
2256
2260
|
className: "copilotKitMessageControlButton",
|
|
2257
2261
|
onClick: handleThumbsDown,
|
|
2258
2262
|
"aria-label": labels.thumbsDown,
|
|
2259
2263
|
title: labels.thumbsDown,
|
|
2260
|
-
children:
|
|
2264
|
+
children: icons.thumbsDownIcon
|
|
2261
2265
|
}
|
|
2262
2266
|
)
|
|
2263
2267
|
]
|
|
2264
2268
|
}
|
|
2265
2269
|
)
|
|
2266
2270
|
] }),
|
|
2267
|
-
/* @__PURE__ */ (0,
|
|
2271
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { style: { marginBottom: "0.5rem" }, children: subComponent })
|
|
2268
2272
|
] });
|
|
2269
2273
|
};
|
|
2270
2274
|
|
|
2271
2275
|
// src/components/chat/messages/UserMessage.tsx
|
|
2272
|
-
var
|
|
2276
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2273
2277
|
var UserMessage = (props) => {
|
|
2274
|
-
return /* @__PURE__ */ (0,
|
|
2278
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: props.message });
|
|
2275
2279
|
};
|
|
2276
2280
|
|
|
2277
2281
|
// src/components/chat/Suggestion.tsx
|
|
2278
2282
|
var import_react_core8 = require("@copilotkit/react-core");
|
|
2279
2283
|
var import_shared2 = require("@copilotkit/shared");
|
|
2280
2284
|
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
2281
|
-
var
|
|
2285
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2282
2286
|
function Suggestion({ title, message, onClick, partial, className }) {
|
|
2283
|
-
return /* @__PURE__ */ (0,
|
|
2287
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2284
2288
|
"button",
|
|
2285
2289
|
{
|
|
2286
2290
|
disabled: partial,
|
|
@@ -2290,7 +2294,7 @@ function Suggestion({ title, message, onClick, partial, className }) {
|
|
|
2290
2294
|
},
|
|
2291
2295
|
className: className || (partial ? "suggestion loading" : "suggestion"),
|
|
2292
2296
|
"data-test-id": "suggestion",
|
|
2293
|
-
children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0,
|
|
2297
|
+
children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: title })
|
|
2294
2298
|
}
|
|
2295
2299
|
);
|
|
2296
2300
|
}
|
|
@@ -2370,12 +2374,11 @@ var import_react_core9 = require("@copilotkit/react-core");
|
|
|
2370
2374
|
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
2371
2375
|
var import_shared3 = require("@copilotkit/shared");
|
|
2372
2376
|
var import_react_core10 = require("@copilotkit/react-core");
|
|
2373
|
-
var
|
|
2377
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2374
2378
|
function CopilotChat({
|
|
2375
2379
|
instructions,
|
|
2376
2380
|
onSubmitMessage,
|
|
2377
2381
|
makeSystemMessage,
|
|
2378
|
-
showResponseButton = true,
|
|
2379
2382
|
onInProgress,
|
|
2380
2383
|
onStopGeneration,
|
|
2381
2384
|
onReloadMessages,
|
|
@@ -2389,7 +2392,6 @@ function CopilotChat({
|
|
|
2389
2392
|
RenderAgentStateMessage: RenderAgentStateMessage2 = RenderAgentStateMessage,
|
|
2390
2393
|
RenderResultMessage: RenderResultMessage2 = RenderResultMessage,
|
|
2391
2394
|
Input: Input2 = Input,
|
|
2392
|
-
ResponseButton: ResponseButton2 = ResponseButton,
|
|
2393
2395
|
className,
|
|
2394
2396
|
icons,
|
|
2395
2397
|
labels,
|
|
@@ -2437,8 +2439,8 @@ function CopilotChat({
|
|
|
2437
2439
|
onCopy(message);
|
|
2438
2440
|
}
|
|
2439
2441
|
};
|
|
2440
|
-
return /* @__PURE__ */ (0,
|
|
2441
|
-
/* @__PURE__ */ (0,
|
|
2442
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
|
|
2443
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2442
2444
|
Messages2,
|
|
2443
2445
|
{
|
|
2444
2446
|
AssistantMessage: AssistantMessage2,
|
|
@@ -2453,7 +2455,7 @@ function CopilotChat({
|
|
|
2453
2455
|
onCopy: handleCopy,
|
|
2454
2456
|
onThumbsUp,
|
|
2455
2457
|
onThumbsDown,
|
|
2456
|
-
children: currentSuggestions.length > 0 && /* @__PURE__ */ (0,
|
|
2458
|
+
children: currentSuggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "suggestions", children: currentSuggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2457
2459
|
Suggestion,
|
|
2458
2460
|
{
|
|
2459
2461
|
title: suggestion.title,
|
|
@@ -2466,7 +2468,7 @@ function CopilotChat({
|
|
|
2466
2468
|
)) })
|
|
2467
2469
|
}
|
|
2468
2470
|
),
|
|
2469
|
-
/* @__PURE__ */ (0,
|
|
2471
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2470
2472
|
Input2,
|
|
2471
2473
|
{
|
|
2472
2474
|
inProgress: isLoading,
|
|
@@ -2485,10 +2487,10 @@ function WrappedCopilotChat({
|
|
|
2485
2487
|
}) {
|
|
2486
2488
|
const chatContext = import_react13.default.useContext(ChatContext);
|
|
2487
2489
|
if (!chatContext) {
|
|
2488
|
-
return /* @__PURE__ */ (0,
|
|
2489
|
-
}, children: /* @__PURE__ */ (0,
|
|
2490
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ChatContextProvider, { icons, labels, open: true, setOpen: () => {
|
|
2491
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: `copilotKitChat ${className}`, children }) });
|
|
2490
2492
|
}
|
|
2491
|
-
return /* @__PURE__ */ (0,
|
|
2493
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_jsx_runtime22.Fragment, { children });
|
|
2492
2494
|
}
|
|
2493
2495
|
var SUGGESTIONS_DEBOUNCE_TIMEOUT = 1e3;
|
|
2494
2496
|
var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
@@ -2649,7 +2651,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
2649
2651
|
};
|
|
2650
2652
|
|
|
2651
2653
|
// src/components/chat/Modal.tsx
|
|
2652
|
-
var
|
|
2654
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2653
2655
|
var CopilotModal = ({
|
|
2654
2656
|
instructions,
|
|
2655
2657
|
defaultOpen = false,
|
|
@@ -2663,14 +2665,12 @@ var CopilotModal = ({
|
|
|
2663
2665
|
icons,
|
|
2664
2666
|
labels,
|
|
2665
2667
|
makeSystemMessage,
|
|
2666
|
-
showResponseButton = true,
|
|
2667
2668
|
onInProgress,
|
|
2668
2669
|
Window: Window2 = Window,
|
|
2669
2670
|
Button: Button2 = Button,
|
|
2670
2671
|
Header: Header2 = Header,
|
|
2671
2672
|
Messages: Messages2 = Messages,
|
|
2672
2673
|
Input: Input2 = Input,
|
|
2673
|
-
ResponseButton: ResponseButton2 = ResponseButton,
|
|
2674
2674
|
AssistantMessage: AssistantMessage2 = AssistantMessage,
|
|
2675
2675
|
UserMessage: UserMessage2 = UserMessage,
|
|
2676
2676
|
className,
|
|
@@ -2681,19 +2681,19 @@ var CopilotModal = ({
|
|
|
2681
2681
|
onSetOpen == null ? void 0 : onSetOpen(open);
|
|
2682
2682
|
setOpenState(open);
|
|
2683
2683
|
};
|
|
2684
|
-
return /* @__PURE__ */ (0,
|
|
2684
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(ChatContextProvider, { icons, labels, open: openState, setOpen, children: [
|
|
2685
2685
|
children,
|
|
2686
|
-
/* @__PURE__ */ (0,
|
|
2687
|
-
/* @__PURE__ */ (0,
|
|
2688
|
-
/* @__PURE__ */ (0,
|
|
2686
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className, children: [
|
|
2687
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button2, {}),
|
|
2688
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2689
2689
|
Window2,
|
|
2690
2690
|
{
|
|
2691
2691
|
clickOutsideToClose,
|
|
2692
2692
|
shortcut,
|
|
2693
2693
|
hitEscapeToClose,
|
|
2694
2694
|
children: [
|
|
2695
|
-
/* @__PURE__ */ (0,
|
|
2696
|
-
/* @__PURE__ */ (0,
|
|
2695
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Header2, {}),
|
|
2696
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2697
2697
|
CopilotChat,
|
|
2698
2698
|
{
|
|
2699
2699
|
instructions,
|
|
@@ -2701,11 +2701,9 @@ var CopilotModal = ({
|
|
|
2701
2701
|
onStopGeneration,
|
|
2702
2702
|
onReloadMessages,
|
|
2703
2703
|
makeSystemMessage,
|
|
2704
|
-
showResponseButton,
|
|
2705
2704
|
onInProgress,
|
|
2706
2705
|
Messages: Messages2,
|
|
2707
2706
|
Input: Input2,
|
|
2708
|
-
ResponseButton: ResponseButton2,
|
|
2709
2707
|
AssistantMessage: AssistantMessage2,
|
|
2710
2708
|
UserMessage: UserMessage2
|
|
2711
2709
|
}
|