@copilotkit/react-ui 1.8.0-next.5 → 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.
Files changed (90) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{chunk-FBYETUFL.mjs → chunk-5M7ODWKH.mjs} +6 -12
  3. package/dist/chunk-5M7ODWKH.mjs.map +1 -0
  4. package/dist/{chunk-DFHFPZQD.mjs → chunk-EMWOZVCW.mjs} +9 -16
  5. package/dist/chunk-EMWOZVCW.mjs.map +1 -0
  6. package/dist/{chunk-Z6YOBQUJ.mjs → chunk-HGA4N4ME.mjs} +8 -13
  7. package/dist/chunk-HGA4N4ME.mjs.map +1 -0
  8. package/dist/{chunk-CGVOCLHN.mjs → chunk-P7S3E5UW.mjs} +2 -2
  9. package/dist/{chunk-6H7IQRIU.mjs → chunk-QTN7AYVL.mjs} +2 -2
  10. package/dist/{chunk-LYHZXHTJ.mjs → chunk-SNLHKLW3.mjs} +2 -2
  11. package/dist/{chunk-5JY5QJ2W.mjs → chunk-UN2E3HCK.mjs} +9 -3
  12. package/dist/chunk-UN2E3HCK.mjs.map +1 -0
  13. package/dist/{chunk-FFNESJSG.mjs → chunk-Y6OESC5U.mjs} +2 -2
  14. package/dist/{chunk-QS7UFQFD.mjs → chunk-YGD4IB27.mjs} +2 -2
  15. package/dist/{chunk-VC4NO5QZ.mjs → chunk-YOEL33HG.mjs} +2 -2
  16. package/dist/{chunk-GJME6MK4.mjs → chunk-ZY25LVYR.mjs} +2 -2
  17. package/dist/components/chat/Button.js.map +1 -1
  18. package/dist/components/chat/Button.mjs +2 -2
  19. package/dist/components/chat/Chat.d.ts +2 -11
  20. package/dist/components/chat/Chat.js +67 -76
  21. package/dist/components/chat/Chat.js.map +1 -1
  22. package/dist/components/chat/Chat.mjs +6 -7
  23. package/dist/components/chat/ChatContext.d.ts +15 -0
  24. package/dist/components/chat/ChatContext.js +67 -1
  25. package/dist/components/chat/ChatContext.js.map +1 -1
  26. package/dist/components/chat/ChatContext.mjs +1 -1
  27. package/dist/components/chat/Header.js.map +1 -1
  28. package/dist/components/chat/Header.mjs +2 -2
  29. package/dist/components/chat/Input.js.map +1 -1
  30. package/dist/components/chat/Input.mjs +2 -2
  31. package/dist/components/chat/Messages.js.map +1 -1
  32. package/dist/components/chat/Messages.mjs +2 -2
  33. package/dist/components/chat/Modal.d.ts +1 -1
  34. package/dist/components/chat/Modal.js +74 -87
  35. package/dist/components/chat/Modal.js.map +1 -1
  36. package/dist/components/chat/Modal.mjs +10 -11
  37. package/dist/components/chat/Popup.js +76 -89
  38. package/dist/components/chat/Popup.js.map +1 -1
  39. package/dist/components/chat/Popup.mjs +11 -12
  40. package/dist/components/chat/Sidebar.js +76 -89
  41. package/dist/components/chat/Sidebar.js.map +1 -1
  42. package/dist/components/chat/Sidebar.mjs +11 -12
  43. package/dist/components/chat/Window.js.map +1 -1
  44. package/dist/components/chat/Window.mjs +2 -2
  45. package/dist/components/chat/index.d.ts +1 -1
  46. package/dist/components/chat/index.js +78 -91
  47. package/dist/components/chat/index.js.map +1 -1
  48. package/dist/components/chat/index.mjs +14 -15
  49. package/dist/components/chat/messages/AssistantMessage.js +4 -67
  50. package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
  51. package/dist/components/chat/messages/AssistantMessage.mjs +2 -2
  52. package/dist/components/chat/props.d.ts +1 -5
  53. package/dist/components/chat/props.js.map +1 -1
  54. package/dist/components/index.d.ts +1 -1
  55. package/dist/components/index.js +78 -91
  56. package/dist/components/index.js.map +1 -1
  57. package/dist/components/index.mjs +14 -15
  58. package/dist/index.css +0 -26
  59. package/dist/index.css.map +1 -1
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.js +78 -91
  62. package/dist/index.js.map +1 -1
  63. package/dist/index.mjs +14 -15
  64. package/package.json +4 -4
  65. package/src/components/chat/Chat.tsx +0 -16
  66. package/src/components/chat/ChatContext.tsx +25 -0
  67. package/src/components/chat/Modal.tsx +0 -6
  68. package/src/components/chat/messages/AssistantMessage.tsx +4 -5
  69. package/src/components/chat/props.ts +0 -5
  70. package/src/styles.css +0 -1
  71. package/dist/chunk-5JY5QJ2W.mjs.map +0 -1
  72. package/dist/chunk-DFHFPZQD.mjs.map +0 -1
  73. package/dist/chunk-FBYETUFL.mjs.map +0 -1
  74. package/dist/chunk-UZTZXMYS.mjs +0 -18
  75. package/dist/chunk-UZTZXMYS.mjs.map +0 -1
  76. package/dist/chunk-Z6YOBQUJ.mjs.map +0 -1
  77. package/dist/components/chat/Response.d.ts +0 -7
  78. package/dist/components/chat/Response.js +0 -64
  79. package/dist/components/chat/Response.js.map +0 -1
  80. package/dist/components/chat/Response.mjs +0 -10
  81. package/dist/components/chat/Response.mjs.map +0 -1
  82. package/src/components/chat/Response.tsx +0 -12
  83. package/src/css/response.css +0 -26
  84. /package/dist/{chunk-CGVOCLHN.mjs.map → chunk-P7S3E5UW.mjs.map} +0 -0
  85. /package/dist/{chunk-6H7IQRIU.mjs.map → chunk-QTN7AYVL.mjs.map} +0 -0
  86. /package/dist/{chunk-LYHZXHTJ.mjs.map → chunk-SNLHKLW3.mjs.map} +0 -0
  87. /package/dist/{chunk-FFNESJSG.mjs.map → chunk-Y6OESC5U.mjs.map} +0 -0
  88. /package/dist/{chunk-QS7UFQFD.mjs.map → chunk-YGD4IB27.mjs.map} +0 -0
  89. /package/dist/{chunk-VC4NO5QZ.mjs.map → chunk-YOEL33HG.mjs.map} +0 -0
  90. /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-GJME6MK4.mjs";
5
- import "../../chunk-5JY5QJ2W.mjs";
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, showResponseButton, onInProgress, Window, Button, Header, Messages, Input, ResponseButton, AssistantMessage, UserMessage, className, children, }: CopilotModalProps) => react_jsx_runtime.JSX.Element;
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 import_jsx_runtime14 = require("react/jsx-runtime");
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(
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 import_jsx_runtime15 = require("react/jsx-runtime");
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, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
1566
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("b", { children: [
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, import_jsx_runtime15.jsx)("pre", { children: e instanceof Error ? e.message : String(e) })
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, import_jsx_runtime15.jsx)(
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 import_jsx_runtime16 = require("react/jsx-runtime");
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, import_jsx_runtime16.jsx)(
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 import_jsx_runtime17 = require("react/jsx-runtime");
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, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(
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 import_jsx_runtime18 = require("react/jsx-runtime");
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, import_jsx_runtime18.jsxs)("div", { className: "copilotKitCodeBlock", children: [
1806
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "copilotKitCodeBlockToolbar", children: [
1807
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "copilotKitCodeBlockToolbarLanguage", children: language }),
1808
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "copilotKitCodeBlockToolbarButtons", children: [
1809
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: downloadAsFile, children: DownloadIcon }),
1810
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: onCopy, children: isCopied ? CheckIcon : CopyIcon })
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, import_jsx_runtime18.jsx)(
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 import_jsx_runtime19 = require("react/jsx-runtime");
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, import_jsx_runtime19.jsx)("div", { className: "copilotKitMarkdown", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(MemoizedReactMarkdown, { components, remarkPlugins: [import_remark_gfm.default, import_remark_math.default], children: content }) });
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, import_jsx_runtime19.jsx)(
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, import_jsx_runtime19.jsx)(
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, import_jsx_runtime19.jsx)("code", __spreadProps(__spreadValues({ className }, props), { children }));
2150
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", __spreadProps(__spreadValues({ className }, props), { children }));
2158
2151
  }
2159
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
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 import_jsx_runtime20 = require("react/jsx-runtime");
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, import_jsx_runtime20.jsx)("span", { children: icons.activityIcon });
2214
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
2215
- (message || isLoading) && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
2216
- message && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Markdown, { content: message || "" }),
2217
- isLoading && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(LoadingIcon, {}),
2218
- message && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
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, import_jsx_runtime20.jsx)(
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: RegenerateIcon
2223
+ children: icons.regenerateIcon
2231
2224
  }
2232
2225
  ),
2233
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
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, import_jsx_runtime20.jsx)("span", { style: { fontSize: "10px", fontWeight: "bold" }, children: "\u2713" }) : CopyIcon
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, import_jsx_runtime20.jsx)(
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: ThumbsUpIcon
2243
+ children: icons.thumbsUpIcon
2251
2244
  }
2252
2245
  ),
2253
- onThumbsDown && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
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: ThumbsDownIcon
2253
+ children: icons.thumbsDownIcon
2261
2254
  }
2262
2255
  )
2263
2256
  ]
2264
2257
  }
2265
2258
  )
2266
2259
  ] }),
2267
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { style: { marginBottom: "0.5rem" }, children: subComponent })
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 import_jsx_runtime21 = require("react/jsx-runtime");
2265
+ var import_jsx_runtime20 = require("react/jsx-runtime");
2273
2266
  var UserMessage = (props) => {
2274
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: props.message });
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 import_jsx_runtime22 = require("react/jsx-runtime");
2274
+ var import_jsx_runtime21 = require("react/jsx-runtime");
2282
2275
  function Suggestion({ title, message, onClick, partial, className }) {
2283
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
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, import_jsx_runtime22.jsx)("span", { children: title })
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 import_jsx_runtime23 = require("react/jsx-runtime");
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, import_jsx_runtime23.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
2441
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
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, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: currentSuggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
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, import_jsx_runtime23.jsx)(
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, import_jsx_runtime23.jsx)(ChatContextProvider, { icons, labels, open: true, setOpen: () => {
2489
- }, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `copilotKitChat ${className}`, children }) });
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, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children });
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 import_jsx_runtime24 = require("react/jsx-runtime");
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, import_jsx_runtime24.jsxs)(ChatContextProvider, { icons, labels, open: openState, setOpen, children: [
2673
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(ChatContextProvider, { icons, labels, open: openState, setOpen, children: [
2685
2674
  children,
2686
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className, children: [
2687
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Button2, {}),
2688
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(Header2, {}),
2696
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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
  }