@copilotkit/react-ui 1.8.0-next.6 → 1.8.0-next.7
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 +10 -0
- package/dist/{chunk-FBYETUFL.mjs → chunk-5M7ODWKH.mjs} +6 -12
- package/dist/chunk-5M7ODWKH.mjs.map +1 -0
- package/dist/{chunk-DFHFPZQD.mjs → chunk-EMWOZVCW.mjs} +9 -16
- package/dist/chunk-EMWOZVCW.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-CGVOCLHN.mjs → chunk-P7S3E5UW.mjs} +2 -2
- package/dist/{chunk-6H7IQRIU.mjs → chunk-QTN7AYVL.mjs} +2 -2
- 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-FFNESJSG.mjs → chunk-Y6OESC5U.mjs} +2 -2
- package/dist/{chunk-QS7UFQFD.mjs → chunk-YGD4IB27.mjs} +2 -2
- 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.map +1 -1
- package/dist/components/chat/Header.mjs +2 -2
- 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 +74 -87
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +10 -11
- package/dist/components/chat/Popup.js +76 -89
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +11 -12
- package/dist/components/chat/Sidebar.js +76 -89
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +11 -12
- 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 +78 -91
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +14 -15
- 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/index.d.ts +1 -1
- package/dist/components/index.js +78 -91
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +14 -15
- package/dist/index.css +0 -26
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +78 -91
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +15 -16
- 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/styles.css +0 -1
- 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-UZTZXMYS.mjs +0 -18
- package/dist/chunk-UZTZXMYS.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-CGVOCLHN.mjs.map → chunk-P7S3E5UW.mjs.map} +0 -0
- /package/dist/{chunk-6H7IQRIU.mjs.map → chunk-QTN7AYVL.mjs.map} +0 -0
- /package/dist/{chunk-LYHZXHTJ.mjs.map → chunk-SNLHKLW3.mjs.map} +0 -0
- /package/dist/{chunk-FFNESJSG.mjs.map → chunk-Y6OESC5U.mjs.map} +0 -0
- /package/dist/{chunk-QS7UFQFD.mjs.map → chunk-YGD4IB27.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
|
);
|
|
@@ -1427,18 +1430,8 @@ var Input = ({ inProgress, onSend, isVisible = false, onStop }) => {
|
|
|
1427
1430
|
] }) });
|
|
1428
1431
|
};
|
|
1429
1432
|
|
|
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
1433
|
// src/components/chat/messages/RenderTextMessage.tsx
|
|
1441
|
-
var
|
|
1434
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1442
1435
|
function RenderTextMessage(props) {
|
|
1443
1436
|
const {
|
|
1444
1437
|
message,
|
|
@@ -1454,7 +1447,7 @@ function RenderTextMessage(props) {
|
|
|
1454
1447
|
} = props;
|
|
1455
1448
|
if (message.isTextMessage()) {
|
|
1456
1449
|
if (message.role === "user") {
|
|
1457
|
-
return /* @__PURE__ */ (0,
|
|
1450
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1458
1451
|
UserMessage2,
|
|
1459
1452
|
{
|
|
1460
1453
|
"data-message-role": "user",
|
|
@@ -1464,7 +1457,7 @@ function RenderTextMessage(props) {
|
|
|
1464
1457
|
index
|
|
1465
1458
|
);
|
|
1466
1459
|
} else if (message.role == "assistant") {
|
|
1467
|
-
return /* @__PURE__ */ (0,
|
|
1460
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1468
1461
|
AssistantMessage2,
|
|
1469
1462
|
{
|
|
1470
1463
|
"data-message-role": "assistant",
|
|
@@ -1487,7 +1480,7 @@ function RenderTextMessage(props) {
|
|
|
1487
1480
|
// src/components/chat/messages/RenderActionExecutionMessage.tsx
|
|
1488
1481
|
var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
|
|
1489
1482
|
var import_react_core6 = require("@copilotkit/react-core");
|
|
1490
|
-
var
|
|
1483
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1491
1484
|
function RenderActionExecutionMessage(props) {
|
|
1492
1485
|
const { chatComponentsCache } = (0, import_react_core6.useCopilotContext)();
|
|
1493
1486
|
const { message, inProgress, index, isCurrentMessage, actionResult, AssistantMessage: AssistantMessage2 } = props;
|
|
@@ -1496,7 +1489,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1496
1489
|
const render = chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"];
|
|
1497
1490
|
if (typeof render === "string") {
|
|
1498
1491
|
if (isCurrentMessage && inProgress) {
|
|
1499
|
-
return /* @__PURE__ */ (0,
|
|
1492
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1500
1493
|
AssistantMessage2,
|
|
1501
1494
|
{
|
|
1502
1495
|
rawData: message,
|
|
@@ -1529,7 +1522,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1529
1522
|
return null;
|
|
1530
1523
|
}
|
|
1531
1524
|
if (typeof toRender === "string") {
|
|
1532
|
-
return /* @__PURE__ */ (0,
|
|
1525
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1533
1526
|
AssistantMessage2,
|
|
1534
1527
|
{
|
|
1535
1528
|
rawData: message,
|
|
@@ -1541,7 +1534,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1541
1534
|
index
|
|
1542
1535
|
);
|
|
1543
1536
|
} else {
|
|
1544
|
-
return /* @__PURE__ */ (0,
|
|
1537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1545
1538
|
AssistantMessage2,
|
|
1546
1539
|
{
|
|
1547
1540
|
rawData: message,
|
|
@@ -1555,20 +1548,20 @@ function RenderActionExecutionMessage(props) {
|
|
|
1555
1548
|
}
|
|
1556
1549
|
} catch (e) {
|
|
1557
1550
|
console.error(`Error executing render function for action ${message.name}: ${e}`);
|
|
1558
|
-
return /* @__PURE__ */ (0,
|
|
1551
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1559
1552
|
AssistantMessage2,
|
|
1560
1553
|
{
|
|
1561
1554
|
rawData: message,
|
|
1562
1555
|
"data-message-role": "assistant",
|
|
1563
1556
|
isLoading: false,
|
|
1564
1557
|
isGenerating: false,
|
|
1565
|
-
subComponent: /* @__PURE__ */ (0,
|
|
1566
|
-
/* @__PURE__ */ (0,
|
|
1558
|
+
subComponent: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
1559
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("b", { children: [
|
|
1567
1560
|
"\u274C Error executing render function for action ",
|
|
1568
1561
|
message.name,
|
|
1569
1562
|
":"
|
|
1570
1563
|
] }),
|
|
1571
|
-
/* @__PURE__ */ (0,
|
|
1564
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("pre", { children: e instanceof Error ? e.message : String(e) })
|
|
1572
1565
|
] })
|
|
1573
1566
|
},
|
|
1574
1567
|
index
|
|
@@ -1578,7 +1571,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1578
1571
|
} else if (!inProgress || !isCurrentMessage) {
|
|
1579
1572
|
return null;
|
|
1580
1573
|
} else {
|
|
1581
|
-
return /* @__PURE__ */ (0,
|
|
1574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1582
1575
|
AssistantMessage2,
|
|
1583
1576
|
{
|
|
1584
1577
|
rawData: message,
|
|
@@ -1593,11 +1586,11 @@ function RenderActionExecutionMessage(props) {
|
|
|
1593
1586
|
}
|
|
1594
1587
|
|
|
1595
1588
|
// src/components/chat/messages/RenderResultMessage.tsx
|
|
1596
|
-
var
|
|
1589
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1597
1590
|
function RenderResultMessage(props) {
|
|
1598
1591
|
const { message, inProgress, index, isCurrentMessage, AssistantMessage: AssistantMessage2 } = props;
|
|
1599
1592
|
if (message.isResultMessage() && inProgress && isCurrentMessage) {
|
|
1600
|
-
return /* @__PURE__ */ (0,
|
|
1593
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1601
1594
|
AssistantMessage2,
|
|
1602
1595
|
{
|
|
1603
1596
|
"data-message-role": "assistant",
|
|
@@ -1614,7 +1607,7 @@ function RenderResultMessage(props) {
|
|
|
1614
1607
|
|
|
1615
1608
|
// src/components/chat/messages/RenderAgentStateMessage.tsx
|
|
1616
1609
|
var import_react_core7 = require("@copilotkit/react-core");
|
|
1617
|
-
var
|
|
1610
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1618
1611
|
function RenderAgentStateMessage(props) {
|
|
1619
1612
|
const { chatComponentsCache } = (0, import_react_core7.useCopilotContext)();
|
|
1620
1613
|
const { message, inProgress, index, isCurrentMessage, AssistantMessage: AssistantMessage2 } = props;
|
|
@@ -1626,7 +1619,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1626
1619
|
if (render) {
|
|
1627
1620
|
if (typeof render === "string") {
|
|
1628
1621
|
if (isCurrentMessage && inProgress) {
|
|
1629
|
-
return /* @__PURE__ */ (0,
|
|
1622
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1630
1623
|
AssistantMessage2,
|
|
1631
1624
|
{
|
|
1632
1625
|
rawData: message,
|
|
@@ -1652,7 +1645,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1652
1645
|
return null;
|
|
1653
1646
|
}
|
|
1654
1647
|
if (!toRender && isCurrentMessage && inProgress) {
|
|
1655
|
-
return /* @__PURE__ */ (0,
|
|
1648
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1656
1649
|
AssistantMessage2,
|
|
1657
1650
|
{
|
|
1658
1651
|
"data-message-role": "assistant",
|
|
@@ -1666,7 +1659,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1666
1659
|
return null;
|
|
1667
1660
|
}
|
|
1668
1661
|
if (typeof toRender === "string") {
|
|
1669
|
-
return /* @__PURE__ */ (0,
|
|
1662
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1670
1663
|
AssistantMessage2,
|
|
1671
1664
|
{
|
|
1672
1665
|
rawData: message,
|
|
@@ -1678,7 +1671,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1678
1671
|
index
|
|
1679
1672
|
);
|
|
1680
1673
|
} else {
|
|
1681
|
-
return /* @__PURE__ */ (0,
|
|
1674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1682
1675
|
AssistantMessage2,
|
|
1683
1676
|
{
|
|
1684
1677
|
rawData: message,
|
|
@@ -1694,7 +1687,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1694
1687
|
} else if (!inProgress || !isCurrentMessage) {
|
|
1695
1688
|
return null;
|
|
1696
1689
|
} else {
|
|
1697
|
-
return /* @__PURE__ */ (0,
|
|
1690
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1698
1691
|
AssistantMessage2,
|
|
1699
1692
|
{
|
|
1700
1693
|
rawData: message,
|
|
@@ -1739,7 +1732,7 @@ function useCopyToClipboard({ timeout = 2e3 }) {
|
|
|
1739
1732
|
}
|
|
1740
1733
|
|
|
1741
1734
|
// src/components/chat/CodeBlock.tsx
|
|
1742
|
-
var
|
|
1735
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1743
1736
|
var programmingLanguages = {
|
|
1744
1737
|
javascript: ".js",
|
|
1745
1738
|
python: ".py",
|
|
@@ -1802,15 +1795,15 @@ var CodeBlock = (0, import_react10.memo)(({ language, value }) => {
|
|
|
1802
1795
|
return;
|
|
1803
1796
|
copyToClipboard(value);
|
|
1804
1797
|
};
|
|
1805
|
-
return /* @__PURE__ */ (0,
|
|
1806
|
-
/* @__PURE__ */ (0,
|
|
1807
|
-
/* @__PURE__ */ (0,
|
|
1808
|
-
/* @__PURE__ */ (0,
|
|
1809
|
-
/* @__PURE__ */ (0,
|
|
1810
|
-
/* @__PURE__ */ (0,
|
|
1798
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlock", children: [
|
|
1799
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlockToolbar", children: [
|
|
1800
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "copilotKitCodeBlockToolbarLanguage", children: language }),
|
|
1801
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlockToolbarButtons", children: [
|
|
1802
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: downloadAsFile, children: DownloadIcon }),
|
|
1803
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: onCopy, children: isCopied ? CheckIcon : CopyIcon })
|
|
1811
1804
|
] })
|
|
1812
1805
|
] }),
|
|
1813
|
-
/* @__PURE__ */ (0,
|
|
1806
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1814
1807
|
import_react_syntax_highlighter.Prism,
|
|
1815
1808
|
{
|
|
1816
1809
|
language,
|
|
@@ -2113,18 +2106,18 @@ var highlightStyle = {
|
|
|
2113
2106
|
// src/components/chat/Markdown.tsx
|
|
2114
2107
|
var import_remark_gfm = __toESM(require("remark-gfm"));
|
|
2115
2108
|
var import_remark_math = __toESM(require("remark-math"));
|
|
2116
|
-
var
|
|
2109
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
2117
2110
|
var MemoizedReactMarkdown = (0, import_react11.memo)(
|
|
2118
2111
|
import_react_markdown.default,
|
|
2119
2112
|
(prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className
|
|
2120
2113
|
);
|
|
2121
2114
|
var Markdown = ({ content }) => {
|
|
2122
|
-
return /* @__PURE__ */ (0,
|
|
2115
|
+
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
2116
|
};
|
|
2124
2117
|
var components = {
|
|
2125
2118
|
a(_a) {
|
|
2126
2119
|
var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
|
|
2127
|
-
return /* @__PURE__ */ (0,
|
|
2120
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2128
2121
|
"a",
|
|
2129
2122
|
__spreadProps(__spreadValues({
|
|
2130
2123
|
style: { color: "blue", textDecoration: "underline" }
|
|
@@ -2139,7 +2132,7 @@ var components = {
|
|
|
2139
2132
|
var _d = _c, { children, className, inline } = _d, props = __objRest(_d, ["children", "className", "inline"]);
|
|
2140
2133
|
if (children.length) {
|
|
2141
2134
|
if (children[0] == "\u258D") {
|
|
2142
|
-
return /* @__PURE__ */ (0,
|
|
2135
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2143
2136
|
"span",
|
|
2144
2137
|
{
|
|
2145
2138
|
style: {
|
|
@@ -2154,9 +2147,9 @@ var components = {
|
|
|
2154
2147
|
}
|
|
2155
2148
|
const match = /language-(\w+)/.exec(className || "");
|
|
2156
2149
|
if (inline) {
|
|
2157
|
-
return /* @__PURE__ */ (0,
|
|
2150
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", __spreadProps(__spreadValues({ className }, props), { children }));
|
|
2158
2151
|
}
|
|
2159
|
-
return /* @__PURE__ */ (0,
|
|
2152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2160
2153
|
CodeBlock,
|
|
2161
2154
|
__spreadValues({
|
|
2162
2155
|
language: match && match[1] || "",
|
|
@@ -2169,7 +2162,7 @@ var components = {
|
|
|
2169
2162
|
|
|
2170
2163
|
// src/components/chat/messages/AssistantMessage.tsx
|
|
2171
2164
|
var import_react12 = require("react");
|
|
2172
|
-
var
|
|
2165
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2173
2166
|
var AssistantMessage = (props) => {
|
|
2174
2167
|
const { icons, labels } = useChatContext();
|
|
2175
2168
|
const {
|
|
@@ -2210,77 +2203,77 @@ var AssistantMessage = (props) => {
|
|
|
2210
2203
|
onThumbsDown(message);
|
|
2211
2204
|
}
|
|
2212
2205
|
};
|
|
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,
|
|
2206
|
+
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: icons.activityIcon });
|
|
2207
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
|
|
2208
|
+
(message || isLoading) && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
2209
|
+
message && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Markdown, { content: message || "" }),
|
|
2210
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(LoadingIcon, {}),
|
|
2211
|
+
message && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
2219
2212
|
"div",
|
|
2220
2213
|
{
|
|
2221
2214
|
className: `copilotKitMessageControls ${isCurrentMessage ? "currentMessage" : ""}`,
|
|
2222
2215
|
children: [
|
|
2223
|
-
/* @__PURE__ */ (0,
|
|
2216
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2224
2217
|
"button",
|
|
2225
2218
|
{
|
|
2226
2219
|
className: "copilotKitMessageControlButton",
|
|
2227
2220
|
onClick: handleRegenerate,
|
|
2228
2221
|
"aria-label": labels.regenerateResponse,
|
|
2229
2222
|
title: labels.regenerateResponse,
|
|
2230
|
-
children:
|
|
2223
|
+
children: icons.regenerateIcon
|
|
2231
2224
|
}
|
|
2232
2225
|
),
|
|
2233
|
-
/* @__PURE__ */ (0,
|
|
2226
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2234
2227
|
"button",
|
|
2235
2228
|
{
|
|
2236
2229
|
className: "copilotKitMessageControlButton",
|
|
2237
2230
|
onClick: handleCopy,
|
|
2238
2231
|
"aria-label": labels.copyToClipboard,
|
|
2239
2232
|
title: labels.copyToClipboard,
|
|
2240
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
2233
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { style: { fontSize: "10px", fontWeight: "bold" }, children: "\u2713" }) : icons.copyIcon
|
|
2241
2234
|
}
|
|
2242
2235
|
),
|
|
2243
|
-
onThumbsUp && /* @__PURE__ */ (0,
|
|
2236
|
+
onThumbsUp && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2244
2237
|
"button",
|
|
2245
2238
|
{
|
|
2246
2239
|
className: "copilotKitMessageControlButton",
|
|
2247
2240
|
onClick: handleThumbsUp,
|
|
2248
2241
|
"aria-label": labels.thumbsUp,
|
|
2249
2242
|
title: labels.thumbsUp,
|
|
2250
|
-
children:
|
|
2243
|
+
children: icons.thumbsUpIcon
|
|
2251
2244
|
}
|
|
2252
2245
|
),
|
|
2253
|
-
onThumbsDown && /* @__PURE__ */ (0,
|
|
2246
|
+
onThumbsDown && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2254
2247
|
"button",
|
|
2255
2248
|
{
|
|
2256
2249
|
className: "copilotKitMessageControlButton",
|
|
2257
2250
|
onClick: handleThumbsDown,
|
|
2258
2251
|
"aria-label": labels.thumbsDown,
|
|
2259
2252
|
title: labels.thumbsDown,
|
|
2260
|
-
children:
|
|
2253
|
+
children: icons.thumbsDownIcon
|
|
2261
2254
|
}
|
|
2262
2255
|
)
|
|
2263
2256
|
]
|
|
2264
2257
|
}
|
|
2265
2258
|
)
|
|
2266
2259
|
] }),
|
|
2267
|
-
/* @__PURE__ */ (0,
|
|
2260
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { style: { marginBottom: "0.5rem" }, children: subComponent })
|
|
2268
2261
|
] });
|
|
2269
2262
|
};
|
|
2270
2263
|
|
|
2271
2264
|
// src/components/chat/messages/UserMessage.tsx
|
|
2272
|
-
var
|
|
2265
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2273
2266
|
var UserMessage = (props) => {
|
|
2274
|
-
return /* @__PURE__ */ (0,
|
|
2267
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: props.message });
|
|
2275
2268
|
};
|
|
2276
2269
|
|
|
2277
2270
|
// src/components/chat/Suggestion.tsx
|
|
2278
2271
|
var import_react_core8 = require("@copilotkit/react-core");
|
|
2279
2272
|
var import_shared2 = require("@copilotkit/shared");
|
|
2280
2273
|
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
2281
|
-
var
|
|
2274
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2282
2275
|
function Suggestion({ title, message, onClick, partial, className }) {
|
|
2283
|
-
return /* @__PURE__ */ (0,
|
|
2276
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2284
2277
|
"button",
|
|
2285
2278
|
{
|
|
2286
2279
|
disabled: partial,
|
|
@@ -2290,7 +2283,7 @@ function Suggestion({ title, message, onClick, partial, className }) {
|
|
|
2290
2283
|
},
|
|
2291
2284
|
className: className || (partial ? "suggestion loading" : "suggestion"),
|
|
2292
2285
|
"data-test-id": "suggestion",
|
|
2293
|
-
children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0,
|
|
2286
|
+
children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: title })
|
|
2294
2287
|
}
|
|
2295
2288
|
);
|
|
2296
2289
|
}
|
|
@@ -2370,12 +2363,11 @@ var import_react_core9 = require("@copilotkit/react-core");
|
|
|
2370
2363
|
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
2371
2364
|
var import_shared3 = require("@copilotkit/shared");
|
|
2372
2365
|
var import_react_core10 = require("@copilotkit/react-core");
|
|
2373
|
-
var
|
|
2366
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2374
2367
|
function CopilotChat({
|
|
2375
2368
|
instructions,
|
|
2376
2369
|
onSubmitMessage,
|
|
2377
2370
|
makeSystemMessage,
|
|
2378
|
-
showResponseButton = true,
|
|
2379
2371
|
onInProgress,
|
|
2380
2372
|
onStopGeneration,
|
|
2381
2373
|
onReloadMessages,
|
|
@@ -2389,7 +2381,6 @@ function CopilotChat({
|
|
|
2389
2381
|
RenderAgentStateMessage: RenderAgentStateMessage2 = RenderAgentStateMessage,
|
|
2390
2382
|
RenderResultMessage: RenderResultMessage2 = RenderResultMessage,
|
|
2391
2383
|
Input: Input2 = Input,
|
|
2392
|
-
ResponseButton: ResponseButton2 = ResponseButton,
|
|
2393
2384
|
className,
|
|
2394
2385
|
icons,
|
|
2395
2386
|
labels,
|
|
@@ -2437,8 +2428,8 @@ function CopilotChat({
|
|
|
2437
2428
|
onCopy(message);
|
|
2438
2429
|
}
|
|
2439
2430
|
};
|
|
2440
|
-
return /* @__PURE__ */ (0,
|
|
2441
|
-
/* @__PURE__ */ (0,
|
|
2431
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
|
|
2432
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2442
2433
|
Messages2,
|
|
2443
2434
|
{
|
|
2444
2435
|
AssistantMessage: AssistantMessage2,
|
|
@@ -2453,7 +2444,7 @@ function CopilotChat({
|
|
|
2453
2444
|
onCopy: handleCopy,
|
|
2454
2445
|
onThumbsUp,
|
|
2455
2446
|
onThumbsDown,
|
|
2456
|
-
children: currentSuggestions.length > 0 && /* @__PURE__ */ (0,
|
|
2447
|
+
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
2448
|
Suggestion,
|
|
2458
2449
|
{
|
|
2459
2450
|
title: suggestion.title,
|
|
@@ -2466,7 +2457,7 @@ function CopilotChat({
|
|
|
2466
2457
|
)) })
|
|
2467
2458
|
}
|
|
2468
2459
|
),
|
|
2469
|
-
/* @__PURE__ */ (0,
|
|
2460
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2470
2461
|
Input2,
|
|
2471
2462
|
{
|
|
2472
2463
|
inProgress: isLoading,
|
|
@@ -2485,10 +2476,10 @@ function WrappedCopilotChat({
|
|
|
2485
2476
|
}) {
|
|
2486
2477
|
const chatContext = import_react13.default.useContext(ChatContext);
|
|
2487
2478
|
if (!chatContext) {
|
|
2488
|
-
return /* @__PURE__ */ (0,
|
|
2489
|
-
}, children: /* @__PURE__ */ (0,
|
|
2479
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ChatContextProvider, { icons, labels, open: true, setOpen: () => {
|
|
2480
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: `copilotKitChat ${className}`, children }) });
|
|
2490
2481
|
}
|
|
2491
|
-
return /* @__PURE__ */ (0,
|
|
2482
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_jsx_runtime22.Fragment, { children });
|
|
2492
2483
|
}
|
|
2493
2484
|
var SUGGESTIONS_DEBOUNCE_TIMEOUT = 1e3;
|
|
2494
2485
|
var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
@@ -2649,7 +2640,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
2649
2640
|
};
|
|
2650
2641
|
|
|
2651
2642
|
// src/components/chat/Modal.tsx
|
|
2652
|
-
var
|
|
2643
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2653
2644
|
var CopilotModal = ({
|
|
2654
2645
|
instructions,
|
|
2655
2646
|
defaultOpen = false,
|
|
@@ -2663,14 +2654,12 @@ var CopilotModal = ({
|
|
|
2663
2654
|
icons,
|
|
2664
2655
|
labels,
|
|
2665
2656
|
makeSystemMessage,
|
|
2666
|
-
showResponseButton = true,
|
|
2667
2657
|
onInProgress,
|
|
2668
2658
|
Window: Window2 = Window,
|
|
2669
2659
|
Button: Button2 = Button,
|
|
2670
2660
|
Header: Header2 = Header,
|
|
2671
2661
|
Messages: Messages2 = Messages,
|
|
2672
2662
|
Input: Input2 = Input,
|
|
2673
|
-
ResponseButton: ResponseButton2 = ResponseButton,
|
|
2674
2663
|
AssistantMessage: AssistantMessage2 = AssistantMessage,
|
|
2675
2664
|
UserMessage: UserMessage2 = UserMessage,
|
|
2676
2665
|
className,
|
|
@@ -2681,19 +2670,19 @@ var CopilotModal = ({
|
|
|
2681
2670
|
onSetOpen == null ? void 0 : onSetOpen(open);
|
|
2682
2671
|
setOpenState(open);
|
|
2683
2672
|
};
|
|
2684
|
-
return /* @__PURE__ */ (0,
|
|
2673
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(ChatContextProvider, { icons, labels, open: openState, setOpen, children: [
|
|
2685
2674
|
children,
|
|
2686
|
-
/* @__PURE__ */ (0,
|
|
2687
|
-
/* @__PURE__ */ (0,
|
|
2688
|
-
/* @__PURE__ */ (0,
|
|
2675
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className, children: [
|
|
2676
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button2, {}),
|
|
2677
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2689
2678
|
Window2,
|
|
2690
2679
|
{
|
|
2691
2680
|
clickOutsideToClose,
|
|
2692
2681
|
shortcut,
|
|
2693
2682
|
hitEscapeToClose,
|
|
2694
2683
|
children: [
|
|
2695
|
-
/* @__PURE__ */ (0,
|
|
2696
|
-
/* @__PURE__ */ (0,
|
|
2684
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Header2, {}),
|
|
2685
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2697
2686
|
CopilotChat,
|
|
2698
2687
|
{
|
|
2699
2688
|
instructions,
|
|
@@ -2701,11 +2690,9 @@ var CopilotModal = ({
|
|
|
2701
2690
|
onStopGeneration,
|
|
2702
2691
|
onReloadMessages,
|
|
2703
2692
|
makeSystemMessage,
|
|
2704
|
-
showResponseButton,
|
|
2705
2693
|
onInProgress,
|
|
2706
2694
|
Messages: Messages2,
|
|
2707
2695
|
Input: Input2,
|
|
2708
|
-
ResponseButton: ResponseButton2,
|
|
2709
2696
|
AssistantMessage: AssistantMessage2,
|
|
2710
2697
|
UserMessage: UserMessage2
|
|
2711
2698
|
}
|